FFmpeg完美入门【3】-FFmpeg功能及使用说明

http://it6655.com/2012/09/ffmpeg-3-html

ffplay对多媒体的支持能力验证

一、视频3gp 177X144 支持播放,在windows下播放正常,但是在linux下面偶有BUG 如果发现画面无法显示而声音可以播放的情况下可以试着切换全屏或者切换分辨率。

AVI 208X176 支持 320X240 支持 720X400 支持 720X576 支持

DAT 352X288 支持

DiVX 720X576 支持

MKV 320X240 支持352X288 支持 704X304 支持 720X576 支持

MP4 320X240 支持 352X288 支持 720X400 支持

MPG 320X240 支持 352X288 支持 480X576 支持 720X576 支持 720X480 支持

VOB 352X288 支持

XVID 720X576 支持

MOV 支持

RMVB 支持

二、音频

AC3 48KHZ 支持

APE 11KHZ 支持 22KHZ 支持 44KHZ 支持 48KHZ 支持

MP3 32KHZ 64Kbps 支持 32KHZ 128KbpS 支持 32KHZ 160Kbps 支持 32KHZ 192Kbps 支持 32KHZ 320Kbps 支持 44KHZ 64Kbps 支持 44KHZ 128Kbps 支持 44KHZ 160Kbps 支持 44KHZ 192Kbps 支持 44KHZ 320Kbps 支持 48KHZ 64Kbps 支持 48KHZ 128Kbps 支持 48KHZ 160Kbps 支持 48KHZ 192Kbps 支持 48KHZ 320Kbps 支持

OGG 32KHZ 128Kbps 支持 32KHZ 192Kbps 支持 44KHZ 64Kbps 支持44KHZ 128Kbps 支持 44KHZ 192Kbps 支持 48KHZ 64Kbps 支持 44KHZ 128Kbps 支持 44KHZ 192Kbps 支持

WAV 11KHZ 支持 22KHZ 16Kbps 支持 44KHZ 16Kbps 支持 48KHZ 16Kbps 支持

WMA 8KHZ 16Kbps 支持 11KHZ 16Kbps 支持 16KHZ 16Kbps 支持 22KHZ 16Kbps 支持 44KHZ 16Kbps 支持 48KHZ 16Kbps 支持

三、图像

PNG 支持

JPG 支持

JPEG 支持

GIF 支持

BMP 支持

2 FFmpeg格式转换

第一步:准备媒体前面已经讲的很清楚了,ffmpeg如何安装不在赘述。准备好相应的文件,如图2-1所示。

第二步:启动ffmpeg 由于做的是格式转换,在ffserver上不能直观的看见结果,故我是在linux下进行的。打开终端,值得一提的是格式转换需要超级用户才能进行,故在命令行输入:su,<回车>,输入密码进入超级用户,本例中,以FFmpeg将test.avi转换为test.mpg。在命令行中输入:./ffmpeg –i test.avi –r 25 –s 720x400 test.mpg<回车>。其中原格式分辨率为320x240,将转为720x400,-r前面已经解释其含义,表示设置帧频为25。转换成功后如图2-2所示,前后两种格式播放效果如图2-3所示。相应的,转换为其他格式做相应的变化即可。同时还可以在转换格式时进行强制的音视频转换,如–vcodec + 格式,将会强制将视频按指定格式编码,-acodec +格式,将会强制按指定格式编码音频信息。在转换中有很多其他参数可以指定,如码率、分辨率、帧率等,具体按照ffmpeg的参数说明指定参数即可。但有一条转低不转高的原则需要注意,即品质差的音视频转换不建议转换到品质好的音视频。

再说说如何在转换视频的时候将音频合成到视频中,且覆盖其原来的音频。这个现在摸索出两种方法。

方法一:需要两条命令实现,先在命令行中输入: ./ffmpeg –i test.avi -an –r 25 test.mpg <回车> 此时将生成一个没有声音的test.mpg视频,再在命令行中输入: ./ffmpeg –i test.mpg –i test.mp3 –r 25 test1.mpg<回车> 此时将会生成一个名为test1.mpg的视频。该视频播放时视频为test.avi的视频,但音频变为了test.mp3的音频了。

方法二:只要一条指令即可实现。在命令行中输入: ./ffmpeg –i test.avi –i test.mp3 –vcodec copy –acodec copy –r 25 test2.mpg<回车> 此时将会生成一个名为test2.mpg的视频,播放时其视频为test.avi的视频,音频为test.mp3。–vcodec copy为force video codec(‘copy’ to copy stream)。有一点需要注意,文件命名不能有空格,否则会导致编译时不能通过。另外,-an为不能使音频记录。

第三步:播放媒体播放我们转换的媒体,看看是否满足我们当初的愿望,不出什么差错的话,是完全能够满足我们的要求的。

3 FFmpeg视频截图
截取一张300x200尺寸大小的格式为jpg的一张图片: ./ffmpeg –i test.avi –y –f image2 –t 0.001 –s 300x200 test.jpg 要截取指定时间的图片,如5秒之后的: ./ffmpeg –i test.avi –y –f image2 –ss 5 –t 0.001 –s 300x200 test.jpg 其中,-ss后的单位为秒,也可写成:-ss 00:00:05。
把视频的前30帧转换为一个动态的gif图。需要说明的是,转换成功之后,如果用ffplay播放是看不出效果的,建议换成其他图片播放器播放。其转换命令为: ./ffmpeg –i test.avi –vframes 30 –pix_fmt rgb24–y –f gif test.gif 也可以从视频中的第10秒开始截取后面的5秒内容转换为一个无限重播的动态gif图。其命令为: ./ffmpeg –i test.avi –pix_fmt rgb24 –ss 10 –t 5 –y –f gif test.gif 上面两种动态gif都是只播一次,想让其一直播,可再加一个参数:-loop_output 0。

4 FFmpeg屏幕录制
屏幕录制其命令为: ./ffmpeg -f x11grab -r 25 -s wxga -i :0.0 /tmp/outputFile.mpg 其他相关参数可自行添加。需要说明的是,各个版本的ffmpeg对屏幕录制的命令不一。如果你只想录制一个应用程序窗口或者桌面上的一个固定区域,那么可以指定偏移位置和区域大小。使用xwininfo -frame命令可以完成查找上述参数。 注:ffmpeg的屏幕录制功能只能在Linux环境下有效。并且在配置时需要添加 –enable-x11grub 指令,默认关闭。

5 FFmpeg音视频采集
把摄像头的实时视频录制下来,存储为文件./ffmpeg -f video4linux -s 320x240 -r 10 -i /dev/video0 test.asf 录音,其命令为: ./ffmpeg –i /dev/dsp -f oss test.mp3


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
解协议的作用,就是将流媒体协议的数据,解析为标准的相应的封装格式数据。视音频在网络上传播的时候,常常采用各种流媒体协议,例如HTTP,RTMP,或是MMS等等。这些协议在传输视音频数据的同时,也会传输一些信令数据。这些信令数据包括对播放的控制(播放,暂停,停止),或者对网络状态的描述等。解协议的过程中会去除掉信令数据而只保留视音频数据。例如,采用RTMP协议传输的数据,经过解协议操作后,输出FLV格式的数据。 解封装的作用,就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据。封装格式种类很多,例如MP4,MKV,RMVB,TS,FLV,AVI等等,它的作用就是将已经压缩编码的视频数据和音频数据按照一定的格式放到一起。例如,FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流。 解码的作用,就是将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。音频的压缩编码标准包含AAC,MP3,AC-3等等,视频的压缩编码标准则包含H.264,MPEG2,VC-1等等。解码是整个系统中最重要也是最复杂的一个环节。通过解码,压缩编码的视频数据输出成为非压缩的颜色数据,例如YUV420P,RGB等等;压缩编码的音频数据输出成为非压缩的音频抽样数据,例如PCM数据。 视音频同步的作用,就是根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来。 接下来的几节我们将会列出主要的流媒体协议,封装格式,以及视音频编码标准。更详细的比较可以参考: 视频参数(流媒体系统,封装格式,视频编码,音频编码,播放器)对比 有关本文中涉及到的协议数据、封装格式数据、视频编码数据、音频编码数据、视频像素数据、音频采样数据的分析可以参考下面系列文章:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值