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

 

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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ffmpeg是一个广泛使用的开源多媒体处理库,支持多种音视频编解码格式。在使用ffmpeg进行JPG解码时,它会将JPG图像转换为YUV格式。YUV是一种用于存储和传输彩色图像的格式,它将亮度(Y)和色度(U和V)分离开来。 首先,ffmpeg会读取JPG图像文件,并将其解析为像素数据。然后,它会根据JPG中的颜色信息,将像素数据转换为YUV格式。Y分量表示图像的亮度信息,U和V分量表示图像的色度信息。 在进行YUV转换时,ffmpeg会根据JPG图像的色彩空间信息进行自适应处理。常见的色彩空间包括RGB和YCbCr,其中YCbCr就是一种YUV的变体。通过将RGB图像转换为YCbCr,可以更有效地压缩图像数据,并减少存储或传输所需的空间和带宽。 因此,当使用ffmpeg解码JPG图像时,它会将输入的JPG转换为YUV格式,并提供Y,U和V三个分量的像素数据。这些像素数据可以根据需要进行进一步的处理或者用于其他操作,如视频编码、图像处理等。 总之,使用ffmpeg解码JPG图像时,它会将图像转换为YUV格式,将亮度和色度信息分离开来,以便于后续的处理和应用。 ### 回答2: FFmpeg是一个开源的多媒体处理工具集,可以实现音视频的编解码、转码、处理等功能。在FFmpeg中,可以通过使用libjpeg库来实现JPG格式的解码。 JPG是一种常见的图片压缩格式,其编码方式使用了基于离散余弦变换(DCT)的算法。要解码JPG图片到YUV格式,需要以下几个步骤: 1. 打开JPG文件:通过FFmpeg提供的接口,可以打开并读取JPG文件。 2. 解码JPG图像:使用libjpeg库提供的函数,可以将JPG图像解码为RGB(红绿蓝)格式。 3. 转换为YUV格式:在FFmpeg中,可以使用swscale库提供的函数将RGB图像转换为YUV格式。YUV是一种常用的视频颜色空间,其中包括亮度(Y)和色度(U、V)分量。 4. 保存YUV图像:将转换后的YUV图像保存到文件中,或者用于后续的视频处理。 需要注意的是,解码JPG到YUV格式是一个比较复杂的过程,需要对图像编码和颜色空间转换等进行处理。在使用FFmpeg进行解码时,可以针对具体的需求选择不同的设置和参数,以获得所需的解码效果。 总之,使用FFmpeg可以方便地实现JPG图像解码为YUV格式的功能,通过调用FFmpeg提供的接口和库函数,可以完成文件的打开、图像的解码和颜色空间的转换等操作。这为后续的视频处理提供了基础。 ### 回答3: ffmpeg是一个开源的多媒体处理工具,可以在命令行中使用。jpg是一种常见的图片格式,而yuv则是一种常见的视频像素格式。 使用ffmpeg解码jpg图片到yuv像素格式的过程可以分为以下几步: 1. 安装ffmpeg:在电脑上安装ffmpeg软件,可以从官方网站或其他途径下载并安装。 2. 打开命令行界面:在电脑上打开命令行界面,可以通过搜索或者运行cmd命令打开。 3. 编写解码命令:在命令行中输入ffmpeg的解码命令。命令的基本格式如下所示: `ffmpeg -i input.jpg -pix_fmt yuv420p output.yuv` 这条命令中,`-i input.jpg`表示输入的jpg图片文件,`-pix_fmt yuv420p`表示输出的像素格式为yuv420p,`output.yuv`表示输出的yuv文件名。 4. 执行命令:在命令行中按下回车键执行解码命令。此时,ffmpeg会加载输入的jpg文件,将其解码成yuv420p格式,并输出到指定的文件中。 通过以上步骤,我们可以使用ffmpeg将jpg图片解码为yuv像素格式。这样的操作对于一些视频处理任务或者需要将图片转换为视频的应用场景非常有用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值