FFmpeg集合

全称——Fast Forward Moving Picture Experts Group

提供多种媒体格式的封装和解封,包括多种音视频编码、多种协议的流媒体、多种色彩格式转换、多种采样率转换、多种码率转换等。

基本组成

AVFormat——封装模块。FFmpeg是否支持某种媒体封装格式,取决于编译时是否包含了该格式的封装库。根据实际需求,可进行媒体封装格式的拓展,增加自己定制的封装格式,即在AVFormat中增加自己的封装处理模块。

AVCodec——编解码模块。H.264(AVC)编码,需要使用x264编码器;H.265(HEVC)编码,需要使用x265编码器;MP3(mp3lame)编码,需要使用libmp3lame编码器实现了目前多媒体领域绝大多数常用的编解码格式,既支持编码,也支持解码,还支持第三方的编码器。

AVFilter——滤镜模块。滤镜框架可以有多个输入或多个输出。提供了一个通用的音频、视频、字幕等滤镜处理框架。

swscale模块——视频图像转换计算模块。常见于将图像从1080p转换成720p或者480p等的缩放,或者将图像数据YUV420p转换成YUYV,或者TUV转RGB等图像格式转换。还提供高级别的图像转换API,允许进行图像缩放和像素格式转换。

swresample——音频转换计算模块。提供高级别的音频重采样API。

主要工作流程:

(1)解封装

(2)解码

(3)编码

(4)封装

步骤:

(1)读取输入源

(2)进行音视频的解封装

(3) 解码每一帧音视频数据

(4)编码每一帧音视频数据

(5)进行音视频的重新封装

(6)输出到目标

基本语法:

ffmpeg <global-optionals> <input-options> -i <input> <output-options> <output>

全局参数:日志输出,文件覆盖等全局选项

输入文件:读取文件的输入选项

输出文件:转换、过滤、流映射(自动检测视频拓展并将其转换为适当的编解码器)

高频命令行参数:

\-c :指定编码器

-c copy :直接赋值,不经过重新编码

-c:v :指定视频编码器

-c:a :指定音频编码器

-i:指定输入文件

输出质量:

-b:比特率(单位时间内传输的比特数量)

-r:改变帧频(每秒钟播放的帧数)

-s:分辨率

-an:去除音频流

-vn:去除视频流

-preset:指定输出的视频质量,会影响文件的生成速度。

-y:不经过确认,输出时直接覆盖同名文件 

-vf:创建过滤图用于旋转、缩放、亮度和对比度的修改

:使用ffmpeg命令将test.mp4推送到本地rtsp服务器。

ffmpeg -re -stream_loop  -1  -i test.mp4  -rtsp_transport tcp -c copy -f rtsp rtsp://127.0.0.1:554/live/test

-re:以实时速率读取流

-stream_loop -1:循环播放

-i :指定输入文件

-rtsp_transport tcp :指定rtsp传输协议为TCP

-c copy :不对视频流进行重新编码,而是直接复制

-f rtsp :输出格式为rtsp

使用VLC进行播放 

 Filtering and streamcopy cannot be used together.

哦吼!发生了水平翻转!

ffmpeg -re -stream_loop  -1  -i test.mp4   -rtsp_transport tcp -f rtsp -vf hflip rtsp://127.0.0.1:554/live/test

-vf hflip :应用hflip视频滤镜来水平翻转视频 

 -vf pad=2*iw :扩展视频的尺寸,水平和垂直方向均变为输入的2倍

 -vf scale=iw/2:ih/2 :尺寸变为输入的一半

ffmpeg -re -stream_loop -1 -i test.mp4 -i Cat.jpg -rtsp_transport tcp -f rtsp -filter_complex overlay=W-w:H-h rtsp://127.0.0.1:554/live/test

相关术语:

媒体流:表示在时间轴上的一段连续的数据。

数据帧/数据包:通常一个媒体流是由大量的数据帧组成的,对于压缩数据,帧对应着编码器的最小处理单元,分属于不同媒体流和原始数据之间相互转换的。

流媒体服务:流媒体服务是一种允许用户通过互联网访问并即时欣赏音频、视频和其他多媒体的技术和服务。将媒体内容压缩成数据包,然后在网络上以连续流动的形式传输给用户,无需用户事先完整地下载整个媒体文件。流媒体技术的应用使得用户可以在线观看电视节目、电影、广播和现场活动,而且通常只需要一个稳定的互联网连接即可。流媒体服务可以支持实时的播放或点播,并且在某些情况下,可能还需要特定的软件来访问特定的内容。

启动时间短,速度快,对系统缓存容量要求低等特点。

①顺序流式传输:顺序下载,通过HTTP服务发送文件,用户在下载文件的同时可观看在线媒体,但不能跳到未下载的部分,适合短片段传输。(点播技术)

①实时流式传输:实时传送,需专用流媒体服务器和RTP传输协议,支持用户随机访问,可随意快进或后退。

H.264(AVC)与H.265(HEVC)都是视频压缩格式,由于视频本身的码流太大,所以需要经过压缩然后再通过网络进行传输。

H.265进一步提高压缩比,提高效率,节约带宽或存储空间。

  • 21
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值