热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux下转换工具mencoder应用

Linux下转换工具mencoder应用--Linux通用技术-Linux技术与应用信息,下面是详情阅读。
办公室有台Linux机器,24小时开机,而且配置不低(P4-3.0E),比我现在用的CY4-2.4GHZ强多了,闲着也是闲着,早想利用起来,听说过Linux下的mencoder, 一直想试试.最近试了一下将rmvb的电视剧转为mpeg2和xvid,这样转的目的是想刻成盘在我的BBK影碟机上放,效果还不错,速度也很快.转之前在网上搜了一下,有关Linux下用mencoder的文章很少.所以把我做的过程写出来,与同好交流.

安装mencoder
mencoder是和mplayer一起的,安装起来比较麻烦,可以到下面的网站下载编译好的rpm包:
http://www.mplayerhq.hu/homepage/design7/news.html
但如果想要能输出mp3音频和xvid视频,还是要下源码包自己编译,事先还要下载lame mp3的库和xvid库,需要的库有:
lame-libs-devel-3.96.1-2
lame-libs-3.96.1-2
xvidcore-devel-1.0.2-1
xvidcore-static-1.0.2-1
xvidcore-1.0.2-1
到网上找到相应的rpm包,然后用rpm -i 安装就行了.

安装好这些库之后,把mplayer的源码包解压,然后运行./configure,会自动根据你的系统情况进行配置,加上mp3和xvid支持.然后执行make进行编译.我编译时很顺利.

另外还要下载mplayer的解码codecs, 也是在上面那个网站下载,我下的是那个2005.4.12更新的all,10多兆字节,下载后解压到 /usr/lib/codecs目录下.这个包里是些.dll文件.acm文件还有.so文件,有了这些codecs,目前流行的影音格式基本上都能读了.

用mencoder将rmvb转为mpeg2和xvid
我目前只用mencoder做了rmvb到mpg和avi的转换,它还能做很多事.
我转的电视剧rmvb的影音编码是:
视频 : 139 Mb, 453 Kbps, 23.0 fps, 清晰度: 512*412 (4:3), RV40 = RealVideo 9
音频 : 13.55 Mb, 44 Kbps, 22050 Hz, 2 声道, 0x0 = RealAudio 8,cook-29

将rmvb转为mp2音频mpeg2video视频的mpg文件:

mencoder 01.rmvb -oac lavc -lavcopts acodec=mp2:abitrate=64 -ovc lavc -lavcopts vcodec=mpeg2video:vbitrate=600:vpass=1 -ofps 24000/1001 -of mpeg -o 01.mpg

将rmvb转为mp3音频xvid视频的avi文件:
mencoder 01.rmvb -oac mp3lame -lameopts preset=64 -ovc xvid -xvidencopts bitrate=600 -of avi -o 01.avi

-oac 指定用哪个音频编码库
-ovc 指定用哪个视频编码库
-xxxopts 指定相应的选项参数

由于rmvb文件有个压片组的头,转之前用ER编辑器切掉了前20秒,可能是这个原因,凡是转成mp3音频的文件,开始时的几分钟声音与画面有些不同步;用mp2音频则无问题.
转出的mpg2文件与小日本转的效果差不多,我看不出区别;40多分钟的一集转完约11分钟,用小日本转大约1小时(跑mencoder的机器是P4E-3.0GHZ, 跑小日本的机器是CY4-2.4GHZ); 转成xvid编码的速度稍微慢些,约13分钟.

我用mencoder的目的是把rm, rmvb (real) 转成 mpeg, 用的是 libavcodec , 只要mplayer能读的文件通常都能转。通常的参数是这样的:
mencoder 输入文件.rmvb -o 输出文件.mpg -oac lavc -ovc lavc {详细参数}

上面的lavc就是制定压制声音和影像的codec是使用libavcodec,至于{详细参数}就要根据要压的是dvd, vcd或者svcd而选。

我把里面的那个表格的内容换了一下位置,然后把相应的参数加到了表格里面,这样要压mpg的时候,只要根据需要的格式查这个表,然后从左到右的添加参速,然后在加上底下extra的部分就可以了。mencoder的手册还提供了几个高级的选项,但这些高级选项只在转dvd的时候才有用。

压mpg的时候,需要注意的参数是:
Format, Resolution, FPS, Sample Rate, Aspect, V. Codec, V. Bitrate, A. Codec, A. Bitrate,
例如 pal 的 svcd:
Format Resolution FPS Sample Rate, Aspect V. Codec V. Bitrate A. Codec A. Bitrate,
PAL SVCD 576x576 25 44100 Hz 4:3 MPEG-2 2600 kbps MP2 384 kbps

而meoncder控制这些参数的选项分别是
Format Resolution FPS Sample Rate Aspect V. Codec V. Bitrate A. Codec A. Bitrate
-of -mpegopts -vf scale -ofps -srate -af {-lavcopts aspect:vcodec:vbitrate:acodec:abitrate}

因为这几个参数Aspect V. Codec V. Bitrate A. Codec A. Bitrate,都是一个选项-lavcopts控制的,所以我把mencoder手册里面提供的表格换了一下位置,让他们能组在一起,查找方便。

这里是个做pal svcd的例子,根据表格从左到右的添加参数,最后在加上extra的buffer控制参数就可以了
mencoder 01.rmvb -o 01.mpg -oac lavc -ovc lavc -of mpeg -mpegotps format=xvcd -vf scale=576:576,harddup -ofps 25 -srate 44100 -af lavcresample=44100 -lavcopts aspect=4/3:vcodec=mpeg2video:vbitrate=980:acdec=mp2:abitrate=192:keyint=15:vrc_buf_size=917:vrc_maxrate=2500

里面要注意的是scale=576:576用:和aspect=4/3用的是/.

看起来复杂,其实这些参数只在试验的时候要调整,当你找到适合参数的时候,alias 一下就可以了。

我的mencder参数表:
http://rendercow.com/mencoder.xls

现在的问题是怎么读取rm头文件,确定rm的码率等信息,转换的时候选低码率(vcd标准1150 video和audio224好象有点大)降低转换后文件的大小。

增加x264编码支持
增加x264编码支持费了些周折,因为mplayer1.0pre7有bug,编译到一个ve_x264.c的文件时出错,
要下最新的源码编译,我下的是2005-07-28版. 还要下x264的源码生成libx264.a,
我从doom9网站下的最新的r281版:X264_rev281_src.7z
编译x264时需要nasm汇编编译器,如果系统没装,下个rpm包安装即可。

首先安装编译x264, 解压后运行sh ./configure, 然后make, 编译完成后执行:
make install
x264的安装就完成了!

然后编译安装mplayer,步骤跟以前一样,执行configure会自动判断加上x264支持,再执行make编译就成了.

试了将一个rmvb转成x264视频mp2音频,耗时40分钟完成了转换,时间比其它编码长的多.

测试脚本:
#!/bin/sh

MP2_64="-oac lavc -lavcopts acodec=mp2:abitrate=64"
MPG2="-ovc lavc -lavcopts vcodec=mpeg2video:vbitrate=500 -of avi"
XVID="-ovc xvid -xvidencopts bitrate=500 -of avi"
MPG4="-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=500 -of avi"
X264="-ovc x264 -x264encopts bitrate=500 -of avi"

time mencoder 01.rmvb ${MP2_64} ${MPG2} -o mpg2.avi
time mencoder 01.rmvb ${MP2_64} ${MPG4} -o mpg4.avi
time mencoder 01.rmvb ${MP2_64} ${XVID} -o xvid.avi
time mencoder 01.rmvb ${MP2_64} ${X264} -o x264.avi

运行时间(user时间):
mpg2 8m13.586s
mpg4 8m23.287s
xvid 16m41.351s
x264 40m37.554s

到现在已经转了不少rmvb, 下面谈一些问题.
1.有些rmvb解码有问题.例如我转<好想好想谈恋爱>,有好几集转出来图像是一条条的绿色线条,用mplayer放有同样问题.在windows下则一切正常.

2. 有些rmvb不能按原有的分辨率转. 例如<逆水寒>,原来的分辨率是512x384, 但执行mencoder后,显示:

VDec: vo config request - 352 x 288 (preferred csp: Planar I420)

然后就按352x288的分辨率转了.用mplayer放有同样的提示信息,也是只能用352x288的分辨率.感觉在linux下的real解码器还是有bug

3.音频用mp3的话,转出来的文件在我的BBK993影碟机上放会有很多问题,例如没有声音,声话不同步等等. 视频用xvid解码的话,在影碟机上放大多数情况下是好的,但偶尔会出现画面瞬时剧烈抖动的现象;在计算机上放则正常.到目前为止,音频用mp2视频用mpeg2video的组合还没出现过问题,美中不足的是在相同码率下总感觉mpeg2的画质比xvid的差点.

修改mencoder使输出的mpeg4影片能在BBK影碟机上播放。

用mencoder的lavc解码器可以压mpeg4的视频,但刻盘后却无法在我的BBK影碟机上播放,经分析发现mencoder压出的mpeg4视频,其表示视频流的字串为FMP4, 而影碟机只认xvid和divx的,经试验如果将文件头中的FMP4改为DIVX,DX50或XVID,则在影碟机上播放正常。

修改源码:
在libmpcodecs/ve_lavc.c文件中找到下面两行:
else if (!strcasecmp(lavc_param_vcodec, "mpeg4"))
mux_v->bih->biCompression = mmioFOURCC('F', 'M', 'P', '4');

将FMP4改为DIVX,重新编译即可。

今天从微软的网站下了个高清wm9短片:The_Magic_of_Flight_720.wmv
分别压缩成rmvb,xvid,mpeg4,x264, mpeg2, 重采样成640x352, 试了300-500kbs的低码率,
大至比较了一下,主要是影片开始的一段,主要结论:

1. x264的画质不如xvid和mpeg4.
2. xvid和mpeg4画质差不多,我看不出区别
3. rmvb比xvid和mpeg4强一点.
4. mpeg2的最差.

结论1出乎意料,也有可能是我参数选的不合适,都用的是缺省参数.

测试脚本:
#!/bin/sh
MP2_64="-oac lavc -lavcopts acodec=mp2:abitrate=64"
MPG2="-ovc lavc -lavcopts vcodec=mpeg2video:vbitrate=300 -of mpeg"
XVID="-ovc xvid -xvidencopts bitrate=300 -of avi"
MPG4="-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=300 -of avi"
X264="-ovc x264 -x264encopts bitrate=300 -of avi"

time menc The_Magic_of_Flight_720.wmv ${MP2_64} ${XVID} -vf scale=640:352 -ofps 30 -o xvid.avi
time menc The_Magic_of_Flight_720.wmv ${MP2_64} ${X264} -vf scale=640:352 -ofps 30 -o x264t.avi
time menc The_Magic_of_Flight_720.wmv ${MP2_64} ${MPG4} -vf scale=640:352 -ofps 30 -o mpg4.avi
time menc The_Magic_of_Flight_720.wmv ${MP2_64} ${MPG2} -vf scale=640:352 -ofps 30 -o mpg2.avi

运行时间:
xvid 1m56.731s
x264 3m15.652s
mpg4 1m6.293s
mpg2 1m5.601s
推荐阅读
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • Linux环境变量$PATH的作用及使用方法
    本文介绍了Linux环境变量$PATH的作用及使用方法。$PATH是一个由多个目录组成的变量,用冒号分隔。当执行一个指令时,系统会按照$PATH定义的目录顺序搜索同名的可执行文件,如果有多个同名指令,则先找到的会被执行。通过设置$PATH变量,可以在任何地方执行指令,无需输入绝对路径。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • PDF内容编辑的两种小方法,你知道怎么操作吗?
    本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
  • 服务器上的操作系统有哪些,如何选择适合的操作系统?
    本文介绍了服务器上常见的操作系统,包括系统盘镜像、数据盘镜像和整机镜像的数量。同时,还介绍了共享镜像的限制和使用方法。此外,还提供了关于华为云服务的帮助中心,其中包括产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题和视频帮助等技术文档。对于裸金属服务器的远程登录,本文介绍了使用密钥对登录的方法,并提供了部分操作系统配置示例。最后,还提到了SUSE云耀云服务器的特点和快速搭建方法。 ... [详细]
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • 如何更改电脑系统的自动校时服务器地址?
    本文介绍了如何通过注册表编辑器更改电脑系统的自动校时服务器地址。通过修改注册表中的数值数据或新建字符串数值的方式,可以将默认的时钟同步服务器地址更改为自己所需要的域名或IP地址。详细步骤包括双击时间区域,点击internet时间,勾选自动校正域名设置定时等操作。 ... [详细]
  • 使用chrome编辑器实现网页截图功能的方法
    本文介绍了在chrome浏览器中使用编辑器实现网页截图功能的方法。通过在地址栏中输入特定命令,打开控制台并调用命令面板,用户可以方便地进行网页截图操作。 ... [详细]
  • Windows7企业版怎样存储安全新功能详解
    本文介绍了电脑公司发布的GHOST WIN7 SP1 X64 通用特别版 V2019.12,软件大小为5.71 GB,支持简体中文,属于国产软件,免费使用。文章还提到了用户评分和软件分类为Win7系统,运行环境为Windows。同时,文章还介绍了平台检测结果,无插件,通过了360、腾讯、金山和瑞星的检测。此外,文章还提到了本地下载文件大小为5.71 GB,需要先下载高速下载器才能进行高速下载。最后,文章详细解释了Windows7企业版的存储安全新功能。 ... [详细]
  • 本文介绍了使用CentOS7.0 U盘刻录工具进行安装的详细步骤,包括使用USBWriter工具刻录ISO文件到USB驱动器、格式化USB磁盘、设置启动顺序等。通过本文的指导,用户可以轻松地使用U盘安装CentOS7.0操作系统。 ... [详细]
author-avatar
4号的国哥
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有