当前位置:文档之家› X264参数设定详细解释

X264参数设定详细解释

X264参数设定详细解释
X264参数设定详细解释

X264参数设定详细解释

x264 core:65 r1074M b6bb3d4

Syntax: x264 [options] -o outfile infile [widthxheight]

语法(命令行写法):x264 [参数] -o 输出文件名输入文件名[宽x高]

范例:

x264 --crf 26 --ref 3 --mixed-refs --bframes 3 --b-adapt 2 --b-pyramid --weightb --deblock -1:-1 --trellis 2 --partitions all --8x8dct --me umh --threads auto --thread-input --aud --progress --no-psnr --no-ssim -o output.mp4 input.avs 720x480 Infile can be raw YUV 4:2:0 (in which case resolution is required),

or YUV4MPEG 4:2:0 (*.y4m),

or AVI or Avisynth if compiled with AVIS support (yes).

输入文件可以是RAW YUV 4:2:0(在某些情况下分辨率是必需的)

或者YUV4MPEG 4:2:0 (*.y4m)

或者AVI 或Avisynth(后面的yes说明支持AVS输

入)Outfile type is selected by filename:

.264 -> Raw bytestream

.mkv -> Matroska

.mp4 -> MP4 if compiled with GPAC support (yes)

输出文件类型由输出文件名指定:

.264 -> Raw 格式

.mkv -> MKV格式

.MP4 -> MP4格式(yes说明支持MP4输出)Options:

可选参数:-h, --help List the more commonly used options --longhelp List all options

-h, --help 显示常用参数

--longhelp 显示全部参数

注:-h,--help代表-h与--help两者都可以,-h是简化写法举个例子:

x264 -h与x264 --help两者效果等价——————————————————————————————————————Frame-type options:

帧-类型选项:-I, --keyint Maximum GOP size [250]

说明:指定两个IDR帧之间的最大间隔,默认250

推荐值:默认或者FPS的10倍

范例:--keyint 300

注:[250]代表默认值为250

提示:若想使用默认值,不使用参数即可-i, --min-keyint Minimum GOP size [25]

说明:指定两个IDR帧之间的最小间隔,默认25

推荐值:默认或者FPS的大小

范例:--min-keyint 30问题:如何查看FPS?

https://www.doczj.com/doc/fc16729128.html,/zh-CN

去上面的网站下载mediainfo查看--scenecut How aggressively to insert extra I-frames [40]

说明:指定强制使用IDR帧的阀值,值越大强度越高,默认为40

推荐值:默认

范例:--scenecut 40--pre-scenecut Faster, less precise scenecut detection.

Required and implied by multi-threading.

说明:效果同scenecut,速度比scenecut快,但是精度稍低,默认设定为当threads>1时,永远使用--pre-scenecut 推荐值:默认-b, --bframes Number of B-frames between I and P [0]

说明:设定I帧与P帧之间的最大B帧数量,范围0~16

推荐值:3-6

范例:--bframes 3--b-adapt Adaptive B-frame decision method [1]

Higher values may lower threading efficiency.

- 0: Disabled

- 1: Fast

- 2: Optimal (slow with high --bframes)

说明:B帧自适应方法,默认为1

- 0: 关闭

- 1: 高速

- 2: 最优化(--bframes的值越高速度越慢)

推荐值:2

范例:--b-adapt 2--b-bias Influences how often B-frames are used [0]

说明:影响B帧使用的频繁程度,默认为0

推荐值:0

范例:--b-bias 0--b-pyramid Keep some B-frames as references

说明:允许其它帧参考B帧,默认不使用

推荐值:开启

范例:--b-pyramid--no-cabac Disable CABAC

说明:关闭CABAC,默认不使用-r, --ref Number of reference frames [1]

说明:设定参考帧的数量,范围0~16,默认值为1,过大的值可能导致无法硬解,参考以下公式计算良好硬解的最大参考帧

最大参考帧数量计算公式:maximum ref = 12288 * 1024 / ( width * height * 1.5)

推荐值:3-6

范例:--ref 3--no-deblock Disable loop filter

说明:关闭deblock filter,默认不使用

推荐值:默认

范例:--no-deblock-f, --deblock Loop filter AlphaC0 and Beta parameters [0:0]

说明:设定deblock filter参数,alpha为Deblocking strength,beta为Deblockingthreshold,值越大deblocking效果越好,画面越干净,但是会损失一些细节并有些许模糊,反之亦然,上下限不要超过-3,3,默认0,0

推荐值:默认

范例:--deblock 0:0--interlaced Enable pure-interlaced mode

说明:隔行编码模式,默认关闭

范例:

--interlaced——————————————————————————————————————Ratecontrol:

压缩比控制:-q, --qp Set QP (0=lossless) [26]

说明:固定量化模式,值越小质量越好,默认为26,qp = crf + --qcomp 1

推荐值:使用crf,见crf部分

范例:--qp 26-B, --bitrate Set bitrate (kbit/s)

说明:目标码率模式,生成的视频码率大小为指定的bitrate 的值,一般搭配--pass使用

推荐值:720P以下码率为800-2100kbps之间,720P为

3-6Mbps,1080P为8-15Mbps以上

范例:--bitrate 1000--crf Quality-based VBR (nominal QP) 说明:固定压缩因子模式,值越小质量越好,一般搭配

--qcomp使用

推荐值:16-26

范例:--crf 26--qcomp QP curve compression: 0.0 => CBR, 1.0 => CQP [0.60]

说明:压缩曲线,范围为0~1之间,数值越小曲线越平坦,与crf搭配使用,默认为0.6

推荐值:默认

范例:--qcomp 0.6--vbv-maxrate Max local bitrate (kbit/s) [0]

说明:设定VBV模式的最大码率,如果需要硬解必须开启VBV模式,默认为0

范例:--vbv-maxrate 50000--vbv-bufsize Enable CBR and set size of the VBV buffer (kbit) [0]

说明:设定VBV缓冲区的最大尺寸,其大小一般由硬件设备决定,默认为0

范例:--vbv-bufsize 50000--vbv-init Initial VBV buffer

occupancy [0.9]

说明:设定VBV缓冲区的初始填充尺寸,默认为0.9

范例:--vbv-init 0.9--qpmin Set min QP [10]

说明:设定qp的下限,默认为10

范例:--qpmin 10--qpmax Set max QP [51]

说明:设定qp的上限,默认为51

范例:--qpmax 51--qpstep Set max QP step [4]

说明:设定qp的最大步长,默认为4

范例:--qpstep 4--ratetol Allowed variance of average bitrate [1.0]

说明:允许最终码率偏离指定平均码率的百分比,只在1pass 中起作用,默认为1.0

范例:--ratetol 1.0--ipratio QP factor between I and P [1.40]

说明:设定I帧相对于P帧的量化比

推荐值:默认

范例:--ipratio 1.40--pbratio QP factor between P and B [1.30]

说明:设定P帧相对于B帧的量化比

推荐值:默认

范例:--ipratio 1.30--chroma-qp-offset QP difference between chroma and luma [0]

说明:chroma 与luma 的QP差异值,这个值会随着

--psy-rd的使用自动调整为-2

推荐值:默认

范例:--chroma-qp-offset 0--aq-mode AQ method [1]

- 0: Disabled

- 1: Variance AQ (complexity mask)

说明:自适应量化方法,可以改善某些场景过于模糊等问题,默认开启- 0: 关闭

- 1: 可变AQ

推荐值:默认

范例:--aq-mode 1--aq-strength Reduces blocking and blurring in flat and

textured areas. [1.0]

- 0.5: weak AQ

- 1.5: strong AQ

说明:指定AQ的强度,减小低细节宏块的量化值,默认1.0 - 0.5: 较弱的AQ

- 1.5: 较强的AQ

推荐值:默认

范例:--aq-strength 1.0-p, --pass Enable multipass ratecontrol

- 1: First pass, creates stats file

- 2: Last pass, does not overwrite stats file

- 3: Nth pass, overwrites stats file

说明:多重压缩模式,1 pass 或N pass生成stats文件,2pass调用生成的stats文件对压缩进行优化,更合理的分配码率,一般没必要进行N pass

- 1: 第1 pass,生成stats文件

- 2: 最终pass,不覆盖stats文件

- 3: 第N pass,覆盖stats文件

推荐值:2

范例:--pass 2--stats Filename for 2 pass stats

["x264_2pass.log"]

说明:指定stats文件名,默认为"x264_2pass.log"

推荐值:默认

范例:--stats "x264_2pass.log"--cplxblur Reduce fluctuations in QP (before curve compression) [20.0]

说明:减小QP的波动(在曲线压缩以前),范围0~999

推荐值:默认

范例:--cplxblur 20--qblur Reduce fluctuations in QP (after curve compression) [0.5]

说明:减小QP的波动(在曲线压缩之后),范围0~99

推荐值:默认

范例:--qblur 0.5--zones //... Tweak the bitrate of some

regions of the video

Each zone is of the form

,,

where is either

q= (force QP)

or b= (bitrate multiplier)

说明:调整视频中某一范围内的码率

每个区域已以下形式出现

,,

为下面的任意一个

q= (强制QP)

或b= (指定bitrate)

范例:--zone 0,1000,qp=30/30000,32000,b=0.5--qpfile Force frametypes and QPs

说明:强制指定帧类型与QP

推荐值:默认Analysis:

分析:-A, --partitions Partitions to consider

["p8x8,b8x8,i8x8,i4x4"]

- p8x8, p4x4, b8x8, i8x8, i4x4

- none, all

(p4x4 requires p8x8. i8x8 requires --8x8dct.)

说明:宏块分割方式,默认["p8x8,b8x8,i8x8,i4x4"]

- p8x8, p4x4, b8x8, i8x8, i4x4

- none, all

(p4x4 需要p8x8. i8x8 需要--8x8dct.)

推荐值:默认

范例:--partitions "p8x8,b8x8,i8x8,i4x4"--direct Direct MV prediction mode ["spatial"]

- none, spatial, temporal, auto

说明:Direct预测方法,默认"spatial"

- none, spatial, temporal, auto

推荐值:"auto"

范例:--direct "auto"--direct-8x8 Direct prediction size [1] - 0: 4x4

- 1: 8x8

- -1: smallest possible according to level

说明:Direct预测大小,默认为-1

- 0: 4x4

- 1: 8x8

- -1: 根据Level确定一个最小值

范例:--direct 1-w, --weightb Weighted prediction for

B-frames

说明:允许对B帧进行加权预测

范例:--weightb--me Integer pixel motion estimation method ["hex"]

- dia: diamond search, radius 1 (fast)

- hex: hexagonal search, radius 2

- umh: uneven multi-hexagon search

- esa: exhaustive search

- tesa: hadamard exhaustive search (slow)

说明:全像素动态预测方法,越往下精度越高,速度越慢,默认"hex"

- dia: 菱形搜索, 半径1 (高速)

- hex: 六边形搜索, 半径2

- umh: 不规则多边形搜索

- esa: 全面搜索

- tesa: hadamard变换全面搜索(最慢)

推荐值:"umh"

范例:--me "umh"--merange Maximum motion vector search range [16]

说明:最大动态矢量搜索范围,结合--me使用,对于dia与hex,允许的范围为4~16,umh以上可以超过16,值越大编码速度越慢,默认为16

范例:--merange 16--mvrange Maximum motion vector length [-1 (auto)]

说明:最大动态矢量长度

推荐值:默认

范例:--mvrange -1 --mvrange-thread Minimum buffer between threads [-1 (auto)]

说明:线程之间的最小缓冲区大小

推荐值:默认

范例:--mvrange-thread -1 -m, --subme Subpixel motion estimation and mode decision [6]

- 0: fullpel only (not recommended)

- 1: SAD mode decision, one qpel iteration

- 2: SATD mode decision

- 3-5: Progressively more qpel

- 6: RD mode decision for I/P-frames

- 7: RD mode decision for all frames

- 8: RD refinement for I/P-frames

- 9: RD refinement for all frames

说明:子像素动态预测模式策略,值越大效果越好,速度越慢,默认6

- 0: 仅fullpel (不推荐)

- 1: SAD模式策略, 1 qpel迭代

- 2: SATD模式策略

- 3-5: 依次qpel增加

- 6: I/P-帧RD模式策略

- 7: 所有帧RD模式策略

- 8: I/P-帧RD refinement模式策略

- 9: 所有帧RD refinement模式策略

推荐值:6以上

范例:--subme 7--psy-rd Strength of psychovisual optimization ["1.0:0.0"]

#1: RD (requires subme>=6)

#2: Trellis (requires trellis, experimental)

说明:视觉优化,--psy-rd 1.0:0.0 代表#1为1.0,#2为0.0,#2还在测试阶段,默认1.0:0.0

#1: RD (需要subme>=6)

#2: Trellis (需要trellis, 测试阶段)

推荐值:#1 (0~1.0),#2 0.0

范例:--psy-rd 1.0:0.0--mixed-refs Decide references on a per partition basis

说明:对每个宏块区进行参考帧判断,开启后可以提升质量,但会降低速度

推荐值:开启

范例:--mixed-refs--no-chroma-me Ignore chroma in motion estimation

说明:在动态预测中忽略chroma

推荐值:默认

范例:--no-chroma-me-8, --8x8dct Adaptive spatial transform size

说明:自适应空间变换大小

推荐值:使用

范例:--8x8dct-t, --trellis Trellis RD quantization. Requires CABAC. [0]

- 0: disabled

- 1: enabled only on the final encode of a MB

- 2: enabled on all mode decisions

说明:Trllis RD量化.需要CABAC,值越大速度越慢,默认0

- 0:关闭

- 1:基于宏块

- 2:在所有模式策略中使用

推荐值:1

范例:--trellis 1--no-fast-pskip Disables early SKIP detection on P-frames

说明:关闭早期的P帧快速检测,开启可以提升质量,但会减低一些速度,默认不使用

推荐值:使用

范例:--no-fast-pskip--no-dct-decimate Disables coefficient

thresholding on P-frames

说明:关闭P帧的系数阀值,默认不使用

推荐值:默认

范例:--no-dct-decimate--nr Noise reduction [0]

说明:降噪,默认0

推荐值:默认

范例:--nr 0--deadzone-inter Set the size of the inter luma quantization deadzo

ne [21]

--deadzone-intra Set the size of the intra luma quantization deadzo

ne [11]

Deadzones should be in the range 0 - 32.

说明:设定inter/intra luma deadzone 量化值的大小,范围0 - 32

推荐值:默认

范例:--deadzone-inter 21 --deadzone-intra 11--cqm Preset quant matrices ["flat"]

- jvt, flat

说明:预设量化矩阵- jvt, flat

推荐值:默认

范例:--cqm "flat"--cqmfile Read custom quant matrices

from a JM-compatible file

Overrides any other --cqm* options.

说明:读取自定义JM兼容的量化矩阵文件,无视任何以

--cqm开头的参数

范例:--cqm "mycqm"--cqm4 Set all 4x4 quant matrices Takes a comma-separated list of 16 integers.

说明:设定所有4x4量化矩阵,它是一张以逗号分割的16个整数的表

范例:--cqm

"16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16"--cqm8 Set all 8x8 quant matrices

Takes a comma-separated list of 64 integers.

说明:设定所有8x8量化矩阵,它是一张以逗号分割的64个整数的表

范例:参考--cqm4--cqm4i, --cqm4p, --cqm8i, --cqm8p

Set both luma and chroma quant matrices

说明:设定luma与chroma的量化矩阵

范例:参考--cqm4--cqm4iy, --cqm4ic, --cqm4py, --cqm4pc Set individual quant matrices

说明:单独设定量化矩阵

范例:参考--cqm4Video Usability Info (Annex E):

The VUI settings are not used by the encoder but are

merely suggestions to

the playback equipment. See doc/vui.txt for details. Use at your own risk.

视频可用性信息:

VUI设置在编码的时候不会用到,它仅仅作用于回放设备。详情查看doc/vui.txt.由此带来的风险由使用者自己承

担.--overscan Specify crop overscan setting ["undef"]

- undef, show, crop

说明:指定切边过扫描设定,默认"undef"

- undef, show, crop

范例:--overscan "undef"--videoformat Specify video format ["undef"]

- component, pal, ntsc, secam, mac, undef

说明:指定视频格式,默认"undef"

- component, pal, ntsc, secam, mac, undef

范例:--videoformat "undef"--fullrange Specify full range samples setting ["off"]

- off, on

说明:指定颜色全范围样本设置,默认"off"

- off,on

范例:--fullrange "off"--colorprim Specify color primaries ["undef"]

- undef, bt709, bt470m, bt470bg

smpte170m, smpte240m, film

说明:指定原色,默认"undef"

- undef, bt709, bt470m, bt470bg

smpte170m, smpte240m, film

范例:--colorprim "bt470bg"--transfer Specify transfer characteristics ["undef"]

- undef, bt709, bt470m, bt470bg, linear,

log100, log316, smpte170m, smpte240m

说明:指定转换特征,默认"undef"

- undef, bt709, bt470m, bt470bg, linear,

log100, log316, smpte170m, smpte240m

范例:--transfer "undef"--colormatrix Specify color matrix setting ["undef"]

- undef, bt709, fcc, bt470bg

smpte170m, smpte240m, GBR, YCgCo

说明:指定颜色矩阵,默认"undef"

- undef, bt709, bt470m, bt470bg, linear,

log100, log316, smpte170m, smpte240m

范例:--colormatrix "undef"--chromaloc Specify chroma sample location (0 to 5) [0]

说明:指定chroma sample location,源为mpeg2与mpeg4

时保持默认,源为mpeg1时设为1,范围为0~5,默认0 范例:--chromaloc 0——————————————————————————————————————Input/Output:

输入/输出:-o, --output Specify output file

说明:指定输出文件

范例:--output output.mp4--sar width:height Specify Sample Aspect Ratio

说明:指定sar,sar的详细解释看这里

https://www.doczj.com/doc/fc16729128.html,/thread-572-1-1.html

范例:--sar 40:33--fps Specify framerate

说明:指定视频的帧率

推荐值:默认

范例:--fps 29.97--seek First frame to encode

说明:指定编码起始帧,此帧之前的帧将被抛弃

范例:--seek 100--frames Maximum number of frames to encode

说明:指定编码总帧数

范例:--frames 200--level Specify level (as defined by Annex A)

说明:指定level,如无特别需要,尽量让level处于4.1以下

qaac 2.15命令行参数

qaac 2.15 Usage: qaac [options] infiles.... "-" as infile means stdin. On ADTS/WAV output mode, "-" as outfile means stdout. Main options: --formats Show available AAC formats and exit -a, --abr AAC ABR mode / bitrate -V, --tvbr AAC True VBR mode / quality [0-127] -v, --cvbr AAC Constrained VBR mode / bitrate -c, --cbr AAC CBR mode / bitrate For -a, -v, -c, "0" as bitrate means "highest". Highest bitrate available is automatically chosen. For LC, default is -V90 For HE, default is -v0 --he HE AAC mode (TVBR is not available) -q, --quality AAC encoding Quality [0-2] --adts ADTS output (AAC only) -A, --alac ALAC encoding mode -d Output directory. Default is current working dir. --check Show library versions and exit. -D, --decode Wave output mode. -r, --rate keep: output sampling rate will be same as input if possible. auto: output sampling rate will be automatically chosen by encoder. n: desired output sampling rate in Hz. --lowpass Specify lowpass filter cut-off frequency in Hz. Use this when you want lower cut-off than Apple default. -b, --bits-per-sample Bits per sample of output (for WAV/ALAC only) --no-dither Turn off dither when quantizing to lower bit depth. --gain Adjust gain by f dB. Use negative value to decrese gain, when you want to avoid clipping introduced by DSP. -N, --normalize Normalize (works in two pass. generates HUGE tempfile for large input) --delay <[[hh:]mm:]ss[.ss..]|ns> Specify delay either by time or number of samples. When positive value is given, prepend silence at the begining to achieve delay of specified amount.

ffmpeg编译、使用与常见问题

FFMPEG编译、使用与常见问题 一. Linux下FFMPEG的安装与测试 (1) 二. FFMPEG编译中出现的一些问题与解决方法 (4) 三. FFMpeg简介及命令选项参数 (8) 四. FFMPEG与x264的编译 (13) 一.Linux下FFMPEG的安装与测试 a. 先装mp3在linux下的包:lame-3.97.tar.gz; tar -xvzf lame-3.97.tar.gz; cd lame-3.97; ./configure --enable-shared --prefix=/usr/; make; make install; b. 支持Ogg Vorbis: as4自带相应的rpm包,你可以安装一下如下rpm包: libvorbis, libvorbis-devel,libogg, libogg-devel 一般情况下as4都会安装 c. 支持xvid x264,现在最流行的两种高质量的压缩格式 xvid的编译安装 wget https://www.doczj.com/doc/fc16729128.html,/downloads/xvidcore-1.1.0.tar.gz tar zvxf xvidcore-1.1.0.tar.gz cd xvidcore-1.1.2/build/generic ./configure --prefix=/usr --enable-shared make make install x264的获取用git: git clone git://https://www.doczj.com/doc/fc16729128.html,/x264.git cd x264 ./configure --prefix=/usr --enable-shared make make install3 d. AC3和dts编码的支持

Locust命令行参数详解

Locust命令行参数详解 -h, --help 查看帮助 -H HOST, --host=HOST 被测试的主机地址,格式:http://10.21.32.33 --web-host=WEB_HOST Locust Web 页面的主机地址,默认为本机 -P PORT, --port=PORT, --web-port=PORT 被测试主机端口,默认8089 -f LOCUSTFILE, --locustfile=LOCUSTFILE 指定运行Locust 性能测试文件,默认为: locustfile.py --csv=CSVFILEBASE, --csv-base-name=CSVFILEBASE 以CSV格式存储当前请求测试数据 --master 分布式模式使用,指定当前节点为master 节点 --slave 分布式模式使用,指定当前节点为slave节点 --master-host=MASTER_HOST 分布式模式运行,设置master节点的主机或IP地址,只在与slave节点一起运行时使用,默认为:127.0.0.1 --master-port=MASTER_PORT 分布式模式运行,设置master节点的端口号,只在与slave节点一起运行时使用,默认为:5557。注意,slave节点也将连接到这个端口上的master节点 --master-bind-host=MASTER_BIND_HOST 绑定Locust的主机名,只有使用master参数时可用,默认为* --master-bind-port=MASTER_BIND_PORT 绑定Locust的端口,只有使用master参数时可用,默认为5557。注意Locust将使用这个端口,所以默认情况master节点将绑定到5557和5558

ffmpeg开发指南(使用 libavformat 和 libavcodec)

ffmpeg开发指南(使用libavformat 和libavcodec) ffmpeg开发指南(使用libavformat 和libavcodec) ffmpeg开发指南(使用libavformat 和libavcodec)Ffmpeg 中的Libavformat 和libavcodec库是访问大多数视频文件格式的一个很好的方法。不幸的是,在开发您自己的程序时,这套库基本上没有提供什么实际的文档可以用来作为参考(至少我没有找到任何文档),并且它的例程也并没有太多的帮助。这种情况意味着,当我在最近某个项目中需要用到libavformat/libavcodec 库时,需要作很多试验来搞清楚怎样使用它们。这里是我所学习的--希望我做的这些能够帮助一些人,以免他们重蹈我的覆辙,作同样的试验,遇到同样的错误。你还可以从这里下载一个demo程序。我将要公开的这部分代码需要0.4.8 版本的ffmpeg库中的 libavformat/libavcodec 的支持(我正在写最新版本)。如果您发现以后的版本与我写的程序不能兼容,请告知我。在这个文档里,我仅仅涉及到如何从文件中读入视频流;音频流使用几乎同样的方法可以工作的很好,不过,我并没有实际使用过它们,所以,我没于办法提供任何示例代码。或许您会觉得奇怪,为什么需要两个库文件libavformat 和libavcodec :许多视频文件格式(AVI就是一个最好的例子)

实际上并没有明确指出应该使用哪种编码来解析音频和视 频数据;它们只是定义了音频流和视频流(或者,有可能是多个音频视频流)如何被绑定在一个文件里面。这就是为什么有时候,当你打开了一个AVI文件时,你只能听到声音,却不能看到图象--因为你的系统没有安装合适的视频解 码器。所以,libavformat 用来处理解析视频文件并将包含在其中的流分离出来,而libavcodec 则处理原始音频和视频流的解码。打开视频文件: 首先第一件事情--让我们来看看怎样打开一个视频文件 并从中得到流。我们要做的第一件事情就是初始化libavformat/libavcodec:av_register_all(); 这一步注册库中含有的所有可用的文件格式和编码器,这样当打开一个文件时,它们才能够自动选择相应的文件格式和编码器。要注意你只需调用一次av_register_all(),所以,尽可能的在你的初始代码中使用它。如果你愿意,你可以仅仅注册个人的文件格式和编码,不过,通常你不得不这么做却没有什么原因。下一步,打开文件: AVFormatContext *pFormatCtx;

fastcopy命令行参数解释

fastcopy命令行参数解释 2011-06-17 16:05 fastcopy是一款复制删除文件的工具,为什么要用它,因为他比系统的复制删除要快,特别是文件超多,超大的情况下. FASTCOPY可以在WINDOWS下使用,也可以在DOS下运行命令 下面是FASTCOPY命令行方式: fastcopy.exe [/参数] file1 file2 ... [/to=dest_dir] 基本参数: /cmd=(noexist_only|diff|update|sync|force_copy|move|delete) noexist_only 复制-如重名,则不复制 diff 复制-如重名,则公复制大小与时间不同的文件 update 复制-如重名,则复制较新的源文件 sync 同步-如重名,则复制大小与时间不同的文件 force_copy 复制-覆盖重名文件 move 移动-覆盖重名文件并强行删除源文件 delete 删除-强行删除指定的文件与目录 /auto_close 拷贝结束后,自动关闭 /force_close 如果拷贝结束后,发生错误,也强行关闭 /open_window 显示Fastcopy窗口界面 /estimate 预测拷贝完成时间 /no_exec 对Fastcopy窗口界面设置参数,但是不执行 /no_confirm_del 当用/delete参数时,不显示确认界面 /error_stop 发生错误时中止动作(在/error_stop=FALSE抑制)

/bufsize=N(MB) 用MB单位来指定缓冲器大小 /speed=(full|autoslow|9-1(90%-10%)|suspend) 速度限制 /log 输出记录文件(fastcopy.log) (在/log=FALSE抑制) /skip_empty_dir 启用过滤,不拷贝空文件夹(在/skip_empty_dir=FALSE抑制) /job=任务名称执行指定的任务 /force_start 在其他的FastCopy拷贝,并且正执行的时候,执行立即也(在/force_start=FALSE抑制) /disk_mode=(auto|same|diff) 指定自动/恒等性/其他HDD方式。(债务不履行声明:) auto) /include="..." 指定Include过滤器 /exclude="..." 指定Exclude过滤器 /overwrite_del 在删除文件之前,删掉方式时,重新取名给重复&,使复原无效(在/overwrite_del=FALSE抑制) /acl 拷贝存取支配清单(ACL)(只NTFS有效)(在/acl=FALSE抑制) /stream 拷贝副其次线流(只NTFS有效)(在/stream=FALSE抑制) /junction 复制junction·mount point(不是属下)junction·mount point自己(/junction=FALSE 拷贝属下) /symlink 用象征性连接(而不是本质)拷贝象征性连接其本身(在/symlink=FALSE 拷贝本质) [/to=dest_dir] 目标磁盘 fastcopy.exe [/options] file1 file2 ... [/to=dest_dir] Please use space character(' ') as separator(not semicolon). If filename contains space character, please enclose with dobule quotation marks. Ex) fastopy.exe C:\Windows "C:\Program Files" /to="D:\Backup Folder\" 使用"做为分隔符 c:\Progra~1\FastCopy\FastCopy.exe /cmd=sync /auto_close /open_window "\\ztsv-xs\e\网络游戏\永恒之塔" /to="e:\games\online\"

ffmpeg之参数详解29

本文讲述参数详解 1. ffmpeg.exe -i F:\闪客之家\闪客之 歌.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\11.flv ffmpe g -i F:\01.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\tes t.flv 使用-ss参数作用(time_off set the start time offset),可以从指定时间点开始转换任务。如: 转换文件格式的同时抓缩微图: ffmpeg -i "test.avi " -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg ' 对已有flv抓图: ffmpeg -i "test.flv " -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg ' -ss后跟的时间单位为秒Ffmpeg转换命令 ffmpeg -y -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 17 6x144 -acodec aac -ac 2 -ar 22500 -ab 24 -f 3gp test.3gp 或者 ffmpeg -y -i test.mpeg -ac 1 -acodec amr_nb -ar 8000 -s 176x144 -b 128 -r 15 test.3gp ffmpeg参数设定解说 -bitexact 使用标准比特率 -vcodec xvid 使用xvid压缩 -s 320x240 指定分辨率 -r 29.97 桢速率(可以改,确认非标准桢率会导致音画不同步,所以只能设定为15或者29.97) 画面部分,选其一 -b <比特率> 指定压缩比特率,似乎ffmpeg是自动VBR的,指定了就大概是平均比特率,比如768,1500这样的就是原来默认项目中有的 -qscale <数值> 以<数值> 质量为基础的VBR,取值0.01-255,约小质量越好 -qmin <数值> 设定最小质量,与-qmax(设定最大质量)共用,比如-qmin 10 -qmax 31 -sameq 使用和源同样的质量声音部分 -acodec aac 设定声音编码 -ac <数值> 设定声道数,1就是单声道,2就是立体声,转换单声道的TVrip可以用1(节省一半容量),高品质的DVDrip就可以用2 -ar <采样率> 设定声音采样率,PSP只认24000 -ab <比特率> 设定声音比特率,前面-ac设为立体声时要以一半比特率来设置,比如192kbps的就设成96,转换君默认比特率都较小,要听到较高品质声音的话建议设到160kbps(80)以上 -vol <百分比> 设定音量,某些DVDrip的AC3轨音量极小,转换时可以用这个提高音量,比如200就是原来的2倍这样,要得到一个高画质音质低容量的MP4的话,首先画面最好不要用固定比特率,而用VBR参数让程序自己去判断,而音质参数可以在原来的基础上提升一点,听起来要舒服很多,也不会太大(看情况调整例子:ffmpeg -y -i "1.avi " -title "Test

c语言中命令行参数argc,argv

main( int argc, char ** argv ) argv:指针的指针 argc:整数 char **argv or char *argv[] or char argv[][] 为了能形象的说明这两个参数的含义,我们先用一个实例来进行讲解: 假设程序的名称为test,当只输入test,则由操作系统传来的参数为: argc = 1,表示只有一程序名称; argc只有一个元素,argv[0]指向输入的程序路径及名称:./ test 当输入test para_1,有一个参数,则由操作系统传来的参数为: argc = 2,表示除了程序名外还有一个参数; argv[0]指向输入的程序路径及名称; argv[1]指向参数para_1字符串 当输入test para_1 para_2 有2个参数,则由操作系统传来的参数为: argc = 3,表示除了程序名外还有两个参数; argv[0]指向输入的程序路径及名称; argv[1]指向参数para_1字符串; argv[2]指向参数para_2字符串; 以此类推……………… void main( int argc, char *argv[] ) char *argv[]: argv是一个指针数组,元素个数是argc,存放的是指向每一个参数

的指针,第一个元素即argv[0]为程序运行的全路径名,从二个元素(argv[1])开始,是每一个参数的名称,最后一个元素为NULL。总的来说,即: * argv: 字符串数组 argv[0] 为程序运行的全路径名 argv[1] 为执行程序名后的第一个字符串; argv[2] 为执行程序名后的第二个字符串; ... argv[argc]为NULL。 int argc:表示argv的大小,是实际参数个数+1,其中+1是因为argv[0]是编译后的可执行文件名 main() 参数: Turbo C2.0启动时总是把argc、argv、env(存放环境变量)这三个参数传递给main()函数, 可以在用户程序中说明(或不说明)它们, 如果说明了部分(或全部)参数, 它们就成为main()子程序的局部变量。 请注意: 一旦想说明这些参数, 则必须按argc, argv, env 的顺序, 如以下的例子: main() main(int argc) main(int argc, char *argv[]) main(int argc, char *argv[], char *env[]) 其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不 用argv[]的情况。 以下提供一样例程序EXAMPLE.EXE, 演示如何在main()函数中使用三个参数: /*program name EXAMPLE.EXE*/ #i nclude

ffmpeg用法

ffmpeg.exe -i F:\闪客之家\闪客之歌.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\11.flv ffmpeg -i F:\01.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flv 使用-ss参数作用(time_off set the start time offset),可以从指定时间点开始转换任务。如: 转换文件格式的同时抓缩微图: ffmpeg -i "test.avi " -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg ' 对已有flv抓图: ffmpeg -i "test.flv " -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg ' -ss后跟的时间单位为秒Ffmpeg转换命令 ffmpeg -y -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 176x1 44 -acodec aac -ac 2 -ar 22500 -ab 24 -f 3gp test.3gp 或者 ffmpeg -y -i test.mpeg -ac 1 -acodec amr_nb -ar 8000 -s 176x144 -b 128 -r 15 test.3gp ffmpeg参数设定解说 -bitexact 使用标准比特率 -vcodec xvid 使用xvid压缩 -s 320x240 指定分辨率 -r 29.97 桢速率(可以改,确认非标准桢率会导致音画不同步,所以只能设定为15或者29.97) 画面部分,选其一 -b <比特率> 指定压缩比特率,似乎ffmpeg是自动VBR的,指定了就大概是平均比特率,比如768,1500这样的就是原来默认项目中有的 -qscale <数值> 以<数值> 质量为基础的VBR,取值0.01-255,约小质量越好 -qmin <数值> 设定最小质量,与-qmax(设定最大质量)共用,比如-qmin 10 -qmax 31 -sameq 使用和源同样的质量声音部分 -acodec aac 设定声音编码 -ac <数值> 设定声道数,1就是单声道,2就是立体声,转换单声道的TV rip可以用1(节省一半容量),高品质的DVDrip就可以用2 -ar <采样率> 设定声音采样率,PSP只认24000 -ab <比特率> 设定声音比特率,前面-ac设为立体声时要以一半比特率来设置,比如192kbps的就设成96,转换君默认比特率都较小,要听到较高品质声音的话建议设到160kbps (80)以上 -vol <百分比> 设定音量,某些DVDrip的AC3轨音量极小,转换时可以用这个提高音量,比如200就是原来的2倍这样,要得到一个高画质音质低容量的MP4的话,首先画面最好不要用固定比特率,而用VBR参数让程序自己去判断,而音质参数可以在原来的基础上提升一点,听起来要舒服很多,也不会太大(看情况调整例子:ffmpeg -y -i "1.avi " -title "Test " -vcodec xvid -s 368x208 -r 29.97 -b 1500 -acodec aac -ac 2 -ar 24000 -ab 128 -vol 200 -f psp -muxvb 768 "1.*** "

Chrome 的可用命令行参数

谷歌浏览器Google Chrome 的可用命令行参数 -allow-all-activex 允許所有的ActiveX -always-enable-dev-tools 始终启用-DEV-工具 -app 应用程序 -assert-test断言测试 -automation-channel 自动化通道 -channel 渠道 -crash-test 碰撞试验 -debug-children 调试儿童 -debug-print 调试打印 disable-accelerated-compositing 禁用加速 disable-winsta 禁用渲染备用窗口 disable-application-cache 禁用应用程序缓存 disable-apps 禁用应用程序 disable-audio 禁用音频 disable-auth-negotiate-cname-lookup disable-background-networking 禁用后台联网 disable-backing-store-limit 禁用存储数量限制,可以防止在打开大量的标签窗口时,页面出现闪烁的现象。 disable-byte-range-support 禁用缓存的支持字节范围 disable-click-to-play 禁用点击播放 disable-connect-backup-jobs 如果超过指定的时间,则禁用建立备份的TCP连接disable-content-prefetch 禁用内容预取 disable-custom-jumplist 禁用Windows 7的JumpList自定义功能 disable-databases 禁用HTML5的数据库支持 disable-desktop-notifications 禁用桌面通知(默认窗口启用) disable-dev-tools 禁用所有页面的渲染检测 disable-device-orientation 禁用设备向导 disable-webgl 禁用WebGL实验功能 disable-extensions 禁用扩展 disable-extensions-file-access-check 禁用扩展文件访问检查 disable-geolocation 禁用地理位置的JavaScript API disable-glsl-translator 禁用GLSL翻译 disable-hang-monitor 禁止任务管理器监视功能 disable-internal-flash 禁用内部的Flash Player disable-ipv6 禁用IPv6 disable-preconnect 禁用TCP/IP协议 disable-javascript 禁用JS disable-java 禁用Java disable-local-storage 禁用本地存储 disable-logging 禁用调试记录 disable-new-tab-first-run 禁用新标签显示的通知 disable-outdated-plugins 禁用过时的插件

ffmpeg命令详解

ffmpeg命令详解 一、ffmpeg命令详解 ffmpeg非常强大,轻松几条命令就可以完成你的工作。 把darkdoor.[001-100].jpg序列帧和001.mp3音频文件利用mpeg4编码方式合成视频文件darkdoor.avi: $ ffmpeg -i 001.mp3 -i darkdoor.%3d.jpg -s 1024x768 -author skypp -vcodec mpeg4 darkdoor.avi ffmpeg还支持mov格式: $ ffmpeg -i darkdoor.%3d.jpg darkdoor.mov 要查看你的ffmpeg支持哪些格式,可以用如下命令: $ ffmpeg -formats | less 还可以把视频文件导出成jpg序列帧: $ ffmpeg -i bc-cinematic-en.avi example.%d.jpg debian下安装ffmpeg很简单: #apt-get install ffmpeg ###################################### 下面是转来的使用说明,慢慢研究吧,嘿嘿 ###################################### ffmpeg使用语法 ffmpeg使用语法: ffmpeg [[options][`-i' input_file]]... {[options] output_file}... 如果没有输入文件,那么视音频捕捉就会起作用。 作为通用的规则,选项一般用于下一个特定的文件。如果你给–b 64选项,改选会设置下一个视频速率。对于原始输入文件,格式选项可能是需要的。 缺省情况下,ffmpeg试图尽可能的无损转换,采用与输入同样的音频视频参数来输出。3.选项 a) 通用选项

中文版MeGUI的x264编码配置详细解读

本帖最后由宁战网络于2012-7-30 14:58 编辑 中文版MeGUI的x264编码配置详细解读 有人向往和膜拜科班出身的,这个我同意,但若无视艹根的存在,那么我很生气,往往是民间高手如林,自己何必妄自菲薄。一早我也说过不敢在压制的方向前进,那是因为这是个苦力不讨好的工作,有空我还不如多看看美女…… 只要关注,网络上的东西随处可以学习到,就对这个x264编码配置来说,网络上的资源多如脚毛。我嫉妒恨的是科班出身的总会先天就有优势,民间人士门要蛋定,不要比,不要计较,自己玩自己的,不用理正统不正统。我们的优势在于,科班人士再厉害他也没有拍电影也没做导演也没潜了哪个女优,嘎嘎,扯远了。 本文主要讲解x264编码的设置问题,是对应本人推荐的中文版MeGUI所做的一次详细配置论述,请用英文版的英雄路过不要取笑,也应该不要盲目的路过。我还是传统的图文方式来一起研究,当然我说的不一定对,那是因为网络上也是这么教的,可能一直都错着我也用错的来说,在这次解释中,我会用一些自己理解的来说话,也许更能让民间人士理解。 普及一下别的知识,在各大影视论坛基本不允许发布以RMVB格式的影片,你只要用上x264的编码就意味着你和RMVB说88了。民间人士普遍认为RMVB体积小画面清晰,但科班的人士会用理论的知识告诉你,同样的片源和同样的码率下,x264的mkv绝对比rmvb画质更好,文件更小。这是为什么?你要问这是为什么?那是因为x264的编码机制发挥了无法想像的作用,你只要实践了就会明白这是真的,打住不说了反正就像磁带被光盘取代,windows98被xp顶上。 科班厉害之处是懂得比较多,早前的x264.exe是命令参数实现压制的,DOS级的工具很怕黑的就不要尝试了。GUI,是图形界面操作,适合民间高手使用。曾被科班出身的嘲笑过,说使用MeGU压制的都是水货,嘎嘎,我笑笑不能回答。科班告诉我就这GUI不是只有Me 的,这下你明白没?像ripbot、staxrip 等都是GUI……行了行了,民间人士也不用惭愧,至少MeGUI能自动更新编码,还有汉化版可以用,batch的是高手,不和他们一起玩! 安装MeGUI简体中文版(请回顾本人以前的大作,这里略去几百万字……)仿图挂,可下载 中文版MeGUI的x264编码配置详细解读或是到QQ空间查阅软件下载转到论坛页面以前的中文版本MeGUI太不专业了,直到你碰到我这个民间人士才集合了比较强大的中文版MeGUI,不要怕出错,出错不是你的错。等弄得差不多了可以还原成英文版更新你的编码,更上一层楼,英盲也用英文版,没人敢笑你。 正题: 在MeGUI用内置工具AVS创建一个简单脚本(这里暂时不介绍AVS的各种滤镜使用参数),要求在点击DirectShowsource(手工、专业)能弹出视频预览窗就可以保存AVS了。此时内建的AVS会自动加载到MeGUI 主界面,进入本文主题压制参数x264配置。

linux下安装FFMPEG全纪录

怎样安装ffmpeg? 1,cd /usr/local/src 下载最新版本的ffmpeg: svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg 2,cd ffmpeg ./configure make && make install 以上是安装不带任何解码库的ffmpeg。 使用ffmpeg命令进行测试安装是否成功。例如: ffmpeg --help II,要加入则在./configure后面加上选项,前提是已经编译安装了这种编码库。 [root@ip-208-109-221-163 ffmpeg]# ffmpeg --help ffmpeg: error while loading shared libraries: libavdevice.so.52: cannot open shared object file: No such file or directory 找不到libavdevice.so.52库。 解决方案:(成功解决问题的方案) 首先到/usr/local/lib/目录下去查看是否有libavdevice.so.52,然后设置环境变量:export LD_LIBRARY_PA TH=/usr/local/lib/ 注意:这种方案经验证,关闭终端再打开终端,这个环境变量就失效了,也就是说只对当前终端有效

最终解决方案: //********************************************** 因为找不到库文件。编辑/etc/ld.so.conf,加入一行: /usr/local/lib 执行ldconfig命令即可。 //************************************** 然后添加软链接。 ln -s /usr/local/lib/libavdevice.so.52 /usr/lib/libavdevice.so.52 安装成功后,测试: ffmpe g -i /home/admn/public_html/ConvertVedioT est/rjmj.mpeg -ab 56 -ar 22050 -b 500 -r 15 -qscale 4 -s 640*480 rjmj.flv 转换成功。 等等。 ln -s /usr/local/lib/libavformat.so.50 /usr/lib/libavformat.so.50 ln -s /usr/local/lib/libavcodec.so.51 /usr/lib/libavcodec.so.51 ln -s /usr/local/lib/libavutil.so.49 /usr/lib/libavutil.so.49 ln -s /usr/local/lib/libmp3lame.so.0 /usr/lib/libmp3lame.so.0 ln -s /usr/local/lib/libavformat.so.51 /usr/lib/libavformat.so.51

ffmpeg 常用命令汇总

ffmpeg 常用命令汇总 2016-06-15 09:11 17116人阅读评论(0)收藏举报 (经常用到ffmpeg 做一些视频数据的处理转换等,用来做测试,今天总结了一下, 参考了网上部分朋友的经验,一起在这里汇总了一下,有需要的朋友可以收藏测试 一下,有问题欢迎在下面回帖交流,谢谢;by ternence.hsu) 1、ffmpeg使用语法 命令格式: ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件] ffmpeg [[options][`-i' input_file]]... {[options] output_file}... 1、参数选项: (1) -an: 去掉音频 (2) -acodec: 音频选项,一般后面加copy表示拷贝 (3) -vcodec:视频选项,一般后面加copy表示拷贝 2、格式: (1) h264: 表示输出的是h264的视频裸流 (2) mp4: 表示输出的是mp4的视频 (3)mpegts: 表示ts视频流 如果没有输入文件,那么视音频捕捉(只在Linux下有效,因为Linux下把音视频设备当作文件句柄选项一般用于下一个特定的文件。如果你给–b 64选项,改选会设置下一个视频速率。对于原始输入下,ffmpeg试图尽可能的无损转换,采用与输入同样的音频视频参数来输出。(by ternence.hsu) 2、视频转换 H264视频转ts视频流 ffmpeg -i test.h264 -vcodec copy -f mpegts test.ts H264视频转mp4 ffmpeg -i test.h264 -vcodec copy -f mp4 test.mp4 ts视频转mp4 ffmpeg -i test.ts -acodec copy -vcodec copy -f mp4 test.mp4 mp4视频转flv ffmpeg -i test.mp4 -acodec copy -vcodec copy -f flv test.flv

CMD命令行参数

CMD命令行参数 CMD命令 命令提示符(CMD)是在OS / 2 ,Windows CE与Windows NT平台为基础的操作系统(包括Windows 2000和XP中,Vista中,和Server 2003 )下的“MS-DOS 方式”。 目录 命令简介 运行操作 命令大全 操作详解 编辑本段命令简介 cmd是command的缩写.即命令行。 虽然随着计算机产业的发展,Windows 操作系统的应用越来越广泛,DOS 面临着被淘汰的命运,但是因为它运行安全、稳定,有的用户还在使用,所以一般Windows 的各种版本都与其兼容,用户可以在Windows 系统下运行DOS,中文版Windows XP 中的命令提示符进一步提高了与DOS 下操作命令的兼容性,用户可以在命令提示符直接输入中文调用文件。在9x系统下输入command就可以打开命令行.而在NT系统上可以输入cmd来打开,在windows2000后被cmd替代,利用CMD命令查询系统的信息或者是判断网络的好坏。右图为CMD启动后的界面。 编辑本段运行操作 CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本、文件系统版本) 编辑本段命令大全 1. calc-----------启动计算器 2.certmgr.msc----证书管理实用程序 3.charmap--------启动字符映射表 5. chkdsk.exe-----Chkdsk磁盘检查 6. ciadv.msc------索引服务程序 7. cleanmgr-------垃圾整理 8. cliconfg-------SQL SERVER 客户端网络实用程序 9. Clipbrd--------剪贴板查看器 10. cmd.exe--------CMD命令提示符 11. compmgmt.msc---计算机管理 12. conf-----------启动netmeeting 13. dcomcnfg-------打开系统组件服务 14. ddeshare-------打开DDE共享设置

ffmpeg学习笔记

准备工作: 1.登录https://www.doczj.com/doc/fc16729128.html,/builds/下载对应的开发版本 如xp32位系统下载FFmpeg 32-bit Dev Versions与FFmpeg 32-bit Shared Versions 中dev版本里有头文件与静态lib库,在开发的时候包含进工程,share版本里有程序运行发布时候需要的dll动态库。 2.在vs2010中配置inclue与lib 工程→属性→配置属性→c/c++→常规→附加包含目录→添加dev版本中的include路径 工程→属性→配置属性→链接器→常规→附加库目录→添加dev版本中的lib 路径 工程→属性→配置属性→链接器→输入→附加依赖项→添加dev版本中的lib 文件,具体包括:avcodec.lib,avformat.lib,avdevice.lib,avfilter.lib,avutil.lib,postproc.lib,swresample.lib,swscale.lib 3.在工程中引用ffmpeg头文件,因为ffmepeg是纯C程序,因此,在C++中包含其头文件需要加上extern “C”标识符,如: extern"C" { #include"libavformat/avformat.h" #include"libavcodec/avcodec.h" } 4.工程调试运行时需要将dll添加至工程目录,具体包括:avcodec-5 5.dll, avdevice-55.dll,avfilter-3.dll,avformat-55.dll,avutil-52.dll, postproc-52.dll,swresample-0.dll,swscale-2.dll 5.程序编译会报无法打开包括文件:“inttypes.h”: No such file or directory 原因是因为VS2010不支持inttypes.h。 解决方法删除,并在之前添加如下代码

ffmpeg时间戳

FFmpeg里有两种时间戳:DTS(Decoding Time Stamp)和PTS(Presentation Time Stamp)。顾名思义,前者是解码的时间,后者是显示的时间。要仔细理解这两个概念,需要先了解FFmpeg中的packet和frame的概念。 FFmpeg中用AVPacket结构体来描述解码前或编码后的压缩包,用AVFrame结构体来描述解码后或编码前的信号帧。对于视频来说,AVFrame就是视频的一帧图像。这帧图像什么时候显示给用户,就取决于它的PTS。DTS是AVPacket里的一个成员,表示这个压缩包应该什么时候被解码。如果视频里各帧的编码是按输入顺序(也就是显示顺序)依次进行的,那么解码和显示时间应该是一致的。可事实上,在大多数编解码标准(如H.264或HEVC)中,编码顺序和输入顺序并不一致。于是才会需要PTS和DTS这两种不同的时间戳。 FFmpeg里有两种时间戳:DTS(Decoding Time Stamp)和PTS(Presentation Time Stamp)。顾名思义,前者是解码的时间,后者是显示的时间。要仔细理解这两个概念,需要先了解FFmpeg中的packet和frame的概念。 FFmpeg中用AVPacket结构体来描述解码前或编码后的压缩包,用AVFrame结构体来描述解码后或编码前的信号帧。对于视频来说,AVFrame就是视频的一帧图像。这帧图像什么时候显示给用户,就取决于它的PTS。DTS是AVPacket里的一个成员,表示这个压缩包应该什么时候被解码。如果视频里各帧的编码是按输入顺序(也就是显示顺序)依次进行的,那么解码和显示时间应该是一致的。可事实上,在大多数编解码标准(如H.264或HEVC)中,编码顺序和输入顺序并不一致。于是才会需要PTS和DTS这两种不同的时间戳。 视频的显示和存放原理 对于一个电影,帧是这样来显示的:I B B P。现在我们需要在显示B帧之前知道P帧中的信息。因此,帧可能会按照这样的方式来存储:IPBB。这就是为什么我们会有一个解码时间戳和一个显示时间戳的原因。解码时间戳告诉我们什么时候需要解码,显示时间戳告诉我们什么时候需要显示。所以,在这种情况下,我们的流可以是这样的: PTS: 1 4 2 3 DTS: 1 2 3 4 Stream: I P B B 通常PTS和DTS只有在流中有B帧的时候会不同。 DTS和PTS 音频和视频流都有一些关于以多快速度和什么时间来播放它们的信息在里面。音频流有采样,视频流有每秒的帧率。然而,如果我们只是简单的通过数帧和乘以帧率的方式来同步视频,那么就很有可能会失去同步。于是作为一种补充,在流中的包有种叫做DTS(解码时间戳)和PTS(显示时间戳)的机制。为了这两个参数,你需要了解电影存放的方式。像MPEG等格式,使用被叫做B帧(B表示双向bidrectional)的方式。另外两种帧被

相关主题
文本预览
相关文档 最新文档