ffmpeg编解码应用
2014/1/9
1命令语法
使用语法 ffmpeg[[options][`-i‘ input_file]]... {[options] output_file}...
2基本选项
常用选项
编解码类 |
功能 |
-f |
指定格式,包括视频和音频 |
-i |
输入文件名 |
-title string |
标题 |
-timestamp time |
时间戳 |
-author string |
作者 |
-copyright string |
版权信息 |
-comment string |
评论 |
输出打印类 |
功能 |
-h |
打印基本选项 |
-h long |
打印更多选项 |
-h full |
打印所有的选项,包括格式和编码。 |
-version |
显示版本 |
-formats |
显示可以使用的格式 |
-codecs |
显示可用编码 |
-decoders |
显示解码器 |
-encoders |
显示编码器 |
-bsfs |
显示可用位流过滤器 |
-protocols |
显示可用协议 |
-filters |
显示可用过滤器 |
-pix_fmts |
显示可用点格式 |
-layouts |
显示标准通道布局 |
-sample_fmts |
显示可用音频采样格式 |
全局选项 |
功能 |
-loglevel loglevel |
set logging level |
-v loglevel |
set logging level |
-report |
generate a report |
-max_alloc bytes |
set maximum size of a single allocated block |
-y |
overwrite output files |
-n |
do not overwrite output files |
-stats |
print progress report during encoding |
-bits_per_raw_sample number |
设置每个采样点的位数 |
-vol volume |
改变音量 (256=normal) |
单个文件的主要选项 |
功能 |
-f fmt |
force format |
-c codec |
codec name |
-codec codec |
codec name |
-pre preset |
preset name |
-map_metadata outfile[,metadata]:infile[,metadata] |
set metadata information of outfile from infile |
-t duration |
持续时间 |
-to time_stop |
record or transcode stop time |
-fs limit_size |
set the limit file size in bytes |
-ss time_off |
set the start time offset |
-timestamp time |
set the recording timestamp (‘now‘ to set the current time) |
-metadata string=string |
add metadata |
-target type |
specify target file type ("vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd", "ntsc-svcd", ...) |
-frames number |
set the number of frames to record |
-filter filter_graph |
set stream filtergraph |
-filter_script filename |
read stream filtergraph description from a file |
-reinit_filter |
reinit filtergraph on input parameter changes |
Video options: |
0 |
-vframes number |
set the number of video frames to record |
-r rate |
set frame rate (Hz value, fraction or abbreviation) |
-s size |
set frame size (WxH or abbreviation) |
-aspect aspect |
set aspect ratio (4:3, 16:9 or 1.3333, 1.7777) |
-bits_per_raw_sample number |
set the number of bits per raw sample |
-vn |
disable video |
-vcodec codec |
force video codec (‘copy‘ to copy stream) |
-timecode hh:mm:ss[:;.]ff |
set initial TimeCode value. |
-pass n |
select the pass number (1 to 3) |
-vf filter_graph |
set video filters |
-b bitrate |
video bitrate (please use -b:v) |
-dn |
disable data |
Audio options: |
|
-aframes number |
set the number of audio frames to record |
-aq quality |
set audio quality (codec-specific) |
-ar rate |
set audio sampling rate (in Hz) |
-ac channels |
set number of audio channels |
-an |
disable audio |
-acodec codec |
force audio codec (‘copy‘ to copy stream) |
-vol volume |
change audio volume (256=normal) |
-af filter_graph |
set audio filters |
Subtitle options: |
|
-s size |
set frame size (WxH or abbreviation) |
-sn |
disable subtitle |
-scodec codec |
force subtitle codec (‘copy‘ to copy stream) |
-stag fourcc/tag |
force subtitle tag/fourcc |
-fix_sub_duration |
fix subtitles duration |
-canvas_size size |
set canvas size (WxH or abbreviation) |
-spre preset |
set the subtitle options to the indicated preset |
3具体应用
3.1.图片合成视频
将图片进行命名排序
输入命令
ffmpeg -f image2 -i pic\%04.jpg –r 5 a.flv
注:图片格式,输入文件,每秒5帧。
3.2.ARM9 USB摄像头摄像
ffmpeg -f v4l2 -s 320*240 -r 2 -i/dev/video0 -vcodec mpeg4 /home/f.mp4
ffmpeg -f v4l2 -s 320*240 -r 8 -i/dev/video0 -vcodec h263 -f rtp rtp://192.168.1.6:5060 > /tmp/ffmpeg.sdp
以上命令表示:采集10秒钟视频,对video4linux2视频设备进行采集,采集QCIF(176*144)的视频,每秒8帧,视频设备为 /dev/video0,视频编码为h263,输出格式为RTP,后面定义了IP地址及端口,将该码流所对应的SDP文件重定向到/tmp /ffmpeg.sdp中,将此SDP文件上传到流媒体服务器就可以实现直播了。
./ffmpeg -t 10 -f video4linux2 -s 176*144-r 10 -vpre libx264-hq.ffpreset -i /dev/video0-vcodec libx264 -f rtp rtp://192.168.1.105:6060 > /tmp/x264.sdp
3.3.视频截图
ffmpeg -i test.asf -f image2 -t 0.001 -s352x240 a.jpg
3.4.视频截取动态图
ffmpeg -i test.asf -vframes 30 -f gif a.gif
3.5.转换文件为3GP格式
ffmpeg -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 176x144 -acodec aac-ac 2 -ar 22500 -ab 24 -f 3gp test.3gp
ffmpeg -i test.wmv -ac 1 -acodec libamr_nb -ar 8000 -ab 12200 -s 176x144 -b 128-r 15 test.3gp
注:如果要转换为3GP格式,则ffmpeg在编译时必须加上–enable-amr_nb –enable-amr_w。
3.6.转换文件到FLV格式
ffmpeg.exe -i test.mp4 -ab 56 -ar 22050 -b500 -r 15 -s 320x240 f:\test.flv
3.7.将一段音频与一段视频混合
ffmpeg -i son.wav -i video_origine.avivideo_finale.mpg
3.8.将视频转换为图片
ffmpeg -i video.mpg image%d.jpg
3.9.录像屏幕
ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300-vd x11:0,0 -s 1024x768 ./test.avi
注:使用ffmpeg其中,-vd x11:0,0 指录制所使用的偏移为 x=0 和 y=0,-s 1024×768 指录制视频的大小为 1024×768。
3.10.压制H.264视频
ffmpeg-threads 4 -i INPUT -r 29.97 -vcodec libx264 -s 480x272 -flags +loop -cmp+chroma -deblockalpha 0 -deblockbeta 0 -crf 24 -bt 256k -refs 1 -coder 0 -meumh -me_range 16 -subq 5 -partitions +parti4x4+parti8x8+partp8x8 -g 250-keyint_min 25 -level 30 -qmin 10 -qmax 51 -trellis 2 -sc_threshold 40-i_qfactor 0.71 -acodec libfaac -ab 128k -ar 48000 -ac 2
注:使用该指令可以压缩出比较清晰,而且文件转小的H.264视频文件
3.11.获取PCM数据
ffmpeg -i input.mpg -f s16le -ar 44100-acodec pcm_s16le output.pcm
3.12.Windows摄像
./ffmpeg -t 10 -f vfwcap -i 0 -r 8 -f mp4cap.mp4
说明:我们采集10秒,采集设备为vfwcap类型设备,第0个vfwcap采集设备(如果系统有多个vfw的视频采集设备,可以通过-i num来选择),每秒8帧,输出方式为文件,格式为mp4。
ffmpeg -f vfwcap -s 320x240 -r 25 -i 0 -b400K -vcodec mpeg4 new.mp4
ffmpeg -r 15 -s 352x288 -f vfwcap -i 0 http://localhost:8090/feed1.ffm
有任何意见或问题的请留言,希望能帮到你!