- 浏览: 676056 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
shappy1978:
自己踩死自己了,我还是有远见的嘛
该死的微软,该死的IE -
calosteward:
I know Zxing and shopsavvy, bot ...
[trans]COMPARISON OF MOBILE BARCODE SCANNERS -
qq690388648:
唉……四年前的Bug,现在还没改,Apache也有不足的地方啊 ...
POI解析Word表格备忘 -
shappy1978:
Now I get to say that every met ...
Jailbreak Detection on iOS -
hebeixiaolei:
你好,我想问一下,用poi如何往word文档里插入超链接呀!
POI读取Word文档总结
FFmpeg Documentation
Table of Contents
- 1. Synopsis
- 2. Description
- 3. Options
- 4. Tips
- 5. Examples
- 6. Expression Evaluation
- 7. Input Devices
- 8. Output Devices
- 9. Protocols
- 10. Bitstream Filters
- 11. Filtergraph description
- 12. Audio Filters
- 13. Audio Sources
- 14. Audio Sinks
-
15. Video Filters
- 15.1 blackframe
- 15.2 crop
- 15.3 cropdetect
- 15.4 drawbox
- 15.5 fifo
- 15.6 format
- 15.7 frei0r
- 15.8 gradfun
- 15.9 hflip
- 15.10 hqdn3d
- 15.11 noformat
- 15.12 null
- 15.13 ocv_smooth
- 15.14 overlay
- 15.15 pad
- 15.16 pixdesctest
- 15.17 scale
- 15.18 setpts
- 15.19 settb
- 15.20 slicify
- 15.21 transpose
- 15.22 unsharp
- 15.23 vflip
- 15.24 yadif
- 16. Video Sources
- 17. Video Sinks
FFmpeg Documentation
1. Synopsis
The generic syntax is:
ffmpeg [[infile options][`-i' infile]]... {[outfile options] outfile}...
2. Description
FFmpeg is a very fast video and audio converter. It can also grab from a live audio/video source.
The command line interface is designed to be intuitive, in the sense that FFmpeg tries to figure out all parameters that can possibly be derived automatically. You usually only have to specify the target bitrate you want.
FFmpeg can also convert from any sample rate to any other, and resize video on the fly with a high quality polyphase filter.
As a general rule, options are applied to the next specified file. Therefore, order is important, and you can have the same option on the command line multiple times. Each occurrence is then applied to the next input or output file.
* To set the video bitrate of the output file to 64kbit/s:
ffmpeg -i input.avi -b 64k output.avi
* To force the frame rate of the output file to 24 fps:
ffmpeg -i input.avi -r 24 output.avi
* To force the frame rate of the input file (valid for raw formats only) to 1 fps and the frame rate of the output file to 24 fps:
ffmpeg -r 1 -i input.m2v -r 24 output.avi
The format option may be needed for raw input files.
By default, FFmpeg tries to convert as losslessly as possible: It uses the same audio and video parameters for the outputs as the one specified for the inputs.
3. Options
All the numerical options, if not specified otherwise, accept in input a string representing a number, which may contain one of the International System number postfixes, for example 'K', 'M', 'G'. If 'i' is appended after the postfix, powers of 2 are used instead of powers of 10. The 'B' postfix multiplies the value for 8, and can be appended after another postfix or used alone. This allows using for example 'KB', 'MiB', 'G' and 'B' as postfix.
Options which do not take arguments are boolean options, and set the corresponding value to true. They can be set to false by prefixing with "no" the option name, for example using "-nofoo" in the commandline will set to false the boolean option with name "foo".
3.1 Generic options
These options are shared amongst the ff* tools.
3.2 Main options
hh:mm:ss[.xxx]
syntax is also supported.hh:mm:ss[.xxx]
syntax is also supported.[-]hh:mm:ss[.xxx]
syntax is also supported. This option affects all the input files that follow it. The offset is added to the timestamps of the input files. Specifying a positive offset means that the corresponding streams are delayed by 'offset' seconds.now|([(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH[:MM[:SS[.m...]]])|(HH[MM[SS[.m...]]]))[Z|z])If the value is "now" it takes the current time. Time is local time unless 'Z' or 'z' is appended, in which case it is interpreted as UTC. If the year-month-day part is not specified it takes the current year-month-day.
ffmpeg -i in.avi -metadata title="my title" out.flv
ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpgNevertheless you can specify additional options as long as you know they do not conflict with the standard, as in:
ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg
3.3 Video Options
ffmpeg -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2vIt is of little use elsewise.
copy
special value to tell that the raw codec data must be copied as is.ffmpeg -i foo.mov -vcodec libxvid -pass 1 -an -f rawvideo -y NUL ffmpeg -i foo.mov -vcodec libxvid -pass 1 -an -f rawvideo -y /dev/null
3.4 Advanced Video Options
ffmpeg -i src.ext -lmax 21*QP2LAMBDA dst.ext
tex^qComp
). When computing the rate control equation expression, besides the standard functions defined in the section "Expression Evaluation", the following functions are available:
ffmpeg -i h264.mp4 -vcodec copy -vbsf h264_mp4toannexb -an out.h264
3.5 Audio Options
copy
special value to specify that the raw codec data must be copied as is.-newaudio
(-acodec
, -ab
, etc..). Mapping will be done automatically, if the number of output streams is equal to the number of input streams, else it will pick the first one that matches. You can override the mapping using -map
as usual. Example:
ffmpeg -i file.mpg -vcodec copy -acodec ac3 -ab 384k test.mpg -acodec mp2 -ab 192k -newaudio
3.6 Advanced Audio options:
3.7 Subtitle options:
ffmpeg -i file.mov -an -vn -sbsf mov2textsub -scodec copy -f rawvideo sub.txt
3.8 Audio/Video grab options
3.9 Advanced options
ffmpeg -i in.ogg -map_meta_data 0:0,s0 out.mp3
ffmpeg -i infile -streamid 0:33 -streamid 1:36 out.ts
3.10 Preset files
A preset file contains a sequence of option=value pairs, one for each line, specifying a sequence of options which would be awkward to specify on the command line. Lines starting with the hash ('#') character are ignored and are used to provide comments. Check the `ffpresets' directory in the FFmpeg source tree for examples.
Preset files are specified with the vpre
, apre
, spre
, and fpre
options. The fpre
option takes the filename of the preset instead of a preset name as input and can be used for any kind of codec. For the vpre
, apre
, and spre
options, the options specified in a preset file are applied to the currently selected codec of the same type as the preset option.
The argument passed to the vpre
, apre
, and spre
preset options identifies the preset file to use according to the following rules:
First ffmpeg searches for a file named arg.ffpreset in the directories `$FFMPEG_DATADIR' (if set), and `$HOME/.ffmpeg', and in the datadir defined at configuration time (usually `PREFIX/share/ffmpeg') in that order. For example, if the argument is libx264-max
, it will search for the file `libx264-max.ffpreset'.
If no such file is found, then ffmpeg will search for a file named codec_name-arg.ffpreset in the above-mentioned directories, where codec_name is the name of the codec to which the preset file options will be applied. For example, if you select the video codec with -vcodec libx264
and use -vpre max
, then it will search for the file `libx264-max.ffpreset'.
4. Tips
- For streaming at very low bitrate application, use a low frame rate and a small GOP size. This is especially true for RealVideo where the Linux player does not seem to be very fast, so it can miss frames. An example is:
ffmpeg -g 3 -r 3 -t 10 -b 50k -s qcif -f rv10 /tmp/b.rm
- The parameter 'q' which is displayed while encoding is the current quantizer. The value 1 indicates that a very good quality could be achieved. The value 31 indicates the worst quality. If q=31 appears too often, it means that the encoder cannot compress enough to meet your bitrate. You must either increase the bitrate, decrease the frame rate or decrease the frame size.
- If your computer is not fast enough, you can speed up the compression at the expense of the compression ratio. You can use '-me zero' to speed up motion estimation, and '-intra' to disable motion estimation completely (you have only I-frames, which means it is about as good as JPEG compression).
- To have very low audio bitrates, reduce the sampling frequency (down to 22050 Hz for MPEG audio, 22050 or 11025 for AC-3).
- To have a constant quality (but a variable bitrate), use the option '-qscale n' when 'n' is between 1 (excellent quality) and 31 (worst quality).
- When converting video files, you can use the '-sameq' option which uses the same quality factor in the encoder as in the decoder. It allows almost lossless encoding.
5. Examples
5.1 Video and Audio grabbing
FFmpeg can grab video and audio from devices given that you specify the input format and device.
ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg
Note that you must activate the right video source and channel before launching FFmpeg with any TV viewer such as xawtv (http://linux.bytesex.org/xawtv/) by Gerd Knorr. You also have to set the audio recording levels correctly with a standard mixer.
5.2 X11 grabbing
FFmpeg can grab the X11 display.
ffmpeg -f x11grab -s cif -r 25 -i :0.0 /tmp/out.mpg
0.0 is display.screen number of your X11 server, same as the DISPLAY environment variable.
ffmpeg -f x11grab -s cif -r 25 -i :0.0+10,20 /tmp/out.mpg
0.0 is display.screen number of your X11 server, same as the DISPLAY environment variable. 10 is the x-offset and 20 the y-offset for the grabbing.
5.3 Video and Audio file format conversion
* FFmpeg can use any supported file format and protocol as input:
Examples:
* You can use YUV files as input:
ffmpeg -i /tmp/test%d.Y /tmp/out.mpg
It will use the files:
/tmp/test0.Y, /tmp/test0.U, /tmp/test0.V, /tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc...
The Y files use twice the resolution of the U and V files. They are raw files, without header. They can be generated by all decent video decoders. You must specify the size of the image with the `-s' option if FFmpeg cannot guess it.
* You can input from a raw YUV420P file:
ffmpeg -i /tmp/test.yuv /tmp/out.avi
test.yuv is a file containing raw YUV planar data. Each frame is composed of the Y plane followed by the U and V planes at half vertical and horizontal resolution.
* You can output to a raw YUV420P file:
ffmpeg -i mydivx.avi hugefile.yuv
* You can set several input files and output files:
ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg
Converts the audio file a.wav and the raw YUV video file a.yuv to MPEG file a.mpg.
* You can also do audio and video conversions at the same time:
ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2
Converts a.wav to MPEG audio at 22050 Hz sample rate.
* You can encode to several formats at the same time and define a mapping from input stream to output streams:
ffmpeg -i /tmp/a.wav -ab 64k /tmp/a.mp2 -ab 128k /tmp/b.mp2 -map 0:0 -map 0:0
Converts a.wav to a.mp2 at 64 kbits and to b.mp2 at 128 kbits. '-map file:index' specifies which input stream is used for each output stream, in the order of the definition of output streams.
* You can transcode decrypted VOBs:
ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800k -g 300 -bf 2 -acodec libmp3lame -ab 128k snatch.avi
This is a typical DVD ripping example; the input is a VOB file, the output an AVI file with MPEG-4 video and MP3 audio. Note that in this command we use B-frames so the MPEG-4 stream is DivX5 compatible, and GOP size is 300 which means one intra frame every 10 seconds for 29.97fps input video. Furthermore, the audio stream is MP3-encoded so you need to enable LAME support by passing --enable-libmp3lame
to configure. The mapping is particularly useful for DVD transcoding to get the desired audio language.
NOTE: To see the supported input formats, use ffmpeg -formats
.
* You can extract images from a video, or create a video from many images:
For extracting images from a video:
ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg
This will extract one video frame per second from the video and will output them in files named `foo-001.jpeg', `foo-002.jpeg', etc. Images will be rescaled to fit the new WxH values.
If you want to extract just a limited number of frames, you can use the above command in combination with the -vframes or -t option, or in combination with -ss to start extracting from a certain point in time.
For creating a video from many images:
ffmpeg -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi
The syntax foo-%03d.jpeg
specifies to use a decimal number composed of three digits padded with zeroes to express the sequence number. It is the same syntax supported by the C printf function, but only formats accepting a normal integer are suitable.
* You can put many streams of the same type in the output:
ffmpeg -i test1.avi -i test2.avi -vcodec copy -acodec copy -vcodec copy -acodec copy test12.avi -newvideo -newaudio
In addition to the first video and audio streams, the resulting output file `test12.avi' will contain the second video and the second audio stream found in the input streams list.
The -newvideo
, -newaudio
and -newsubtitle
options have to be specified immediately after the name of the output file to which you want to add them.
6. Expression Evaluation
When evaluating an arithemetic expression, FFmpeg uses an internal formula evaluator, implemented through the `libavutil/eval.h' interface.
An expression may contain unary, binary operators, constants, and functions.
Two expressions expr1 and expr2 can be combined to form another expression "expr1;expr2". expr1 and expr2 are evaluated in turn, and the new expression evaluates to the value of expr2.
The following binary operators are available: +
, -
, *
, /
, ^
.
The following unary operators are available: +
, -
.
The following functions are available:
Note that:
*
works like AND
+
works like OR
thus
if A then B else C
is equivalent to
A*B + not(A)*C
When A evaluates to either 1 or 0, that is the same as
A*B + eq(A,0)*C
In your C code, you can extend the list of unary and binary functions, and define recognized constants, so that they are available for your expressions.
The evaluator also recognizes the International System number postfixes. If 'i' is appended after the postfix, powers of 2 are used instead of powers of 10. The 'B' postfix multiplies the value for 8, and can be appended after another postfix or used alone. This allows using for example 'KB', 'MiB', 'G' and 'B' as postfix.
Follows the list of available International System postfixes, with indication of the corresponding powers of 10 and of 2.
7. Input Devices
Input devices are configured elements in FFmpeg which allow to access the data coming from a multimedia device attached to your system.
When you configure your FFmpeg build, all the supported input devices are enabled by default. You can list all available ones using the configure option "--list-indevs".
You can disable all the input devices using the configure option "--disable-indevs", and selectively enable an input device using the option "--enable-indev=INDEV", or you can disable a particular input device using the option "--disable-indev=INDEV".
The option "-formats" of the ff* tools will display the list of supported input devices (amongst the demuxers).
A description of the currently available input devices follows.
7.1 alsa
ALSA (Advanced Linux Sound Architecture) input device.
To enable this input device during configuration you need libasound installed on your system.
This device allows capturing from an ALSA device. The name of the device to capture has to be an ALSA card identifier.
An ALSA identifier has the syntax:
hw:CARD[,DEV[,SUBDEV]]
where the DEV and SUBDEV components are optional.
The three arguments (in order: CARD,DEV,SUBDEV) specify card number or identifier, device number and subdevice number (-1 means any).
To see the list of cards currently recognized by your system check the files `/proc/asound/cards' and `/proc/asound/devices'.
For example to capture with `ffmpeg' from an ALSA device with card id 0, you may run the command:
ffmpeg -f alsa -i hw:0 alsaout.wav
For more information see: http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html
7.2 bktr
BSD video input device.
7.3 dv1394
Linux DV 1394 input device.
7.4 jack
JACK input device.
To enable this input device during configuration you need libjack installed on your system.
A JACK input device creates one or more JACK writable clients, one for each audio channel, with name client_name:input_N, where client_name is the name provided by the application, and N is a number which identifies the channel. Each writable client will send the acquired data to the FFmpeg input device.
Once you have created one or more JACK readable clients, you need to connect them to one or more JACK writable clients.
To connect or disconnect JACK clients you can use the `jack_connect' and `jack_disconnect' programs, or do it through a graphical interface, for example with `qjackctl'.
To list the JACK clients and their properties you can invoke the command `jack_lsp'.
Follows an example which shows how to capture a JACK readable client with `ffmpeg'.
# Create a JACK writable client with name "ffmpeg". $ ffmpeg -f jack -i ffmpeg -y out.wav # Start the sample jack_metro readable client. $ jack_metro -b 120 -d 0.2 -f 4000 # List the current JACK clients. $ jack_lsp -c system:capture_1 system:capture_2 system:playback_1 system:playback_2 ffmpeg:input_1 metro:120_bpm # Connect metro to the ffmpeg writable client. $ jack_connect metro:120_bpm ffmpeg:input_1
For more information read: http://jackaudio.org/
7.5 libdc1394
IIDC1394 input device, based on libdc1394 and libraw1394.
font-family: Times; font-size: med
发表评论
发表评论
-
Xib Enhanced by XCode8
2016-12-05 17:02 668I have a solution: Open stor ... -
Script to Build Universal Lib
2016-11-30 11:06 668https://www.raywenderlich.com/ ... -
Fortify Scan
2016-11-21 18:53 1222sourceanalyzer -b buidl_id -Xm ... -
Inside Code Signing
2016-11-17 14:44 549Mac OS Version 10.0 Cheeta 1 ... -
Cross Compile Script of Tesseract
2016-11-14 18:51 858The script on internet is both ... -
Homebrew saying Xcode is outdated
2016-10-28 18:44 507http://stackoverflow.com/ques ... -
iOS开发--适配iOS 10以及Xcode 8
2016-10-17 15:35 538http://www.cocoachina.com/ios/ ... -
install app to simulator
2016-09-26 16:44 907前言 刚刚接触iOS的时候,我就一直很好奇,模拟器上面能不 ... -
issues in XCode 8
2016-09-26 16:37 599http://www.cocoachina.com/bbs/ ... -
XCode Plugin
2016-07-15 18:43 655* cmd+shift+9 //manage plugi ... -
Speedup Coding in XCode
2016-07-15 17:52 475www.cocoachina.com/ios/201607 ... -
Wifi API in iOS
2016-07-15 10:31 387查漏补缺集是自己曾经做过相关的功能,但是重做相关功能或者 ... -
About Hockey App
2016-07-04 11:38 445* free acc can only has 2 app, ... -
Appium Device Test
2016-06-29 17:18 316* set udid, device name won't ... -
[Trans] Integration between OC and JS
2016-06-28 18:47 440iOS 开发中,我们时不时的需要加载一些 Web ... -
Jenkins iOS Automation Comment
2016-06-24 16:47 521* SDK null will by default bui ... -
Salabash Test Comment
2016-06-08 19:29 352* Device test need to enable U ... -
Calabash
2016-06-02 18:24 658//calabash-cucumber for ios ... -
BDD Setup
2016-05-20 15:04 495—brew /usr/bin/ruby -e " ... -
Setup Git
2016-04-01 19:23 511http://www.tomdalling.com/blo ...
相关推荐
trans
IEEE trans期刊整理1
ieee trans 类文章总结 例如IEEE TRANSACTIONS ON ADVANCED PACKAGING ADVP IEEE Trans. Adv. Packag. CPMTB* IEEE Trans. Compon., Packag., Manuf. Technol. B* (1994–1998) IEEE TRANSACTIONS ON AEROSPACE ...
TransMac.11.0内附注册,在windows下制作mac的启动盘
TransMac,TransMac,TransMac,TransMac,TransMac,TransMac,TransMac
IEEE Trans系列期刊论文word模板,可以直接将自己的内容复制到模板中,不用做任何修改,大大节省了论文格式修改的时间,亲测好用。
trans-formas仪表操作
TransMac 制作驱动盘必备工具TransMac
TransMac 如果你有MacOS的机器和光盘,想直接读取Mac格式的光盘和硬盘这时TransMac就可以有用了,使用TransMac就可以在你用Windows的机器上直接读取Mac格式的存储介质了,希望大家能使用开心。 TransMac is a ...
TransE算法,C++代码实现
这个是IEEEtrans论文的latex模板,最新的,按照这个模板就可以排除包括TIP,TPAMI等等trans的论文
transmac 10.3 注册版,在Win下访问Mac分区并操作的软件 高于这个版本的找不到序列号
TransE的直观含义,就是TransE基于实体和关系的分布式向量表示,将每个三元组实例(head,relation,tail)中的关系relation看做从实体head到实体tail的翻译(其实我一直很纳闷为什么叫做translating,其实就是向量...
TransMac DMG镜像恢复到磁盘的工具
分享一款免安装的TransMac,版本是11.4,可用于将U盘格式化成Mac的磁盘格式,可用于将dmg格式的Mac镜像写入U盘
TransMac可以读、写、格式化Macintosh的磁盘,CDROMs,与SCSI Drives。Mac OS支持读取FAT格式的Windows磁盘,而Windows却不支持Mac的专有格式,如果你的PC上挂有MacOS的机器和光盘,可以使用TransMac来读取。 ...
TransMac 10.2 注册版,安装mac要用到的工具
绿色免安装TransMac
TRANS-JOUR.zip
TransMac_35267.zip,dmg转iso工具。 TransMac_35267.zip,dmg转iso工具。