zoukankan      html  css  js  c++  java
  • Mplayer的秘密功能

    Mplayer的秘密功能

    用过 Linux 的人一般都会听说过 MPlayer 的大名,在媒体播放领域它简直是无所不能,支持绝大多数媒体格式,支持各种输入方式,能通过各种网络协议透明地访问远程文件,还支持很多种输出方式,用 directfb 方式就可以在 Console 下看电影,没有有尝试过?那感觉真的很棒!

    用 MPlayer 来看电影是显然的,至于用它来压缩视频就很少有人尝试了,我也是今天才知道:-) 更准确地说,是用 MPlayer项目中的一个工具 MEncoder 来进行视频压缩,它是 MPlayer 的一部分,安装 MPlayer 时里面都会带有 MEncoder。

    MEncoder 的常用用法如下:

    mencoder input_file -oac acodec -ovc vcodec -o output_file

    1、同 MPlayer 一样,它的输入文件也可以是远程文件,比如 ftp, http 等协议的 URL,或者设备文件,比如DVD、VCD等,

    2、 通过 -oac 选项来指定压缩时所用的音频编码器,它可以是 copy、mp3lame、toolame、lavc等,其中 copy是指直接拷贝音频流而不重新编码。它们还可以有自己的参数,通过 -acodecopts 的方式来指定,比如 lavc 的参数acodec=mp2 和 abitrate = 128,可以这样指定

    -oac lavc -lavcopts acodec=mp2:abitrate=128

    3、类似,通过 -ovc 选项来指定视频编码器,它可以是 copy, lavc, xvidenc, divx4, x264enc,mpeg等,其中 lavc 是功能最强大的编码器集合,里面包括多种音视频编码器,音频编码器包括mp2, mp3, ac3,adpcm_ima_wav,视频编码器见下表

    Codec nameDescription
    mjpeg Motion JPEG
    ljpeg Lossless JPEG
    h263 H.263
    h263p H.263+
    mpeg4 ISO standard MPEG-4 (DivX 5, XVID compatible)
    msmpeg4 pre-standard MPEG-4 variant by MS, v3 (AKA DivX3)
    msmpeg4v2 pre-standard MPEG-4 by MS, v2 (used in old asf files)
    wmv1 Windows Media Video, version 1 (AKA WMV7)
    wmv2 Windows Media Video, version 2 (AKA WMV8)
    rv10 an old RealVideo codec
    mpeg1video MPEG-1 video
    mpeg2video MPEG-2 video
    huffyuv lossless compression
    asv1 ASUS Video v1
    asv2 ASUS Video v2
    ffv1 FFmpeg's lossless video codec

    通过 -lavcopts 选项指定 lavc 模块的参数来设定音频和视频编码器,以及其它参数,如比特律。

    一个完整的使用 MEncode 来压缩媒体文件的例子如下:



    mencoder VTS_01_1.VOB VTS_01_2.VOB VTS_01_3.VOB VTS_01_4.VOBVTS_01_5.VOB -oac mp3lame -lameopts mode=2:cbr:br=192:vol=6 -ovc xvid-xvidencopts bitrate=1200 -sub 1.srt -o MyBossDaughter.avi



    在 用这些参数进行压缩时,可以达到 200帧/秒的速度,而在同一台机器上用 Real Producer 10来进行类似压缩比的压缩,只有 30-60 帧/秒的速度,这可能与我的 MEncoder是经过优化编译的有关,里面包括了对各种多媒体指令集的支持。难道 Real Producer 里面没有这样的优化?那也太不可思议了……

    此外,MEncoder 还支持各种 filter, 以实现画面的剪裁、更改分辨率等需求。

    关于 MEncoder 更详细的用法请参照它的官方文档,关于各种参数的设置请参照参数说明

    MPlayer 也有 Windows 下的版本,其中就带有 MEncoder。



    -----------------------------------------------------------------------------------------------------------


    由于mp4要改文件头,时间没节约多少,所以不介绍了
    mencoder是一个linux下的视频播放工具(mplayer)自带的编码工具,mplayer就像影音风暴那样各种视频格式几乎通吃,由于mplayer与mencoder地层属同一架构,mencoder支持的格式也非常多。现在mencoder已经有windows版本(win32版)和mac版。
    可以针对cpu的结构优化编译,在cpu家族的不同的成员上运行的二进制文件,不同cpu有相应的程序,充分利用处理器性能。

    优点:是速度快,参数多,可以手工添加所需的各项参数,而且支持格式多mpeg、avi、rm、rmvb、mkv、dat、dvd等等,而且从未出现过影音不同步问题。

    (新版本已支持wmv,asf格式:x:)
    缺点:想手动相机一样,功能强大但指针对摄影师。mencoder需要使用命令行,这对熟悉linux和dos的朋友并不是难题,但对计算机“小白”就有些棘手。
    幸好有人为wencoder开发了界面程序——winmenc,实现了简单的参数设置,可以利用其生成可执行的批处理文件(*.bat),稍后我们来学习他的使用。
    安装方法::x:

    自己建立安装目录,创建一个新文件夹,名字可以定为winmenc,将下列下载的文件解压到此文件夹中。

    1. 下载winmenc
    2.下载合适的mencoder 并解压在相同文件夹中。
    [precompiled mencoder binaries - xvid 1.1.x branch]
    mencoder-k7 for amd cpu
    mencoder-p3 for piii cpu
    mencoder-p4 for p4 cpu
    3.下载 code package - windows essential 并解压在相同文件夹中。
    4.下载mplayer-font,用于压入字幕用
    ps:解压存放到 winmencfont的自建文件夹中,以后会用到。
    最终我们会使用 winmencfontgb2312-kaigkai00mp16font.desc
    如前面介绍的那样,winmenc.exe是一个制作运行文件的界面程序,它提供简单参数设定。

    运行后会出现dos下的对话框,显示执行过程和时间。实际是生成批处理文件encode.bat,并马上执行。关闭dos下的对话框就可以停止编码,你会看到在目标文件夹,已经生成了你想要的起始部分,因为是二进制编码,你用播放器直接就可打开,查看编码质量。满意后可让其完整编码。

    encode.bat用右键点击选择编辑,我们会看到下列命令行:
    mencoder.exe-srate 32000 -af channels=2:2:1:0:1:1 -oac mp3lame -lameopts mode=2:cbr:br=32 -ovc xvid -xvidencopts bitrate=200 -vf scale=480:-3 -sws 9"c: documents and settingskfjiang桌面dance.avi" -o "c: documents andsettingskfjiang桌面dance.xvid.avi" 2> 2.txt

    这只是winmenc.exe生成的,还是未加其它参数,我们还可以添加其它参数。


    参数说明:

    -srate 32000 : 声音采样率,22050hz
    -af channels=2:2:1:0:1:1 右声道 / -af channels=2:2:0:0:0:1 左声道 / -stereo 0 立体声
    -oac mp3lame : 输出音频使用mp3编码
    -lameopts mode=2:cbr:br=32 : 码率br=32 kbit
    -ovc xvid -xvidencopts bitrate=200 : 以xvid方式编码,码率200kbps (经实验,目前divx比xvid要快,在使用vhq功能时会稍稍影响速度)
    -vf scale=480:-3 -sws 9 :变换至480像素宽,高度按比例缩放
    "c:documents and settingskfjiang桌面dance.avi" -o "c:documents and settingskfjiang桌面dance.xvid.avi"
    源文件地址 到 输出文件地址
    2> 2.txt : 编码日志记录地址

    此外对于divx编码:
    -ovc lavc
    -ffourcc dx50
    -lavcopts vcodec=mpeg4:vhq:vbitrate=350
    vhq:vbitrate=350 超高画质只对应divx编码(very high quality for divx only)

    例如:
    encode.bat样例:
    mencoder.exe-srate 22050 -stereo 0 -oac mp3lame -lameopts mode=2:cbr:br= 96:vol=8-ovc lavc -ffourcc dx50 -lavcopts vcodec=mpeg4:vhq:vbitrate=350  - ofps18 -vf scale=480:-3 -sws 9 "e:影视j单身日记2理性边缘 itty''s single diary 2.rmvb"-o "e:影视j单身日记2理性边缘 itty''s single diary 2.divx.avi" 2> 2.txt

    其他参数:

    以下是winmenc.exe没有给出的参数,需要自行加入

    -lameopts mode=2:cbr:br=96:vol=3 : 码率,96 kbit vol为音量(取值0-10,数值越大音量越大,不宜过大,否则会后爆音。)

    -ofps 18 :帧数18帧每秒,可以根据情况更改(fps值小可以提高编码速度,但是太小就太钝了,最小别小于8,经济的15比较好)

    --------------------参数选择分析------------------------

    18fps:这是以前通过多次测试得来的,一般电视剧和动画片15fps就够用了。如果场景变换不是很大,13fps就能保证播放流畅。降低fps值可以使压缩速度更快,对于电影,特别是动作片,要保证流畅无马赛克,就要提高fps,最大24就够了

    选择18fps足以应付大部分,性价比高:f:

    音频采样率32khz:从录音设备的得来的灵感(以下质量说明为比喻,前面的参数时原有的)

    32khz - 32kbps - mono 比电话音好些
    44khz - 64kbps - j-stereo 收音机质量
    44khz -128kbps - j-stereo 通行的mp3标准质量
    44khz -192kbps - stereo 接近cd质量

    经过多次试验(以上是区间范围,自己可以根据需要选择)
    压片最省空间 - 使用32khz - 32kbps - mono,可以保证内容;
    质量要求不高 - 可用32khz - 128kbps - mono 性价比比较高;
    空间大高质量 - 44khz -192kbps - stereo 对大sd卡用户。


    总的来说,输出文件的大小受视频采样率、音频采样率影响效果显著,画面尺寸、fps值也影响大小。怎样设置参数要看你的个人实际需要与机器配置。

    另外,还有很多不知道的参数

    比如:pess2、pess3、动态fps、屏幕截取、时间区间设置等

    使用技巧:

    1.可以先压制部分片子,看影音质量在定参数。但是由于系统原因,以生成的新文件.avi 无法重新写入,导致无法执行修改好的.bat文件。

    这时可以通过修改.bat文件中的输出文件名解决。

    2.由于winmenc.exe现行版本参数不全,你可以将每次设置好的.bat文件重命名。标清参数,下次使用可以直接更新源文件和输出文件名即可。

    3.同等bit的情况下,立体声的效果要明显低于mono,因为它有两个声道,各自占了一半。

    4.另外有些电影4:3,所以480:-3会导致480:360,也就超过了480:320,结果在tcpmp上放会自动缩小,使得左右都有黑边,很不爽,而且白白浪费码率在多余的像素压缩上。
    所以有时候不能用480:-3,而得用-3:320楼主说的gui没提供这个参数,得手动修改。

    5.关于音量调节:

    个人习惯是不用耳机的,天热带着不舒服,所以声音我一向偏大。
    我的经验如果片源是dvdrip,一般在5以上,如果是rmvb一般2就够了,再大就有爆音了。

    -oac mp3lame -lameopts mode=2:cbr:br=64:vol=2 大家来试试看吧

    6.mplayer可以放wmv9了, mencoder也可以压wmv9, 但是视频效果比较差, 码率好像不起作用(ps:wmv编码一直都是ms的小秘密,其他人只是靠猜测、试验来了解它的编码,mencoder也是,慢慢会好起来的:f:)

    关于字幕
    mencoder.exe-srate 32000 -af channels=2:2:1:0:1:1 -oac mp3lame -lameoptsmode=2:cbr:br=32 -ovc lavc -ffourcc dx50 -lavcoptsvcodec=mpeg4:vhq:vbitrate=300 -ofps 15 -vf scale=480:-3 -sws 9 -sub"e:12.srt" -o "e:14.avi" -font"e:1winmencfrontgb2312-kaigkai00mp16font.desc" "e:12.avi" -unicode

    以上是命令的基本形式 前面的命令都是一样的

    -sub "e:12.srt"是字幕文件的位置

    -o "e:14.avi"是输出文件位置

    -font "e:1winmencfontgb2312-kaigkai00mp16font.desc"是font文件的位置

    "e:12.avi"是原文件的位置

  • 相关阅读:
    看到关于java资料比较全的,自己收藏
    ie6下pnghack——css方案
    git基本操作
    购物车功能实现
    jquery学习:获取位置position(),offset(),scrollTop困惑
    Datax3.0使用说明
    Scala字符串操作
    Scala中class、object、case class、case object区别
    Scala构造函数
    scala数组操作
  • 原文地址:https://www.cnblogs.com/LUO257316/p/3220809.html
Copyright © 2011-2022 走看看