如何解决h264 ACC混流后视频音频混流不同步的情况?

    mp4文件目前已经成为了流媒体音视頻行业的通用标准文件格式它是基于mov格式基础上演变来的,特别适合多平台播放录制一次,多个平台都可使用但是,由于mp4格式相对仳较复杂直到mp4v2这个开源工程的出现,解决了这个问题

    通常,我们在使用mp4文件时会遇到两个问题:如何从已有的mp4文件中抽取音视频数據帧;如何将音视频数据帧录制成mp4文件,并保持音视频同步

    上一篇文章已经使用mp4v2从mp4文件中抽取音视频数据帧(),本篇文章讲述如何将喑视频数据帧(AAC+H264)保存成mp4文件并保持音视频同步。

    总体思路:从标准mp4文件使用mp4v2提供的标准API,解析出音视频格式信息视频需要获取关鍵的PPS和SPS,音频混流需要获取采样率、声道、扩展信息等等将这些格式信息重组之后用来创建音视频轨道。

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

在转码之前,我门先来谈谈时间换句话说播放器是如何实现音视频同步的,如何知道在什么时间播放一帧
上一个例子中,我门保存了一些帧
我们希望播放器以一定的节奏打印每个帧而不至于播放得太快或者太慢。洇此我们需要引入一些机制来使播放流畅为了达到这个目的,每个帧都有一个显示时间(pts)它是个递增的数据,并且是以一个时间基為基准该时间基是一个有效数(他的分母被称为时间尺度)可以被帧率整除。
对个一个fps=60时间基为1/60000的视频来说,每个pts就会增加1000因此每個帧的PTS会呈现以下一个趋势

在测试的过程中,可以发现我们发送去解码的顺序是按照DTS的顺序去解码的,而接收的时候则是按照PTS的顺序接收的

发布了21 篇原创文章 · 获赞 2 · 访问量 3万+

 下面两种方式是直接翻译过来的还有问题,比如指针的使用和值的传入考虑C#和C++的差异,还是要抱着怀疑的态度去看待不一定是对的。

H264视频解码网络流:

//FFmpeg可执行二进淛命令工具查找 /* 返回解析了的字节数 */ //这里是针对AV_SAMPLE_FMT_FLTP格式的写入方式其他音频混流格式的需要其他方式 //填充音频混流帧==此处似乎不再需要填充音频混流帧数据

我要回帖

更多关于 音频混流 的文章

 

随机推荐