截个图,详细代码附后:

/****************************************************************************
* main: 程序入口点
* 参数:
* http://wmnmtm.blog.163.com
*
****************************************************************************/
int main( int argc, char **argv )
{
//定义两个结构体
x264_param_t param;
cli_opt_t opt; /*一点设置*/
#ifdef _MSC_VER //stdin在STDIO.H,是系统定义的
_setmode(_fileno(stdin), _O_BINARY); //_setmode(_fileno(stdin), _O_BINARY)功能是将stdin流(或其他文件流)从文本模式 <--切换--> 二进制模式 就是stdin流(或其他文件流)从文本模式 <--切换--> 二进制模式
_setmode(_fileno(stdout), _O_BINARY);
#endif
//对编码器参数进行设定,初始化结构体对象
x264_param_default( ¶m ); //(common/common.c中定义)
/* 解析命令行,完成文件打开 */
if( Parse( argc, argv, ¶m, &opt ) < 0 ) /* 就是把用户通过命令行提供的参数保存到两个结构体中,未提供的参数还以x264_param_default函数设置的值为准 */
return -1;
/* 用函数signal注册一个信号捕捉函数 实现“Ctrl+C”退出程序之功能 */
signal( SIGINT/*要捕捉的信号*/, SigIntHandler/*信号捕捉函数*/ );//用函数signal注册一个信号捕捉函数,第1个参数signum表示要捕捉的信号,第2个参数是个函数指针,表示要对该信号进行捕捉的函数,该参数也可以是SIG_DEF(表示交由系统缺省处理,相当于白注册了)或SIG_IGN(表示忽略掉该信号而不做任何处理)。signal如果调用成功,返回以前该信号的处理函数的地址,否则返回 SIG_ERR。
//sighandler_t是信号捕捉函数,由signal函数注册,注册以后,在整个进程运行过程中均有效,并且对不同的信号可以注册同一个信号捕捉函数。该函数只有一个参数,表示信号值。
printf("\n");
printf("************************************"); printf("\n");
printf("** http://wmnmtm.blog.163.com **"); printf("\n");
printf("************************************"); printf("\n");
/* 开始编码*/
return Encode( ¶m, &opt ); //把两个参数提供给Encode,而它们已经保存上了命令行的参数,此函数在 x264.c 中定义
//Encode内部循环调用Encode_frame对帧编码
}