你好!
为流式传输AVC+AAC视频编写RTMP
Streaming Server 。它适用于. 但我不能强迫它在flowplayer和其他 Flash 视频播放器中工作。rtmpdump
握手后的消息序列类似于FMS / RED5 / erlyvideo / haxevideo服务器:我尝试了很多变体。
从 Chrome 调试控制台我可以看到,所有协商消息传递给 flowplayer。最后一个是 onMetaData。在此之后,工作示例 ( rtmp://flash.tvwmedia.net/LiveVideo//Live300 ) 得到NetStream.Buffer.Full
。从我的服务器流式传输不明白。
我从 AVC Header 消息开始,包含 sps/pps。之后,第一张 AVC 图片通过了。之后 - AAC 标头和 AAC 样本。然后是 AVC/AAC 采样。这可以通过rtmpdump
- 我在退出时使用flv 。但是flowplayer和其他人不起作用。
- 可能是什么问题?
- 对流有任何额外要求吗?
- 损坏的 h264 流是否有可能导致 flashplayer 停止播放?是否可以从 flash player 获取系统消息,其中说明了它?
希望,您可以帮助我:) 我在 2 周内一直在解决这个问题,现在只是不知道我可以尝试的任何变体。
这是调试日志 + flv来自rtmpdump
. 它包含谈判信息和一些第一批媒体样本。
更新:
我已经修复了一个错误:用于“系统”消息(例如SetChunkSize
)的错误的块 stram ID。但是还是不玩了。这是另一个 log ,与wowza生成的几乎相同。还有 wowza/red5 日志(比较)。
我检查了以下内容,这些内容在 RTMP 服务器中有所不同:
- 不同的 ChunkStreamID(用于非系统流)
- 不同的 StreamID (on
createStream
) - 128b ank 4Kb 块大小
- 解压/打包的块头(在上一个日志中有解压的,在新的 - 打包的)
- 随叫随到的不同答案
connect
(来自许多服务器) - 使用
57 00
,57 01
视频数据包(视频信息/命令帧) - 每张图片前加09(Access Unit Delimiter)NALU
- 不同顺序的音频/视频 DCR/数据包
- 仅音频/仅视频
但是调整所有这些并没有让我的服务器正常工作:)
任何想法如何解决这个问题?
更新:
正如彼得建议的那样,我已经通过Flazr代理记录了日志。结果是一样的。而且我找不到解决方案:两个日志看起来都不错。也许我只是没有看到简单的东西......
谢谢!