x264命令输出文件名后缀的多种尝试

 

亲自体验:

 测试命令:x264 --crf 22 -o test.mp4 hall_cif.yuv 352x288

 操作系统:xp

版本:

x264.exe:$Id: x264.c,v 1.1 2004/06/03 19:24:12 fenrir Exp $

libx264.lib:不会看,是x264-060805-vc6工程里的

 

 后缀 是否支持 备注
 .mp3 支持,用ffplay播放正常 
 .mp4 不支持,x264 [error]: not compiled with MP4 output support 
 .mp5  open_file_bsf(...)被调用
 .mp6 支持,用ffplay播放正常 open_file_bsf(...)被调用
 .mkv 支持,用ffplay播放正常,用暴风影音播放正常 open_file_mkv(...)被调用
 .avi 支持,用ffplay播放正常 open_file_bsf(...)被调用
 .txt 支持,用ffplay播放正常 open_file_bsf(...)被调用
 .doc 支持,用ffplay播放正常 open_file_bsf(...)被调用
 .rmv 支持,用ffplay播放正常 open_file_bsf(...)被调用
 .rmvb 支持,用ffplay播放正常 open_file_bsf(...)被调用
 .rar  
 .china  
 .cn  
 .中国 支持,用ffplay播放正常 open_file_bsf(...)被调用
 .com 支持,用ffplay播放正常 open_file_bsf(...)被调用
 .1 支持,用ffplay播放正常 open_file_bsf(...)被调用
 .exe 支持,用ffplay播放正常 open_file_bsf(...)被调用
 .264 支持,用ffplay播放正常 open_file_bsf(...)被调用
 .avc 支持,用ffplay播放正常 open_file_bsf(...)被调用
      

可以看出,除了特殊的mp4外,其它已知的后缀和未知的后缀,编码都被作为一种来处理了。两种处理生成的文件是不一样的。如下:

test.mkv 683 KB (699,747 字节)

test.1、test.txt等,679 KB (695,328 字节)

 

生成的不同后缀的名字,图标受操作系统的规则显示,但是都可以用ffplay播放,包括中文的后缀名。

x264命令输出文件名后缀的多种尝试 - 加菲 -  .

实际播放截图
 

x264命令输出文件名后缀的多种尝试 - 加菲 -  .

 

 

这些后缀是旧瓶装新酒,如果直接双击按默认打开是不正确的
 
 
x264命令输出文件名后缀的多种尝试 - 加菲 -  .
 
直接打开test.txt就是错的,要用ffplay test.txt才行
 
 
以上是用最笨的办法来测试的,实际本质上,当然是源程序里的区别对待,下面尝试在源码中找到答案:
 
 ->main(...)
->Parse(...)
            {
               //这儿提前赋值了,不另外单独识别的,都用此处理
                p_open_outfile = open_file_bsf;    /*函数指针赋值*/
                p_set_outfile_param = set_param_bsf;  /*函数指针赋值*/
                p_write_nalu = write_nalu_bsf;    /*函数指针赋值*/
                p_set_eop = set_eop_bsf;     /*函数指针赋值*/
                p_close_outfile = close_file_bsf;   /*函数指针赋值*/
 
               //mp4和mkv两种输出格式,单独进行了处理
                //mp4文件
                if( !strncasecmp(optarg + strlen(optarg) - 4, ".mp4", 4) ) /* strncasecmp:比较字符串s1和s2的前n个字符但不区分大小写 */
                {
                 #ifdef MP4_OUTPUT
                  p_open_outfile = open_file_mp4;//muxers.c
                  p_write_nalu = write_nalu_mp4;
                  p_set_outfile_param = set_param_mp4;
                  p_set_eop = set_eop_mp4;
                  p_close_outfile = close_file_mp4;
                  printf("\n (x264.c\case 'o')");//zjh
                 #else
                  fprintf( stderr, "x264 [error]: not compiled with MP4 output support\n" );
                  return -1;
                 #endif
                            }
                        }
                //MKV文件
                else if( !strncasecmp(optarg + strlen(optarg) - 4, ".mkv", 4) 
               { 
                    p_open_outfile = open_file_mkv;//muxers.c
                    p_write_nalu = write_nalu_mkv;
                    p_set_outfile_param = set_param_mkv;
                    p_set_eop = set_eop_mkv;
                    p_close_outfile = close_file_mkv;
                }
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值