ffmpeg编解码应用

ffmpeg编解码应用

 

ruihanL@126.com

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

 

 有任何意见或问题的请留言,希望能帮到你!

 

 

ffmpeg编解码应用

上一篇:ORACLE SAMPLE block


下一篇:二叉树的层序遍历