我正在尝试构建一个实时流式传输 Android 手机捕获的视频和音频的系统。在android端使用MediaRecorder抓取视频和auido,然后直接推送到一个用python写的服务器上。客户应该使用他们的浏览器访问这个实时提要,所以我使用 flash 实现了系统的流媒体部分。现在视频和音频内容都出现在客户端,但问题是它们不同步。我确定这是由闪存中错误的时间戳值引起的(目前我将一帧视频的 ts 增加 60 毫秒,但显然这个值应该是可变的)。
音频在安卓手机上是编码成amr的,所以我很清楚amr的每一帧是20ms。但是,视频并非如此,它被编码为 H.264。要将它们同步在一起,我必须确切地知道 H.264 的每个帧持续多少毫秒,以便我可以在稍后使用 Flash 传送内容时为它们添加时间戳。我的问题是这种信息在 H.264 的 NAL 单元中可用吗?我试图在 H.264 标准中找到答案,但那里的信息实在太多了。
有人可以给我指出正确的方向吗?谢谢。
最佳答案
时间戳不在 NAL 单元中,但通常是 RTP 的一部分. RTP/RTCP 还负责媒体同步。
RTP payload format for H.264您可能也会感兴趣。
如果您不使用 RTP,您是否只是通过网络发送原始数据单元?
关于android - H.264 实时流,NAL 单位的时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5947795/