加载中…
正文 字体大小:

linux下快速旋转视频文件。

(2011-04-22 09:37:37)
标签:

mencoder

旋转

mencoder旋转

分类: 计算机与 Internet
朋友发来的一段视频中,是用iPhone拍的,结果呢。。视频看上去是躺着的。。。于是呢。。。需要把脖子正向旋转90度看,或者旋转文件。
于是呢,用Promire这样的软件貌似太麻烦了。。。
于是呢,我就想到强大的全世界视频网站的奠基人——Mencoder,果然可以。
最终的格式以及参数是:
mencoder -oac mp3lame -lameopts vol=10 -ovc lavc -vf rotate=1 IMG_1357.MOV -o 90_CW_IMG_1357.mpg4

就是说,音频格式为mp3lame,音量增益到10,顺时针旋转90度。

mencoder -oac copy -ovc lavc -vf rotate=1 original.mp4 -o 90_CW_rotated.mp4

mencoder -oac copy -ovc lavc -vf rotate=2 original.mp4 -o 90_CCW_rotated.mp4

man mplayer
/rotate

rotate[=<0-7>]
              
Rotates the image by 90 degrees and optionally flips it. For values between 4-7 rotation is only done if the movie geometry is portrait and not landscape.
0 Rotate by 90 degrees clockwise and flip (default).
1 Rotate by 90 degrees clockwise.
2 Rotate by 90 degrees counterclockwise.
3 Rotate by 90 degrees counterclockwise and flip.
还有,ffpmeg也有类似功能:
ffmpeg -vf "transpose=1" -i input.mp4 output.mp4

推荐大家看看这位仁兄的日志:
http://www.hanselman.com/blog/HowToRotateAnAVIOrMPEGFileTakenInPortrait.aspx

对了采用-oac copy的方式,也就是完全从原始格式里复制音频编码方式可能会没声音,至少我对mov文件转换的时候是这样的。
所以就用了 -oac mp3lame,这样就好了。

---对于dvd光盘的转换,源文件的格式为 dvd://1 -dvd-device z:/
其中z是dvd光驱号.
---对于源是ac3的音频,往往比较轻,可以在lameopts中指定vol=n(取值0-10)来提高增益(音量)
--使用-vf scale -zoom -xy 320 可以指定输出视频的宽度为320,由mencoder自行计算合适的高度
--使用-noskip 禁止编码中跳帧
--使用-ss 00:30 -endpos 60编码电影中30分钟开始的60秒内容,在编码整部电影之前,可以尝试编码片断以看看效果,并且根据结果调整参数
--对于采样率为22KHZ的音频,如果转换后的音频存在问题,可以在mencoder参数的第3部分指定-ssrate 44100进行重采样
--质量优先的情况下,对于源音频不大于128kbps的,建议保留,大于这个值的,重新编码为128kbps
--质量优先的情况下,建议视频编码不低于250kbps,300kbps可以得到相当满意的结果
--质量优先的情况下,建议保留原始的fps

更多的参数:
-------------------------------------------------------------------------------------------------------------------

mencoder.exe -srate 22050 -vf scale=208:-3 -ofps 12 -oac mp3lame -lameopts mode=3:cbr:br=24 -ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vhq:vbitrate=112 "需要转换的视频文件" -o "输出的.avi" 2> 2.txt

1、-srate 22050 声音采样频率设置,现为22K
2、-vf scale=208:-3 宽度为208,高度自动调整保持比例;-vf scale=-3:176宽度自动调整保持比例,高度为176;如果想保持原来的大小可以不要这个参数
3、-ofps 12 帧速率设置,现为12fps
4、-oac mp3lame 音频采用mp3编码
5、-lameopts mode=3:cbr:br=24单声道,音频码率为24kbps;-lameopts mode=0:cbr:br=24立体声,音频码率为24kbps;
还可设置音量,-lameopts mode=3:cbr:br=32:vol=1,设置范置为1~10,但不宜设得太高
6、-ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vhq:vbitrate=112采用高质DivX视频编码,视频码率为112kbps;
-ovc xvid -xvidencopts bitrate=112采用XviD视频编码

附文:
使用mencoder制作pda使用的电影

1 mplayer和mencoder
mplayer 是最为强大和灵活的多媒体播放器软件之一,在windows平台能够和他相提并论的只有media player classic而已。mencoder是和mplayer共享同样架构和底层库的多媒体编码软件。这使得mencder有很好的兼容性,和很快的速度。大 家只要记住一点:
MPLAYER能够播放的电影,就能够通过mencoder编码。
但反过来,MPLAYER播放有问题的电影,MENCODER也无能为力。这是mencoder最强的,也是最弱的一点。
注意:在此首先提醒,mplayer和mencoder是基于命令行的软件,不过对于mencoder来说,常用的参数就那么几个,可以用简单的脚本来驱动。

2 准备工作
作为典型的unix风格的软件(也包括他的开放源代码性质),mplayer不需要运行什么安装程序,也不需要系统提供的codec,他的安装过程可以参考:
http://www5.eastgame.net/index.p ... flat&tid=483408
(不能够访问连接的,可以通过访问TLF论坛--软件讨论版--神乎奇迹的播放软体mplayer 找到,这个帖子的名字和点击量还是相当匹配的)
当按照这篇文章按照以后,能够正常的使用mplayer播放wmv9,quicktime,和大部分的rm/rmvb时候,代表mplayer和mencoder的配置完成。

3 使用mencoder进行编码
首先选择一部avi文件,假设文件名为src.avi,启动命令行,运行
mencoder.exe src.avi -o dst.avi -endpos 60 -oac copy -ovc copy
他的含义是截取src.avi的前60秒,并且不通过再编码,直接输出为dst.avi。这时候dst.avi应该是src.avi的前60秒的内容。
这个命令行参数中,有一些需要注意的地方:
1 src.avi 源文件名是src.avi
2 -o dst.avi 编码输出的文件名是dst.avi
3 -endpos 60 在第60秒的地方结束编码,这个位置也可以跟其它的全局参数(任何在mplayer播放时指定的参数,都可以在这个位置给出)
4 -oac 指定音频编码方式
5 -ovc 指定视频编码格式
无论后面的mencoder参数多么复杂,都是由这5个部分组成,这点需要牢记。而通过第3点,可以在编码中延伸出非常多的技巧。

接着,使用更加复杂一些的参数:
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 : 各个编码参数使用":"隔开,并列列出
这一步成功以后,试着对音频不重新编码,对视频重新编码:
mencoder.exe src.avi -o dst.avi -endpos 60 -vf scale=320:240 -oac copy -ovc xvid -xvidencopts pass=1:bitrate=300
mencoder.exe src.avi -o dst.avi -endpos 60 -vf scale=320:240 -oac copy -ovc xvid -xvidencopts pass=2:bitrate=300
和上一个不同的是,在编码前视频被scale成320*240格式,接着使用xvid进行编码,1pass,bitrate为300(1 pass的bitrate选项好像无效?),接着使用2pass编码一遍
如果mencoder报错误,首先检查以上的命令行参数是否正确,特别是空格。

通过以上3步,而且都成功的话,那么可以实际试验真正的编码格式了,我目前使用的参数为:
mencoder.exe src.avi -o dst.avi -noskip -vf scale=320:240 -oac mp3lame -lameopts vbr=3:br=128 -ovc xvid -xvidencopts pass=1:bitrate=300:keyframe_boost=20:trellis:quant_type=h263
mencoder.exe src.avi -o dst.avi -noskip -vf scale=320:240 -oac mp3lame -lameopts vbr=3:br=128 -ovc xvid -xvidencopts pass=2:bitrate=300:keyframe_boost=20:trellis:quant_type=h263
无论是电影还是动画,这个参数设置都可以得到非常理想的效果。速度方面,在音频视频都重新编码的情况下,2pass的情况下,在我的C4 2G的机器上,略小于播放时间。我的经验不足,不然2pass中第一遍pass的速度还可以提高。体积方面,一部127分钟的dvd光盘编码后大小为 340M,一部25分钟的动画,编码后结果在76M左右。
在dell x5(pxa255 300MHZ),使用betaplayer播放,除了偶尔停顿以外,整体相当流畅。

4 一些编码提示
---对于dvd光盘的转换,源文件的格式为 dvd://1 -dvd-device z:/
其中z是dvd光驱号.
---对于源是ac3的音频,往往比较轻,可以在lameopts中指定vol=n(取值0-10)来提高增益(音量)
--使用-vf scale -zoom -xy 320 可以指定输出视频的宽度为320,由mencoder自行计算合适的高度
--使用-noskip 禁止编码中跳帧
--使用-ss 00:30 -endpos 60编码电影中30分钟开始的60秒内容,在编码整部电影之前,可以尝试编码片断以看看效果,并且根据结果调整参数
--对于采样率为22KHZ的音频,如果转换后的音频存在问题,可以在mencoder参数的第3部分指定-ssrate 44100进行重采样
--质量优先的情况下,对于源音频不大于128kbps的,建议保留,大于这个值的,重新编码为128kbps
--质量优先的情况下,建议视频编码不低于250kbps,300kbps可以得到相当满意的结果
--质量优先的情况下,建议保留原始的fps

5 存在问题
希望高手多来指点迷津
--外挂字幕问题待研究
--mplayer播放一部分特定特征的rm文件会崩溃,这些文件没有办法通过mencoder编码
--mplayer播放一部分wmv8电影会出问题,mencoder对这些文件也没有办法
--源音频采样率22KHZ情况下,mencoder通过lame转换的音频会有问题,通过-ssrate可绕开这个问题
--xvid编码参数的选择,betaplayer不支持qpel和gmc,其他一些编码的参数,自己用着合适,没有更深入的研究


0

阅读 评论 收藏 转载 喜欢 打印举报
已投稿到:
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有