2016-10-13 00:16:48 点击量:21 标签: 收藏本文
转帖:http://rhingheart.blogspot.com/2009/03/ffmpegx264-ffmpeg-x264.html
注:讲实话,有关这些使用的文章真的不错,我们在这谢谢"SV的边界"本来我自己还想总结一下的。看来没有必要了,呵呵,在次多谢"SV的边界".下面原文
使用ffmpeg进行.264编码的相关文章比较少,google了一下,特总结如下:
- qscale的取值可以是0.01-255但实际使用超过50就很糟糕了
- ffmpeg的cbr模式可以把码率控制的不错,但是vbr无法限制最高码率(虽然有max的设置,但是程序没有实现)
- x264标准的封装是x264+aac in flv或者x264+aac in MP4
接下来说明下ffmpeg命令行的语法规则(本块内容来自2009-03-02官方文档):
语法规则结构:
ffmpeg [[infile options][`-i' infile]]... {[outfile options] outfile}...
一个最简单的命令形式:
ffmpeg -i input.avi -b 64k output.avi
这个命令把视频以64k的码率重编码。
显然,输入文件前面要加一个-i选项下面介绍一些有用的全局参数:
ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
接下来介绍视频选项:
ffmpeg -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2vffmpeg -i foo.mov -vcodec libxvid -pass 1 -an -f rawvideo -y NULffmpeg -i foo.mov -vcodec libxvid -pass 1 -an -f rawvideo -y /dev/null
zero (0向量)
phods
log
x1
hex
umh
epzs (默认)
full (完全搜索,很慢又好不到哪里去)音频部分:
下面举几个x264编码的例子:
我使用mencoder调用x264编码一个psp用的视频:
x264+aac in mp4 (我修改过的,原作者的不能使用)
mencoder test_video.vob -oac lavc -lavcopts acodec=libfaac:abitrate=94 -ovc x264 -x264encopts/
cabac=1:ref=1:deblock=1,0,0:analyse=0x1,0x111:me=hex:subme=6:psy_rd=1.0,0.0:mixed_refs=0:me_range=32:chroma_me=1:trellis=1:8x/
8dct=0:no-chroma-me=0:chroma_qp_offset=-/
2:nr=0:dct_decimate=1:bframes=3:b_pyramid=0:b_adapt=1:b_bias=0:direct=3:keyint=250:keyint_min=25:scenecut=40:qp=18:bitrate=80/
0 -lavdopts er=2 -of lavf -lavfopts format=mp4 -vf scale=720:480 -o men.mp4
对应的ffmpeg编码参数是:
ffmpeg
ffmpeg -i inputfile.avi -f psp -acodec libfaac -ab 94k -vcodec libx264 -cqp 28 -coder 1 -refs 3 -deblockalpha 1 -deblockbeta -1 -me_method umh -subq 9 -me_range 32 -trellis 2 -chromaoffset -2 -nr 0 -bf 2 -b_strategy 1 -bframebias 0 -directpred 3 -g 250 -i_qfactor 1.3 -b_qfactor 1.4 -flags2 +bpyramid+wpred+mixed_refs+8x8dct -er 2 -s 480x320
需要注意的是,flags2里面那块,似乎要按照一定顺序才能正常工作,其他地方都差不多,详细情况可以从下面两篇文章得出:
第一篇是这个在网上被传了很多,但有些问题的对照表格,我修改了有问题的部分:
| FFmpeg option | x264 option |
|---|---|
| -g <frames> | –keyint |
| -b <bits per second> | –bitrate |
| -bufsize <bits> | –vbv-bufsize |
| -maxrate <bits> | –vbv-maxrate |
| -pass <1,2,3> | –pass |
| -crf <float> | –crf |
| -cqp <int> | –qp |
| -bf <int> | –bframes |
| -coder <0,1> | –no-cabac |
| -bframebias <int> | –b-bias |
| -keyint_min <int> | –min-keyint |
| -sc_threshold <int> | –scenecut |
| -deblockalpha <int>-deblockbeta <int> | –deblock |
| -qmin <int> | –qpmin |
| -qmax <int> | –qpmax |
| -qdiff <int> | –qpstep |
| -qcomp <float> | –qcomp |
| -qblur <float> | –qblur |
| -complexityblur <float> | –cplxblur |
| -refs <int> | –ref |
| -directpred <int> | –direct |
| -me_method <epzs,hex,umh,full> | –me |
| -me_range <int> | –merange |
| -subq <int> | –subme |
| -bidir_refine <0,1> | –bime |
| -trellis <0,1,2> | –trellis |
| -nr <int> | –nr |
| -level <int> | –level |
| -bt <bits> | –ratetol = -bt / -b |
| -rc_init_occupancy <bits> | –vbv-init = -rc_init_occupancy / -bufsize |
| -i_qfactor <float> | –ipratio = 1 / -i_qfactor |
| -b_qfactor <float> | –pbratio |
| -chromaoffset <int> | –chroma-qp-offset |
| -rc_eq <string> | –rc_eq |
| -threads <int> | –threads |
| -cmp <-chroma/+chroma> | –no-chroma-me |
| -partitions | –partitions |
| +parti8×8 | i8×8 |
| +parti4×4 | i4×4 |
| +partp8×8 | p8×8 |
| +partp4×4 | p4×4 |
| +partb8×8 | b8×8 |
| -flags | |
| -loop/+loop | –no-deblock/–deblock |
| -psnr/+psnr | –no-psnr/nothing |
| -flags2 | |
| +bpyramid | –b-pyramid |
| +wpred | –weightb |
| +brdo | –b-rdo 我这里的ffmpeg已经不能用这个了 |
| +mixed_refs | –mixed-refs |
| +dct8×8 | –8×8dct |
| -fastpskip/+fastpskip | –no-fast-pskip |
| +aud | –aud |
我们是一家提供综合软件外包与弱电工程服务的技术公司。
业务涵盖定制软件、管理系统、网站、小程序、APP、系统集成、网络布线、监控安防、门禁、机房建设及长期技术维护。
公司地址:湖北省宜昌市伍家岗区东站二路6号三峡(宜昌)大数据产业园海洋馆二楼A203室