Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android H.264实时流媒体,以NAL为单位的时间戳?_Android_Flash_Streaming_Real Time_H.264 - Fatal编程技术网

Android H.264实时流媒体,以NAL为单位的时间戳?

Android H.264实时流媒体,以NAL为单位的时间戳?,android,flash,streaming,real-time,h.264,Android,Flash,Streaming,Real Time,H.264,我正试图建立一个系统,实时流媒体视频和音频捕获的android手机。使用MediaRecorder在android端捕获视频和auido,然后直接推送到用python编写的服务器。客户端应该使用他们的浏览器访问这个实时提要,所以我使用flash实现了系统的流媒体部分。目前,视频和音频内容都出现在客户端,但问题是它们不同步。我确信这是由flash中错误的时间戳值造成的(目前我为一帧视频增加了60毫秒的ts,但显然这个值应该是可变的) 在android手机上,音频被编码到amr中,所以我知道amr的

我正试图建立一个系统,实时流媒体视频和音频捕获的android手机。使用MediaRecorder在android端捕获视频和auido,然后直接推送到用python编写的服务器。客户端应该使用他们的浏览器访问这个实时提要,所以我使用flash实现了系统的流媒体部分。目前,视频和音频内容都出现在客户端,但问题是它们不同步。我确信这是由flash中错误的时间戳值造成的(目前我为一帧视频增加了60毫秒的ts,但显然这个值应该是可变的)

在android手机上,音频被编码到amr中,所以我知道amr的每一帧都是20毫秒。然而,编码到H.264中的视频并非如此。为了将它们同步在一起,我必须准确地知道H.264的每一帧持续多少毫秒,以便稍后在使用flash交付内容时给它们加上时间戳。我的问题是,这种信息是否以H.264的NAL单位提供?我试图在H.264标准中找到答案,但是那里的信息太多了


有人能给我指一下正确的方向吗?谢谢。

时间戳不是以NAL为单位的,而是通常的一部分。RTP/RTCP还负责媒体同步

你可能也对这个问题感兴趣


如果您没有使用RTP,您只是通过网络发送原始数据单元吗?

谢谢您的回复!是的,我通过网络发送原始NAL单位。我估计每一帧视频的持续时间大约为60毫秒,所以每次发送一帧时,我都会在flash中增加60毫秒的时间戳。(似乎一个NAL单元对应一帧图片)。我肯定会查看RTP,但我想知道如何准确地处理同步?我想也许在您的情况下,您的视频演示时间并不完全相隔60毫秒。我没有在安卓上工作过:你的捕获设备(MediaRecorder)能为你提供时间戳吗?你说得对,演示时间的间隔不是60毫秒。它不是一个固定值,但在59到60之间变化。在进行实时流传输时,没有关于时间戳的可用信息。没有这些信息RTP能完成同步吗?凯,我想我真的很不走运。。。是否有其他信息可用于NAL单位?比如一帧在被下一帧替换之前应该在屏幕上保留多长时间?另外,原始h.264可以播放吗?据我所知不是这样,那么使用捕获帧的时间呢?还有,你遇到了什么样的同步问题:是持续的偏移量,还是随着你玩的时间的延长,它会变得更糟?嗨,Richard,我也在为同样的问题挣扎。你知道怎么做了吗?