关于MP4(fmp4)文件音视频时间轴同步的问题 20C

问题描述:
我自己利用获取的 H264帧 和 AAC帧编码生成fmp4(fargment MP4)文件,各个box以及数据已经填充完毕,但最后播放发现音视频不同步,且导致了视频卡顿

我的音视频源数据参数是

H264 : 15帧/s (只有 I/P帧)

PCM:采样率:16KHz 单声道 ---->编码成 AAC数据(大概10帧/秒),且帧率不固定,只是大致。

编码fmp4文件参数:

视频:

Time scale 12288 (0X00003000) 

Duration:计算的实际h264帧这一帧和上一帧的时间差换算成的内部时长

音频:

 Time scale 44100 (0X0000AC44) 

 Duration : 在网上找的填的固定值1024(编码用的采样点数)我也试过填充“这一帧和上一帧的时间差换算成的内部时长”也卡顿,


还有就是因为源数据编码帧并不均匀,导致有时生成的 moof+ mdat box里边的音频数据又是很少(就只有一两帧),不知道这样会不会有影响。 

见下边几个关键参数截图:

图片说明

图片说明

图片说明

图片说明

图片说明

谁能告诉我这几个参数应该怎样设置,且有着怎样的关系呢?

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
MP4文件里的音视频如何同步
一个MP4文件里,前面5秒只有音频没有视频,也就是说视频在音频播放了5秒才开始放,这个MP4里有什么参数可以控制的吗?
对于mp4文件的音视频的分离
刚接触到这方面的东东,比如说,一个3gp文件,要把它分离成amr 与 h263 的文件,当如何进行呢?网上也找了找,有一个mp4box的工具,它可以实现,但没有找到它的源码;还有一个是quicktime的,从mpeg4ip里面提出来的,但是用它还是没有实现分离;哪位仁兄有相关的经验可提供?
音视频无法同步的问题
刚入行directshow。写了一个推模式的filter,,负责从网络上接收mms流数据。。并使用ffmpeg,解码了音,视频的数据,再分别送到 video render 与 audio render 播放。。两组数据都可以正常播放。可是从无法同步。就是音频数据慢了9s。videorender 与 audiorender都是系统自带的。rnrn经过调试发现,在我的程序中,音频的sample有无设置settime或是 settime(0,0) 都没有作用。rnrn即使FilterGraph.SetSyncSource(NULL),音频也是滞后9s播放。rnrn我现在只有让视频的数据调后9s,才可以让音,视频对得上。请教下大家,这是什么原因。
MP3,MP4,音视频播放
http://www.jianshu.com/p/2448e2903b07
Android音视频-视频分解与合成(MP4文件)
上一篇们通过Camera的API结合MediaRecorder实现了视频的录制,具体的代码也大致的了解了。使用起来不是很难,这次得加大对视频的理解。在视频的基础知识里面我们了解了一些视频的相关的概念和名词,这篇文章我们搞清楚视频的组成,视频分离,视频的合成等概念和实现方法,这里操作的是MP4文件,其他的文件格式我觉得按照这个思路去了解应该也问题不大。 简介 查阅网上各种资料以后解析和分离视
vlc(window)分离mp4文件中的音视频
环境 window ,vlc播放器 使用vlc的串流功能,将视频文件中的 音频视频(编码流,比如 mp4文件中的h264,或者是其他的流)分离,输出到文件。 点击添加,选择要分离的视频文件 点击串流: 点击下一步 点击添加,设置一个要输出到的文件名称。 点下一个,进行输出配置,配置文件 播放器有几个默认的配置,现在我们是提取源数据,把激活转码去掉(其实没有关系,...
关于RTP 音视频 同步的几个问题
大家好,本来刚开始从事DS的开发,做的是一个接受HELIX广播的RTSP客户端程序,有几个问题想请教大家:rn1,通过RTP协议可以分别接收到音视频的包,解包以后存放在缓存队列里准备播放,我现在很粗糙地分别开了两个Filter Builder,用了两个智能renderer播放,导致音视频不同步比较严重,想使用DS的质量控制,不知道该如何下手,该如何将这两路的rn流合并到一个filter manager里面呢?rn2,如果需要做智能控制,请问该如何处理RTP包的时间戳和播放时SAMPLE的时间戳问题。RTP包的同步时不时需要做?如果要做质量控制,是不是还需要对待播放的数据SAMPLE时间戳?在何时打呢?rnrn希望有经验的大虾帮忙解惑……
关于mp4文件转化问题?
小弟最近做一个音视频文件转化器,应用的底层库是mplayer提供的,在将别的文件转化成mp4文件时,出现问题以下问题:用暴风影音等其他播放器不能播放,但是用mplayer库却可以。rnrn转化的mp4文件音视频类型为: 音频:aac 视频:mpeg4;rnrn本人怀疑是生成的mp4文件头不是标准的,请问标准的mp4文件格式是怎样的?
工具提取MP4中的音视频
http://www.h264encoder.com/
ffmpeg音视频同同步
将ffmpeg_play的同步代码,移植成MFC会话框程序,同时使用GDI显示,去掉SDL显示方式,同时克服console程序视频解码时发生中断的情况. 编译环境vs2005..
音视频通讯同步原理
视频流中的DTS/PTS到底是什么? DTS(解码时间戳)和PTS(显示时间戳)分别是解码器进行解码和显示帧时相对于SCR(系统参考)的时间戳。SCR可以理解为解码器应该开始从磁盘读取数据时的时间。 mpeg文件中的每一个包都有一个SCR时间戳并且这个时间戳就是读取这个数据包时的系统时间。通常情况下,解码器会在它开始读取mpeg流时启动系统时钟(系统时钟的初始值是第一个数据包的SCR值,通常...
软编码Flv 到Mp4 容器(四) fmp4 总览和基础讲解
https://github.com/332065255/flv2fmp4代码库首先约定几个定义 mp4容器,是由box组成 box分为Container box 和full boxContainer box意思是容器box,里面会包含更多的box, 代表有moov box full box是单个box,里面不会包含更多的box,代表有ftyp box标准的box开头的4个字节(32位)为
时间轴文件
时间轴文件,可以方便的对播放器的seek操作进行测试
关于时间轴问题
哪位高手能告诉我哪里有像绘声绘影时间轴的控件,或者源码的类!谢谢!
软编码Flv 到Mp4 容器(十) fmp4 mvex box 讲解
https://github.com/332065255/flv2fmp4代码库 - ftyp - moov - mvhd - trak - tkhd - mdia - mdhd - hdlr - minf - smhd
软编码Flv 到Mp4 容器(十一) fmp4 moof box详解
https://github.com/332065255/flv2fmp4代码库 - ftyp - moov - mvhd - trak - tkhd - mdia - mdhd - hdlr - minf - smhd
关于传输音视频文件时RTP时间戳的问题
现有一视频文件,可分别以RTP方式将视频或音频内容成功发送到客户端,假设发送视频时的Timestamp为3600,发送音频时的Timestamp为80.但是当将音、视频文件同时发出的时候,这个时间戳该如何去打呢?rn 假设起始的时间戳为0,音频视频内容是以一音频、一视频交错出现的!
关于时间轴
记得原来有个QQ新闻,下面会出现时间轴,以前新闻的时间在一条线上以点的方式呈现rn今天在万网也看到了http://www.net.cn/static/discount/anniversary.asp?aid=ad01_110113prn想请教各位,如果我想添加事件,自动在事件轴上显示事件点与时间,该如何实现呢?一点头绪都没rn纠结。退一步说就算不能自动,这个东西是用什么方式来实现的呢?
Android音视频-FFmpeg推流Mp4文件到电脑端查看
本文主要了解通过FFmpeg在Android端来进行推流,其中推流的主要代码参考自雷神,我主要先了解其中一个大体的过程,里面的推流c代码没有去细究。本文要了解掌握的的知识点: FFmpeg在Android端推流一个视频文件 搭建简单的流媒体服务器(srs) 查看推出来的音视频数据流(使用VLC查看) FFmpeg推流 本示例是和上一篇的整合一个FFmpeg so放在同一个module下面...
关于音视频编程的问题
要基于PC做一个管理软件,实现与嵌入式设备进行可视对讲功能,嵌入式设备音频采用硬件编解码,视频用H.264,管理机如何实现?两端的音视频编解码算法是否必须一样?另外,哪里有这方面的教程?谢谢
[求助]关于音视频的问题?
我是想写一个这样的软件:rn 软件是采用的C/S结构,我在S端有个程序,主要是把摄像头采集的视频信号和声卡输入的音频信号进行编码并向计算机的某一端口进行广播。如:http://www.abc.com:8080。现在S端的这个程序可以正常的编码和广播,只要在有网络环境的任何一台计算机上打开播放器,输入http://www.abc.com:8080就可以正常的收看。现在的问题就是:1 我想在C端写一个程序来播放上面广播的音视频信号流(现在可以播放)并保存在本地计算机上,以备日后查看。2 在播放的同时还要能实时的将声音的大小反映出来(一冲一冲的条型柱)。rn 需要注意的是:S端和C端是通过WAN连接的,有多个S端在同时进行广播(不同的URL地址和端口),而C端只有一个。要同时播放多个流信号,并将多个流的声音大小分别实时的用条型柱反映出来,且将这些流分别保存起来。rnrn 请您指点!谢谢!rn
如何使用mp4v2解析mp4文件,抽取音视频数据帧
这个示例工程可以完整的展示:如何使用libmp4v2对mp4文件进行音视频数据帧的分离。可以帮助流媒体开发人员更好的理解mp4文件结构。
C# 使用SDL2实现Mp4文件播放音视频
播放音视频的关键:视频的格式是H264,音频的格式是AAC。使用ffmpeg探测流的方式来实现音视频流的解码播放。数据处理逻辑:H264->YUV     AAC->PCM。SDL2工具类using SDL2; using System; using System.Collections.Generic; using System.Linq; using System.Runtime....
SLAudioPlay音频播放完成并测试对MP4文件音视频播放
课程包含了对流媒体(拉流)的播放,演示了播放rtmp的香港卫视,支持rtsp摄像头和http网络视频的播放,支持访问本地的视频文件,并精确显示和控制播放进度:rn1讲解如何编译Android平台的ffmpeg库,使其支持neon技术和硬解码,并测试性能rn2使用opengles的NDK shader高效播放yuv视频,不耗费cpu性能更优(GPU)rn3代码支持硬解码(省电不耗cpu)和多线程解码(高性能每秒解码240帧1080p)rn4支持网络流媒体(rtmp,rtsp,http)可直接拉流播放电视并支持rtsp摄像头访问rn5课程将设计模式应用到实践 - 观察者,构建者,门面,代理,适配器,单件模式
关于MP4文件的播放与下载
项目中有一个下载MP4文件的功能,因为需要调用第三方接口获取下载地址,所有没有使用常规的a链接指向文件地址的写法,而是采用AJax异步请求后台程序,后台程序调用第三方接口并返回下载地址到前端,写法如下:rn[code=html]rn rnrnrn[/code]rn[code=javascript] $.post('@Url.Content("~/Admin/TeachVideo/GetHikDownloadUrl")?rd=' + Math.random(),rn fileId: rowData["FileID"] , function (response) rn if (response.Code === "0") rn window.location.href = response.Desc;rn rn );rn[/code]rnrn在本地服务测试(window 2008 r2)很正常,今天发现发布到正式环境中(window 2012),点击该功能变成了直接播放了,请教各位大神这是为什么?是否跟iis版本及mime类型有关?rnrn
求问 关于mp4文件
视频经过mpeg4 video编码后 有一个文件头 是整个视频文件头 我这里有49byte(好像里面添加了一些编码器的识别字)rnrn然后要把 mepge4 video文件存成mp4文件,那么video文件的文件头应该写在哪里呢?因为编码器的识别字在一般的播放器中无法播放,所以我想把它识别字剔除,一般文件头是多少字节呢?谢谢rnrnrn这些文件头在文件第一个000001B6之前,共49byte rn
关于音视频项目打包问题
我想请教一下 用DirectShow开发的程序打包问题。 我的程序做完了,里面的一些Filter 源代码中没有,比如smart Tee 我是程序中获取的它,如果打包的话,在另一台机器中安装软件,那另一台机器会不会没有这个Filter,如果没有的话我应该如何去做呢?还有DirectShow开发的程序打包要注意一些什么?
求问关于mp4文件
视频经过mpeg4 video编码后 有一个文件头 是整个视频文件头 我这里有49byte(好像里面添加了一些编码器的识别字) rnrn然后要把 mepge4 video文件存成mp4文件,那么video文件的文件头应该写在哪里呢?因为编码器的识别字在一般的播放器中无法播放,所以我想把它识别字剔除,一般文件头是多少字节呢?谢谢 rnrnrn这些文件头在文件第一个000001B6之前,共49byte rn
关于MP4文件封装,解析
小弟最近在做mp4文件读写的程序, 看了一些文档, 对MP4文件格式有了初步的理解,rnrn写了个测试程序, 能将MP4文件的各个box解析出来, rnrn,rnrnrn但是, 我现在需要将.h264的视频封装到标准的MP4文件中, 并实现以下接口, rnrn2. int AddAudioStream (int nFormat, ...);rn 添加指定格式的音频流,及相关参数。rn 返回流对应的序号。rnrn3. int AddVideoStream (int nFormat, ...);rn 添加指定格式的视频流,及相关参数。只支持.264及FMPEG4。 rn 返回流对应的序号。rnrn4. int AddCustomData (int nType, char *pData, int nLen);rn int GetCustomData (int nType, char *pData);rn 定置数据,每个nType只能存储一个pData.rn rn5.rn int Write (int nStreamId, char *pData, int nLen, unsigned long nSampleTime, unsigned long nFlag); // 视频流时,nFlag &0x1 为1,表示关键帧,用于创建索引rn int Read (int *pStreamId, char *pData, int nLen, unsigned long *pSampleTime, unsigned long *pFlag); rn 读写码流数据。rnrnrn感觉写MP4文件比解析要困难很多啊,而且由于时间紧迫,自己一时半会搞不出来,rnrn各位,如果有谁做过这方面的工作, 能否把你们做过的程序给我一些代码片段,我参考下啊,rnrn也可以把我的程序下载下来,在我程序的基础上,帮我看看,rnrnrn我写的程序已经上传到csdn了rnrnhttp://download.csdn.net/detail/machh/4220533rnrnMp4Parse.cpp是程序入口、rnrn
FFmpeg如何同步音视频的解决方案
FFmpeg如何同步音视频的解决方案,在android客户端中如何同步。
音视频的采集、编码、封包成 mp4 输出
使用 Android Camera API 完成音视频的采集、编码、封包成 mp4 输出基于android.hardware.Camera,创建一个横屏应用,实时预览摄像...
音视频封装格式(2):MP4格式学习
MP4格式是很复杂的一种格式,其内部主要使用Box格式。 根据参考的文章,我写了一个工具,可以将mp4文件中的各种box以缩进的方式显示出来,如下图: 至于具体的每一个Box的含义,可以看参考文章,在此不多说了。 以后要是需要解析具体的Box内容,还会继续添加的。 参考: 1. http://blog.csdn.net/pirate
音视频学习-annexb与MP4之间的转换
 Annexb转MP4 目前感觉上,annexb转MP4的场景似乎不太多,但不排除某些特定场景。所以贴出下面代码。 /* annexbBuf:输入annexb类型的数据 AvccBuffer:输出MP4或者AVCC的数据 length:输入数据的总长度 */ int AnnexbToMp4(char *annexbBuf,char *AvccBuffer,int length){ int ...
关于'mp4'概念的问题
*.mp4 mpeg-4 h.264的关系是什么?rnMP4文件可以有哪些视频编码?
转换出的MP4无法同步到IPOD的问题?
我从一个AVI文件抽取三个片段,再转换为MP4,使用的编码/合成器如下:rnrnMONOGRAM X264 ENCODERrnMONOGRAM AAC ENCODERrnMONOGRAM MP4 MUXrnrn出来的MP4可以添加到ITUNES里,但不能同步到IPODrnrnIPOD里显示的文件信息如下:rnrn种类 MPEG4视频文件rn比特率 84 KBPSrn总比特率 702 KBPSrn视频尺寸 320 X 240 rn视频编解码器 H.264rnrn另一个其它软件转化的MP4却可以同步到IPOD,信息如下:rnrn种类 MPEG4视频文件rn比特率 40 KBPSrn总比特率 261 KBPSrn视频尺寸 320 X 240 rn视频编解码器 MPEG4rn声道 单声道rnrn请问怎么回事呢?是不是IPOD检测不到声道信息,还是这个编码器不好?
Fmp4文件格式介绍
MP4和FMP4文件封装格式介绍,已经和其它文件格式的比较。
libmp4v2录制MP4如何同步
现在利用开源库Libmp4v2将rtp媒体流录制成一个mp4文件,但是音视频不同步,不知道该如何解决。
媒体文件格式分析FMP4
媒体文件格式分析之FMP4 MP4 中最基本的单元就是Box,它内部是通过一个一个独立的Box拼接而成的。所以,这里,我们先从 Box 的讲解开始,每个 Box 是由 Header 和 Data 组成的,FullBox 是 Box 的扩展,Box 结构的基础上在 Header 中增加 8bits version 和 24bits flags 1. 名词解释 2. 最小单元Box ...
关于highcharts时间轴与数据绑定的问题
第一次写博客,写的不好,希望大家海涵,之所以记录下来,也是希望能够帮助和我遇见同样问题的人!有不明白的地方,可以问我
关于DREAMWEAVER4。0时间轴的问题
本人由于某一网页所需显示图片较多,因此想采用时间轴加行为在同一位置依次显示这些图片,并循环,制作完成后,发现显示的图片切换速度逐渐有递增或递减的现象,请解答。如果不采用时间轴,是否还有其它方法。rn谢谢!
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件