将任意视频转化为mp4
1. mencoder二次编码
mencoder /data1/src.mpg -o /data1/dst.avi -ovc x264 -x264encopts bitrate=300:pass=1:turbo=2:keyint=250:frameref=2:bframes=3:deblock:cabac:qp_min=10:qp_max=51:qp_step=4:qcomp=0.7:direct_pred=auto:weight_b:partitions=all:8x8dct:me=umh:me_range=16:subq=5:chroma_me:mixed_refs:trellis=1:nr=0:chroma_qp_offset=2:aq_mode=2:aq_strength=1.5:threads=auto -vf scale=400:-2,harddup -oac faac -faacopts br=48:mpeg=4:object=2 -channels 2 -srate 22050 -ofps 15
2. 抽取音频
mencoder /data1/dst.avi -o /data1/dst.aac -of rawaudio -oac copy -ovc frameno
3. 抽取视频
MP4Box -aviraw video /data1/dst.avi
4. 合并音频,视频为MP4
MP4Box -fps 15 -add /data1/dst.aac -add /data1/dst_video.h264 -new /data1/dst.mp4
##############################################################
-ovc <codec name>
使用给出的视频编解码器编码(没有默认值)。
8>F>A> 使用-ovc help来获取可用视频编解码器的列表。
A>B>A>
-ovc copy
不编码,直接复制视频流
-ovc raw
编码为任意的未压缩格式(使用‘-vf format’选择具体格式)。
-ovc lavc
使用libavcodec编解码器编码。
>-x264encopts9>
bitrate=<value>
设置所采用的平均比特率,单位为千比特/秒(默认值:关闭)。
由于局部比特率会变化,因而这个平均值对于十分短的视频来说可以不精确
(参见ratetol)。
可以通过将此设置与vbv_maxrate一起使用来实现恒定的比特率,代价是质量严重下降。
pass=<1-3>
启用2或3阶段编码模式。
推荐总是以2或3阶段编码模式编码,因为该模式使比特的分配更佳,从而提升整体质量。
1 第一阶段
2 (二阶段编码模式中的)第二阶段
3 第N阶段(三阶段编码模式的第二和第三阶段)
以下介绍的是其如何工作,以及使用这个参数:
第一阶段(pass=1)收集视频上的统计信息,并将这些信息写入一个文件中。
除了那些默认为打开的选项,你可能想关闭一些消耗CPU的选项。
在二阶段编码模式,第二阶段(pass=2)读取统计信息文件,并基于这个文件进行码率控制
决策。
在三阶段编码模式中,第二阶段(pass=3——这是不打印错误)同时做两件事:其首先读取
统计信息,然后重写这些统计信息。
你可以使用所有的编码选项,除了那些十分消耗CPU的选项。
第三阶段(pass=3)与第二阶段相同,只是这一阶段基于第二阶段产生的统计信息工作。
你可以使用所有的编码选项,包括消耗CPU的那些选项。
第一阶段可以使用平均比特率模式,或是使用恒定量化器模式。
推荐使用ABR,因为该模式不需求猜测所要使用的量化器。
后续的阶段是ABR模式的,并且必须指定比特率。
turbo8>5>8>E>C>6>5>6>1>9>
使用更快的算法并禁用大量占用CPU的选项以使第一阶段编码的运行大幅加快。
该选项可能稍稍降低全局峰值信噪比(大约为0.01dB)并且改变单个帧的类型以及稍稍改变
该帧的峰值信噪比(最多至0.03dB)。
keyint=<0-300>
关键帧的最大间隔,单位为帧数(默认值:250或者说25fps的影片中每10秒一个关键帧。这
个数值是MPEG-4中推荐使用的默认值)。
大多数编解码器需要定期使用关键帧以限制不匹配错误聚积过多。
关键帧也在播放定位时需要,因为只能定位于关键帧——但关键帧比其它帧需要更多空间,
所以这里的数值设得越大意味着文件越小,但定位越不精确。
0与1相同,这将使每个帧都成为关键帧。
不推荐大于300的值,因为质量可能很差,这取决于解码器、编码器和运气。
通常MPEG-1/2使用小于等于30的值。
frameref=<1-16>
B帧和P帧中的预测器里所使用的之前出现的帧的数量(默认值:1)。
该选项在动画是有效果的,但在实况视频素材中,大约6个参照帧之后参照帧的优化效果急
剧下降。
该选项对于解码速度没有影响,但确实增加了解码所需的内存量。
某些解码器最多只能处理15个参照帧。
bframes=<0-16>
I帧和P帧之间连续出现的B帧的最大数量(默认值:0)
(no)deblock
使用反块效应滤镜(默认值:开启)。
由于相对于其提高的质量而言,该选项占用极少时间,所以不推荐禁用这个选项。
deblock=<-6-6>,<-6-6>
第一个参数是AlphaC0(默认值:0)。
该参数调整的是H.264内循环反块效应滤镜所用的阈值。
第一,该参数调整的是滤镜对于任何一个像素所允许产生的变动的最大数量。
第二,该参数影响的是将被滤除的边界两侧差别的阈值。
正数值使更多的块效应损伤得到削减,但同时也会损伤画面细节。
第二个参数是Beta(默认值:0)。 该参数影响的是画面细节的阈值。
细节很多的块将不被过滤,因为滤镜产生的平滑效果会比原来的块效应效果更加明显。
滤镜的默认行为几乎总是带来最优的质量,所以最好要么不调这个选项,要么只对其作少量
调整。
然而,如果你的源视频素材已经有一些块效应或噪声效果你想要去除,那么可能将这个选项
调高一点是个不错的办法。
(no)cabac
使用CABAC模式(Context-Adaptive Binary Arithmetic Cod‐
ing,上下文自适应的二进制算 术编码)(默认值:开启)。
稍稍减慢编码和解码的速度,但应该可以节省10-15%的比特率。
除非你要解码速度,否则你不该禁用这个选项。
qp_min=<1-51>8>8>E>ABR6>C>6>5>6>1>1>F>9>
最小量化参数,10-30似乎是一个有用的范围(默认值:10)。
qp_max=<1-51>8>8>E>ABR6>C>6>5>6>1>1>F>9>
最大量化参数(默认值:51)
qp_step=<1-50>8>8>E>ABR6>C>6>5>6>1>1>F>9>
量化参数在帧之间增加/降低的最大数值(默认值:4)
qcomp=<0-1>8>8>E>ABR6>C>6>5>6>1>1>F>9>
量化器压缩率(默认值:0.6)。 值越小使比特率越恒定,
而值越大使量化参数越恒定。
direct_pred=<name>
决定用于B帧中直接模式宏块的运动预测的类型。
none 不使用直接模式的宏块。
spatial
运动矢量由邻接块推断出来。(默认值)
temporal
运动矢量由其后的P帧推断出来。
auto 编解码器为每个帧分别选择是用spatial还是用temporal。
spatial和tempo‐
ral速度上和PSNR上大致相同,选择两者中的哪一个取决于视频的内容。
auto稍稍好一些,但运行慢一些。 当与多阶段编码模式一同使用时,au‐
to非常有效。 direct_pred=none不仅运行速度较慢而且质量也较差。
partitions=<list>
启用一些可选的宏块类型(默认值:p8x8,b8x8,i8x8,i4x4)。
p8x8 启用p16x8、p8x16、p8x8类型。
p4x4 启用p8x4、p4x8、p4x4类型。 p4x4只在subq >=
5,并且分辨率低时才推荐使用。
b8x8 启用b16x8、b8x16、b8x8类型。
i8x8 启用i8x8类型。 除非启用了8x8dct,否则i8x8没有任何效果。
i4x4 启用i4x4类型。
all 启用以上所有类型。
none 禁用以上所有类型。
不管这个选项设为何值,p16x16、b16x16和i16x16三种宏块类型总是启用的。
其思想是找到最适合描绘画面某一区域的宏块类型和尺寸。
例如,全局摇摄镜头较好以16x16的块来表示,而小型移动物体较好以小一点的块来表示。
me=<name>
选择全像素运动估计算法。
dia 菱形搜索,半径为1(运行快)
hex 六边形搜索,半径为2(默认值)
umh 非均匀的多六边形搜索(运行慢)
esa 彻底性搜索(运行非常慢,而且不比umh好多少)
me_range=<4-64>
彻底性运动搜索或多六边形运动搜索的半径(默认值:16)
subq=<0-9>
调整亚像素优化质量。
该参数控制的是运动估计决策过程中质量与速度的权衡。
subq=5能比subq=1多压缩掉10%。
0 对于所有候选宏块类型运行全像素精度的运动估计操作。
然后选择 SAD 指标最佳的类型(比 subq=1 快,不推荐,除非
你需要极其快速的编码)。
1 执行值为 0 时的操作,
然后优化这种类型的运动值,使其达到快速四分之一像素模式的精度(运行快)。
2 对于所有候选宏块类型运行半像素精度的运动估计操作。
然后选择 SATD 指标最佳的类型。
然后优化这种类型的运动值,使其达到快速四分之一像素模式的精度。
3 与2相似,但采用较慢的四分之一像素优化模式。
4 对于所有候选宏块类型运行快速四分之一像素精度的运动估计操作。
然后选择 SATD 指标最佳的类型。
然后完成对于此种类型的四分之像素模式的优化操作。
5 在选择最佳类型之前,对于所有候选宏块类型运行最佳质量的四分之一像素精度的运动估计
操作。 同时也使用 SATD
指标优化双向宏块中使用的两个运动矢量,而不是重用向前和向后搜索中
找到的矢量。
6 启用I帧和P帧中宏块类型的码率失真优化模式。(默认值)
7 在所有帧中启用宏块类型的码率失真优化模式。
8 启用运动矢量的码率失真优化模式,以及I帧和P帧中的内部预测模式。
9 启用运动矢量的码率失真优化模式,以及所有帧中的内部预测模式。(最佳)
以上内容中,“所有的候选宏块类型”并不恰恰意味着所有已启用的类型:
4x4、4x8、8x4只有当8x8比16x16好时才尝试采用
(no)chroma_me
在亚像素运动搜索中考虑色度信息(默认值:启用)。 要求subq>=5。
(no)mixed_refs
允许每个8x8或16x8的运动部分独立地选取一个参照帧。
不用这个选项的话,整个宏块必须采用同一个参照帧。
要求frameref>1。
trellis=<0-2>8>5>2>8>E> cabac9>
码率失真最优的量化模式
0 禁用(默认值)
1 仅对最终编码启用
2 启用所有模式下的决策(运行慢,要求subq>=6)
nr=<0-100000>
噪声削减强度,0表示禁用。
100-1000对于典型内容来说是一个有用的范围,但你可能希望对噪声很强的视频内容调高
一些这个选项。
考虑到这个选项对于运行速度影响小,你可能希望倾向于使用这个选项,而不是使用诸如
denoise3d或hqdn3d之类的视频滤镜来滤除噪声。
chroma_qp_offset=<-12-12>
相对于亮度来说为色度使用一个不同的量化参数。
有用值的范围是<-2-2>(默认值:0)。
aq_mode=<0-2>
定议自适应量化模式(AQ)如何分配比特:
0 禁用
1 避免在帧间转移比特。
2 在帧间转移比特(依据默认方式)。
aq_strength=<positive float value>
控制自适应量化模式(AQ)在平坦和有纹理的区域能减少多少块效应和模糊(默认值:1.0)。
值为 0.5 将导致较弱的 AQ 和较少的细节,而值为 1.5 则能产生较强的
AQ 和更多的细节。
threads=<1-8>(仅用于 MPEG-1/2 和 H.264)
用于解码的线程数 (默认是: 1)
8>F>A>
如果你要改变视频的尺寸,那么你需要一个能识别隔行扫描内容的缩放器,你可以使用
-vf scale=<width>:<height>:1来激活这种缩放器。
harddup
只适用于MEncoder。
如果在编码中使用了hardup,则它将强制使重复的帧编码至输出中。
这将占用稍多的空间,但对于输出至MPEG文件或当你要在编码后分离再合并视频
流时却有必要。
应被放置于滤镜链的最后或接近于最后,除非你有充足的理由不这样做。
-oac <codec name>
使用所给的音频编解码器编码(没有默认值)。
8>F>A> 使用-oac help来获取可用音频编解码器的列表。
A>B>A>
-oac copy
不编码,直接复制音频流
-oac pcm
编码为未压缩的PCM格式。
-oac mp3lame
编码为MP3格式(使用LAME)。
-oac lavc
使用libavcodec编解码器编码。
【faac是一种编码器,其音频格式为aac】
faac8>-faacopts9>
br=<bitrate>
平均比特率,单位为kbps(与quality选项不能同时使用)
mpeg=<2|4>
MPEG版本(默认值:4)
object=<1-4>
目标类型的复杂度
1 MAIN(默认值)
2 LOW
3 SSR
4 LTP(运行极慢)
-channels <0>7>> (F>7>2>1> -af channels)
请求播放的声道数 (默认是: 2)。 MPlayer
要求解码器把音频解码到指定数量的声道。
然后由解码器来实现这个要求。 此选项通常只有在播放带 AC-3
音频(比如 DVD)的视频时才显得重要。 在那时默认使用 liba52
解码并把音频正确地混合到需要的声道数。
为了直接控制输出声道数独立于解码声道数, 使用声道过滤器。
8>F>: 此选项可以被解码器(仅适用于 AC-3), 过滤镜(环绕立体声),
和音频 输出驱动(至少 OSS 可以)接受。
可用选项有:
2 立体声
4 环绕立体声
6 5.1 立体声
-srate <Hz>
选择输出的取样率(当然声卡对此有限制)。
如果选择的样本频率与当前的媒体有差异, 会在音频过滤层中插入
音频过滤器 resample(重采样) 或 lavcresample 来补偿此差异。
重采样的类型由 -af-adv 选项控制。 默认的是快速重采样,
可能会引起失真。
-ofps <fps>
为输出文件指定一个每秒帧数(fps)值,该值可以与原来视频中的不
同。 必须为可变fps(ASF、一些MOV)以及逐行扫描(30000/1001
fps电视 图像模式的MPEG)文件设置该值。
-of <format>8>BETAB>5>8>3>1>1>9>
编码为指定的容器格式(默认值:AVI)。
8>F>A> 使用-of help以获取可用的容器格式的列表。
A>B>A>
-of avi
编码为AVI格式。
-of mpeg
编码为MPEG格式(另参见-mpegopts)。
-of lavf
使用libavformat流合并器编码(另参见-lavfopts)。
-of rawvideo
原始视频流(不合并——只含一个视频流)
-of rawaudio
原始音频流(不合并——只含一个音频流)
-ovc <codec name>
使用给出的视频编解码器编码(没有默认值)。
8>F>A> 使用-ovc help来获取可用视频编解码器的列表。
A>B>A>
-ovc copy
不编码,直接复制视频流
-ovc raw
编码为任意的未压缩格式(使用‘-vf format’选择具体格式)。
-ovc lavc
使用libavcodec编解码器编码。
【frameno,一帧也不变,老版本用】