因为我的itouch4不支持rmvb,想要在上网看动画片就必需要转成mp4。原本我用mediacoder来转,但最近的几个版本经常出错。前段时间写了一个用avs+x264来转换的,现在又想把avs也给去掉,准备用上ffmpeg。
使用
1、查看rmvb属性
转换之前先查看一下文件属性,将分辨率等信息看一下,如果分辨率超过960*640就需要调整。顺便看一下码率,压制成x264的时候参考一下。
ffmpeg -i 文件名
2、压制成mp4
1.pass1编码
ffmpeg -i 01.rmvb -an -vcodec libx264 -b 560k -pass 1 -f mp4 -y NUL
-an : 不编码音频 -vcodec : 设置视频的编码,我这里使用的是x264 -b : 这个是码率 -f : 强制使用格式 -y : 自动输y确认 NUL : 因为是pass1 所以不需要输出文件,直接用NUL
2.pass2编码
ffmpeg -i 01.rmvb -acodec copy -vcodec libx264 -b 560k -pass 2 -f mp4 01.mp4
因为现在很多rmvb的音频部分都是aac编码的,所以可以直接用-acodec copy复制音频部份
3、针对某些文件的参数调整
有些rmvb或着mkv之类的分辨率比较高,所以传到itouch需要调整一下。在ffmpeg里面可以用-s参数:
ffmpeg -i 01.rmvb -acodec copy -vcodec libx264 -b 560k -s 960x640 -f mp4 01.mp4
960x640需要自己计算一下,按比例进行调整
按时间截取:
ffmpeg -i 01.rmvb -acodec copy -vcodec libx264 -b 560k -ss 00:00:00 -t 00:01:00 -f mp4 01.mp4
设置B-frame对动画片有些好处,2pass的时候不是很明显,1pass的比较明显:
ffmpeg -i 01.rmvb -acodec copy -vcodec libx264 -b 560k -bf 6 -f mp4 01.mp4