[Linux 音视频技术] mencoder不能转换rmvb的解决方法
转载本站文章请注明,转载自:扶凯[http://www.php-oa.com]
本文链接: http://www.php-oa.com/2009/01/04/mencoder_mp4.html
打算用mencoder来转点视频成mp4.加了些参数,但失败了.提示如下的错误.
Error: /usr/lib64/codecs/drv4.so.6.0: cannot open shared object file: No such file or directory
根据上面的提示,出错原因是少了解码器.到mplayer的网站上面.
http://www.mplayerhq.hu/MPlayer/releases/codecs/
这个下载最新的解码器
因为我的64位的机器,所以需要下载
all-20061022.tar.bz2
essential-amd64-20071007.tar.bz2
这二个,然后先解压all,指定到/usr/lib64/codecs,在解压essential-amd64.到相同的位置就能搞定了.
另外,如果提示如下
Win32 LoadLibrary failed to load: drvc.so, /usr/lib/win32/drvc.so, /usr/local/lib/win32/drvc.so
Win32 LoadLibrary failed to load: drvc.dll, /usr/lib/win32/drvc.dll, /usr/local/lib/win32/drvc.dll
Win32 LoadLibrary failed to load: drv4.so.6.0, /usr/lib/win32/drv4.so.6.0, /usr/local/lib/win32/drv4.so.6.0
Win32 LoadLibrary failed to load: drv43260.dll, /usr/lib/win32/drv43260.dll, /usr/local/lib/win32/drv43260.dll
Win32 LoadLibrary failed to load: drvc.bundle/Contents/MacOS/drvc, /usr/lib/win32/drvc.bundle/Contents/MacOS/drvc, /usr/local/lib/win32/drvc.bundle/Contents/MacOS/drvc
测试发现,就算放了文件到上面的文件夹也没用,一定要建一个新的文件夹
#mkdir /usr/lib/codecs/
然后给drvc.so这个文件放到这个文件夹才行.
要查看你的ffmpeg和mencoder支持哪些格式,可以用如下命令:
$ ffmpeg -formats
$mplayer -vc help |grep wmv
ffmpeg -i abc.ts
ffmpeg -h 查看可以加什么参数
分割:
1.mencoder -ss 开始时间 -oac copy -ovc copy -endpos 终止时间 文件名 -o 目标文件名
用 -ss 10 -endpos 90 -ss 指定视频开始位置,可以是秒,也可以是 hh:mm:ss 这样的格式 -endpos 指定结束时的时间,格式同-ss
2.mencoder basket.rm -ovc lavc -oac mp3lame -o basket.avi
"oac mp3lame"表示用mp3格式编码声音.
3.mencoder basket.avi -ovc copy -oac copy -o newbasket.avi -ss 5:00 -endpos 8:00
"-ovc copy"表示不作视频转换,"-oac copy"表示不作音频转换.这个命令把basket.avi文件中的5分0秒到13分0秒的部分拷贝到newbasket.avi文件中.
取音频
mencoder.exe src.avi -o dst.avi -endpos 60 -oac mp3lame -lameopts vbr=3:br=128 -ovc copy
他的含义是截取src.avi的前60秒,视频不重新编码,音频使用lame进行重新编码,指定vbr编码方式为abr,比特率为128kbps.
命令行的参数:
1 -lameopts 编码的参数
2 : 各个编码参数使用":"隔开,并列列出
- -ss 10 从10秒开始
- -ss 10:10 从10分10秒开始
- -ss 1:10:10 从1小时10分10秒开始
-endpos参数使用参考示例:
- -endpos 10 编码的时间为10秒
- -endpos 10:10 编码的时间为10分10秒
- -endpos 1:10:10 编码的时间为1小时10分10秒
- -endpos 10mb 编码数据量为10M
注:
—对于dvd光盘的转换,源文件的格式为 dvd://1 -dvd-device z:/
—对于源是ac3的音频,往往比较轻,可以在lameopts中指定vol=n(取值0-10)来提高增益(音量)
–使用-vf scale -zoom -xy 320 可以指定输出视频的宽度为320,由mencoder自行计算合适的高度
–使用-ss 00:30 -endpos 60编码电影中30分钟开始的60秒内容,在编码整部电影之前,可以尝试编码片断以看看效果,并且根据结果调整参数
–如果想改变输出文件的分辨率可以使用 -vf scale 参数.如果要保持宽高比,并且输出的文件的宽度为600,则这么写-vf scale=600:-3
–直接-o xxx.mp4/xxx.mkv出来的封装还是avi,要加-of lavf才可以.
–noskip并不复制帧,而是去掉空帧,这样会造成影音不同步,harddup就是强制复制帧


















