首页 > 其他分享 >FFMpeg笔记(十二)MP4 box解析

FFMpeg笔记(十二)MP4 box解析

时间:2023-05-27 12:55:53浏览次数:49  
标签:box FFMpeg 包含 track 音视频 sample header MP4

    MP4包含3大box。

一、ftyp

file type box,包含视频文件使用的mp4标准,也作为probe mp4的标志;

二、moov

包含媒体的元数据信息,包含一个mvhd(也就是header box)和若干个trak(track)。trak包含一条音/视频轨道信息和音视频数据的编码格式、音视频数据样本、chunks的大小,存储位置,PTS等。

1、mvhd

movie header box,包含duration和timescale,duration是媒体时长,timescale是单位为秒的媒体时长,可以理解为每秒经历的时间刻度。

2、tkhd

track header box,如果是视频track,会包含宽高信息;

三、mdat

media data box,moov box记录的每帧音视频数据位置信息,实际都存储在mdat box中,通过解析moov box可以获取到每帧音视频数据具体位置,方便播放器进行seek操作。

四、表格总结

Box        含义 备注 
ftyp       file type box  作为probe标识 
moov          
  mvhd     movie header  duration和timescale 
  meta        
  trak     track  每读到一个track,新增一个AVStream 
    tkhd   track header  视频宽高 
    tref      
    trgr      
    edts      
      elst    
    meta      
    mdia      
      mdhd    
      hdlr   指定流类型
     ......      
     stbl    sample table box  
       stsd  sample descriptions  采样描述容器:包含codec type,extradata(即SPS、PPS)
      stts (decoding)time-to-sample

stts stss ctts三个box用于保存媒体数据和时间戳的对应关系。

采样时间容器:stts可以计算每个sample的dts

      ctts

(composition) time to sample 

pts
      stsc

sample-to-chunk, patial data-offset

infomation

stsc stsz stco三个box用于保存每帧视频或音频数据在文件中的保存位置。
       stsz sample sizes   样本大小
      stss

sync sample table

采样时间容器:存放了关键字的序号(I帧),seek时需从关键帧开始解码。
       stco  chunk offset  chunk偏移容器
mdat          

标签:box,FFMpeg,包含,track,音视频,sample,header,MP4
From: https://www.cnblogs.com/jiayayao/p/17433297.html

相关文章

  • EasyDSS调用录像回看接口出现报错“请先合成mp4”,是什么原因?
    EasyDSS支持一站式的上传、转码、直播、回放、嵌入、分享功能,具有多屏播放、自由组合、接口丰富等特点。平台可以为用户提供专业、稳定的直播推流、转码、分发和播放服务,全面满足超低延迟、超高画质、超大并发访问量的要求。有用户反馈,在调用录像回看接口中的指定时间段录像播放及......
  • EasyDSS如何调用接口获取录像MP4文件合成状态?
    EasyDSS互联网视频云服务的视频直播/点播功能支持视频采集、编辑、上传、媒体资源管理、自动化转码处理、分发服务等,帮助用户快速搭建拥有极致观看体验、安全可靠的视频直播点播应用。有用户反馈在调用接口时,会出现合成中的字样,并不知道合成的录像MP4文件是否已经合成完毕。今天我......
  • FLEX4实践—DropDownList与ComboBox
    FLEX4相对FLEX3的组件变化列表中列出以这么一项:mx.controls.ComboBox->spark.components.DropDownList 官方解释如下:   ComboBox控件是DropDownListBase控件的子类。与DropDownListBase控件类似,当用户从ComboBox控件的下拉列表中选择某项时,数据项将显示在......
  • 【Azure 媒体服务】Azure Media Service上传的视频资产,如何保证在Transfer编码后音频
    问题描述AzureMediaService上传的视频资产,如何保证在Transfer编码后音频文件和视频文件不分成两个文件?保持在一个可以直接播放的MP4文件中呢? 问题解答AzureMediaService上提供的Build-inTransform生成的资产中,音频与视频分别存储在不同的文件中。通过自定义StandardEncode......
  • 【Azure 媒体服务】Azure Media Service上传的视频资产,如何保证在Transfer编码后音频
    问题描述AzureMediaService上传的视频资产,如何保证在Transfer编码后音频文件和视频文件不分成两个文件?保持在一个可以直接播放的MP4文件中呢? 问题解答AzureMediaService上提供的Build-inTransform生成的资产中,音频与视频分别存储在不同的文件中。通过自定义StandardE......
  • 转换视频格式|压缩视频|使用ffmpeg
    代码如下importos.pathimportsubprocessdefcompress_video(origin_file=None,target_file=None,quality=10):#压缩质量(值越小,视频越小)#如果文件存在就删除ifos.path.exists(target_file):os.remove(target_file)ifnotos.path.ex......
  • hackthebox --aragog
    主机发现与爆破nmap-sT--min-rate1000010.10.10.78nmap-sT-sV-sC-O-p22,21,8010.10.10.78 发现有ftp匿名登陆└─$ftp10.10.10.78Connectedto10.10.10.78.220(vsFTPd3.0.3)Name(10.10.10.78:kali):anonymous230Loginsuccessful.Remotesystemtypeis......
  • 使用ffmpeg将内存中的裸流打包成可播放的MP4文件,并输出到内存中
     前两天项目上有个需求,要求大概是这样的,输入端是一帧一帧的h264裸流(本示例只支持h264裸流,h265可基于本示例自己开发,在此我就不过多阐述了)和一个时间,要求输出根据这个时间来产生一个前后各延伸一段时间的视频(伴随录像),且伴随录像是可直接播放的MP4文件。但是产生的视频文件不是直接......
  • pb dw中checkbox控件在点选后马上取消勾选的方法
    需求:pbdw中的checkbox列在点击选择时,判断之前某列的值,如不满足条件,则取消勾选。使用过的方法及解释:1、在itemchanged事件中写dw.objext.cbx[row]=0.不能达到要求。虽然itemchanged事件中的data变成了0.但是dw行中的checkbox的勾选状态并未被取消。2、在itemchanged事件中......
  • ffmpeg 下载链接(exe,源码,include,lib,dll,a,so)
    Releasen4.2.9·FFmpeg/FFmpeg(github.com) 源码DownloadFFmpeg 官网exeBtbN/FFmpeg-Builds(github.com) build,可以编译的,可以下载动态库,可以生成编译文件......