X264自带的FFMS经常出错,能不能用ffmpeg把视频喂给X264?
dwing吧
全部回复
仅看楼主
level 7
eggcalmman 楼主
用FFMS2也出错,用DSS又觉得兼容性不好,请问能不能用FFMPEG把视频用管道喂给X264?
百度了很久了,没找到答案,求大神指点
2012年10月25日 15点10分 1
level 7
eggcalmman 楼主
用X264自带的FFMS转换出来的视频老实变长,导致影音不同步
2012年10月25日 15点10分 2
level 7
eggcalmman 楼主
我用FRAPS录制的体积比较小的视频用FFMS2没问题,但是大于20G的就会出错
2012年10月25日 15点10分 3
level 7
直接用ffmpeg的libx264不就完了?干嘛还要喂?
2012年10月25日 15点10分 4
您好,我是菜鸟,嘿嘿,我的意思是用什么批处理的代码可以让FFMPEG给X264做source
2012年10月25日 15点10分
level 7
干嘛要喂给x264?官方ffmpeg本身就自带x264编码,版本都是最新的,跟独立的x264一样。
用ffmpeg直接编码视频文件就可以。
下面是我经常用的,不同源文件,可以做适当修改,其他ffmpeg的参数可以自己去查阅一下。
ffmpeg -i "INPUT" -c:v libx264 -crf 24 -level 41 -refs 8 -deblock -1:-1 -subq 8 -me_method umh -partitions all -me_range 24 -trellis 2 -b_strategy 2 -direct-pred auto -rc-lookahead 60 -an "OUTPUT.mp4"

2012年10月25日 16点10分 5
请教一下,能不能用管道 |x264.exe 做source呢? 我是菜鸟哈,我想用官方X264的preset,具体的参数我没有时间去学习了
2012年10月25日 16点10分
我用这个参数压制了一下,发现原来18秒的视频被压制成了20秒,源视频是用FRAPS录制的
2012年10月25日 16点10分
FFMPEG不要直接封装成MKV,会有些问题,封装MP4应该就不会有问题。
2012年10月25日 16点10分
回复 supperliu :如果输出.H264再用MP4BOX和音轨合并就会出刚才说的问题,但是输出.MP4文件就没事,为什么呢?还有我11楼的问题,X264自带的FFMS也是这个问题。最后,太太太太太感谢你了
2012年10月25日 16点10分
level 7
这里边可能就“
-b_strategy”不太多见,其实这个就是x264里边的“--b-adapt”,参数设置都一样。ffmpeg的命令和x264的区别,具体可以百度之。
2012年10月25日 16点10分 6
非常感谢你哈,但是我还是想知道如何用FFMPEG做X264的source
2012年10月25日 16点10分
level 7
这个还真没用过,感觉有点啰嗦。
不过你说到这个问题,我也刚百度了一下,搜到这句,刚试了一下,应该可以。你试试
ffmpeg -i "INPUT" -f yuv4mpegpipe -an -v 0 - | x264 [options] --demuxer y4m -o output.264 -
2012年10月25日 16点10分 7
这句实测有问题,在-f yuv4mpegpipe 后面还要注明格式类型,如 fmt 大概是怎么一个命令,我忘了,反正这句套用的话, 有问题。
2012年10月26日 19点10分
回复 tea1111980 :ffmpeg+自带的libx264能RESIZE吗?
2012年10月27日 02点10分
回复 eggcalmman :找到了答案啦 -s 640*360即可
2012年10月27日 02点10分
回复 eggcalmman :能。。-s 1280x720 好象是这样,你试试。
2012年10月27日 05点10分
level 13
X264自带两个解码器,FFMS和LAVF,会依序调用解码器解码。
也可以加--demuxer FF***AVF参数强制指定解码器。
一般是不需要的。
喂管道效果也不见得好。
如果想用系统解码器的话,可以考虑roo_zhou大的direct264,完全调用系统中的dshow解码器。不过很久没更新了,用的X264版本比较老旧。
2012年10月25日 16点10分 8
研究了一整天,发现问题了。如果用X264自带的FFMS压视频,输出文件的后缀名如果是.H264,那么通过MP4BOX和音频合并就会出现影音不同步,但是如果用X264输出文件后缀名为.MP4就不会出现影音不同步!好奇怪啊
2012年10月25日 16点10分
回复 eggcalmman :并不奇怪,H264是RAW流,也就是纯数据流,并不包含帧率等信息,这些信息是加载到封装中的。MP4BOX如果对RAW流不加帧率描述直接封装的话,是采用默认的25FPS进行封装的,如果原视频不是25FPS的帧率,自然会不同步。如果要封装RAW流的话,记住一定要加上帧率
2012年10月25日 16点10分
回复 abcfy2 :原来如此!算了一算,还真是这样,我真是猪脑子,早该想到的
2012年10月25日 17点10分
回复 abcfy2 :你这样说也是有漏洞的,因为我测试的这个视频用FFMS2和DDS压出来后缀名.H264用MP4BOX和音轨封装就没问题,但是用FFMS和FFMPEG压出来的.H264就会影音不同步,但是生成.MP4再和音轨用MP4BOX合并就又没问题了。
2012年10月26日 14点10分
level 13
中间居然被百度和谐了
--demuxer LAVF/FFMS
这样总不会和谐了吧,倒过来写
2012年10月25日 16点10分 9
太感谢你了,另外,X264可以用fittobox来自动适应目标窗口,如果用AVS,也可以写一个批处理达到fitotobox的效果
2012年10月25日 16点10分
回复 eggcalmman :大哥~~弱弱的问一句~什么是fittobox?~
2014年01月08日 06点01分
level 7
还有,ffmpeg也直接可以使用官方的preset
比如:
ffmpeg -i "INPUT" -an -c:v libx264 -preset slower "OUTPUT.mp4"
2012年10月25日 16点10分 10
太感谢你了,感谢的痛哭流涕!
2012年10月25日 16点10分
level 7
eggcalmman 楼主

研究了一整天,发现问题了。如果用X264自带的FFMS压视频,输出文件的后缀名如果是.H264,那么通过MP4BOX和音频合并就会出现影音不同步,但是如果用X264输出文件后缀名为.MP4就不会出现影音不同步!好奇怪啊
2012年10月25日 16点10分 11
压制vp8的视频也会出现这种情况,也可以用这种方法解决?
2012年10月26日 09点10分
.h264 不带 fps、timecode 信息,CFR 可以在 Muxer 指定 fps,VFR 必须要抽取 timecode 给 Muxer
2014年01月08日 11点01分
level 9
eggcalmman: 回覆 tea1111980 :ffmpeg+自带的libx264能RESIZE吗?
ex1. 1280xH (mod 16)
-vf "scale='w=1280:h=trunc((1280*/dar)/16+0.5)*16'"
ex2. W<=1280 & H<=720 (mod 16), PAR 1:1
-vf "scale='w=min(1280,trunc((720*dar)/16+0.5)*16):h=min(720,trunc((1280/dar)/16+0.5)*16)',setsar='sar=1/1'"
ex3. Letterbox, 720x480, PAR 40:33
-vf "scale='w=min(720,trunc((480*33/40*dar)/16+0.5)*16):h=min(480,trunc((720*40/33/dar)/16+0.5)*16)',pad='w=720:h=480:x=(ow-iw)/2:y=(oh-ih)/2',setsar='sar=40/33'"
2014年01月08日 11点01分 16
1