FFmpeg从入门到精通笔记之三

FFmpeg转封装

音视频文件转MP4格式

  • 在互联网常见的格式中,跨平台最好的应该是MP4文件,因为MP4文件既可以在PC平台的Flashplayer中播放,又可以在移动平台的Android、IOS等平台中进行播放,而且使用系统默认的播放器可播放。
       - MP4文件由许多个Box与FullBox组成
       - 每个Box由Header和Data两部分组成
       - FullBox是Box的扩展,其在Box结构的基础上,在Header中增加8位version标志和24位的flags标注。
       - Header包含了整个Box的长度的大小(size)和类型(type),
       - Data为Box的实际数据,可以是纯数据,也可以是更多的子Box
       - 当一个Box中Data是一系列的子Box时,这个Box又可以称为Container(容器)Box

  • 解析MP4多媒体文件时需要一些关键的信息
       - moov容器。定义了一个MP4文件中的数据信息,类型是moov,是一个容器Atom,其至少必须包含以下三种Atom中的一种:
         - mvhd标签,Movie Header Atom,存放未压缩过的影片信息的头容器
         - cmov标签,Compressed Movie Atom,压缩过的电影信息容器,此容器不常用
         - rmra标签,Reference Movie Atom,参考电影信息容器,此容器不常用
    也可以包含其他容器信息,例如影片剪辑信息Clipping atom(clip)、一个或几个trackAtom(trak)、一个Color Table Atom(ctab)和一个User Data Atom(udta).其中,mvhd中定义了多媒体文件的time scale、duration以及display characteristics。而trak中定义了多媒体文件中的一个track的信息,track是多媒体文件中可以独立操作的媒体单位,例如一个音频流就是一个track、一个视频流就是一个track。

  • MP4分析工具。可以用来分析MP4封装格式的工具比较多,除了FFmpeg之外,还有一些常用的工具,如Elecard StreamEye、mp4box、mp4info等。

  • MP4在FFmpeg中的Demuer.使用命令行ffmpeg-h demuxer=mp4查看MP4文件的Demuxer信息:

  • MP4在FFmpeg中的Muxer.

视频文件转FLV

  • 在网络的直播与点播场景中,FLV也是一种常见的格式,FLV是Adobe发布的一种可以作为直播也可以作为点播的封装格式,其封装格式非常简单,均以FLVTAG的形式存在,并且每一个TAG都是独立存在的。
  • FLV 文件格式分为两部分:一部分为FLV文件头,另一部分为FLV文件内容。
       -1.FLV文件头格式解析
       - 2.FLV文件内容格式解析
       - 3.FLVTAG格式解析
       - 4.VideoTag数据解析
       - 5.AudioTag数据格式解析
       - 6.ScriptDat格式解析
  • FFmpeg转FLV参数
       - FLV封装中可以支持的视频编码包括:Sorenson H.263, Screen Video,On2VP6,带Alpah通道的On2VP6,Screen Video2,H.264(AVC)
       - FLV封装中支持的音频主要包括:限行PCM,大小端取决于平台,ADPCM
       - 如果封装FLV时,内部的音频或者视频不符合标准时,那么它们是肯定封装不进FLV的,而且还会报错
  • FFmpeg生成带关键索引的FLV
  • FLV文件格式分析工具:flvparse,FlvAnalyzer,ffprobe

视频文件转M3U8

  • M3U8是一种常见的流媒体格式,主要以文件列表的形式存在。
  • FFmpeg转HLS参数

视频文件切片
视频文件切片与HLS基本类似,但是HLS切片在标准中只支持TS格式的切片,并且是直播与点播切片,既可以使用segment方式进行切片,也可以使用ss加上t参数进行切片。

  • FFmpeg切片segment参数
  • FFmpeg使用ss与t参数进行切片

音视频文件音视频流抽取
当音视频文件出现异常时,除了分析封装数据之外,还需要分析音视频流部分。

  • FFmpeg抽取音视频文件中的ACC音频流
./ffmpeg -i input.mp4 -vn -acodec copy output.aac
  • FFmpeg抽取音视频文件中的H.264视频流
./ffmpeg -i input.mp4 -vcodec copy -an output.h264

  • FFmpeg抽取音视频文件中的H.265数据

系统资源使用情况

  • 如果使用FFmpeg仅仅转化封装格式而非转换编码,那么其使用的CPU资源并不多(可以用top命令查看CPU使用率)
  • 如果使用FFmpeg进行编码转换,则需要大量的计算,从而将会占用大量的CPU资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值