我正在参与构建实时消息协议(protocol)解析器,正在从RTMP数据包中收集视频/音频数据,现在要在任何播放器中播放视频,我需要了解容器格式以及所使用的编解码器。我从RTMP数据包中获取的数据我知道使用的编解码器(例如On2 VP6)。但是我不知道如何知道所接收的音频/视频流的容器。所以我应该假设RTMP仅支持FLV容器吗?还是我可以从其他任何容器格式中获取音频/视频数据包?如果是,那么如何从RTMP数据包中的信息中知道从RTMP数据中使用的容器类型?Adobe RTMP规范不提供有关音频/视频数据容器的任何信息。任何帮助吗?我在这里停留了一段时间。
最佳答案
这是一个错误的问题。
RTMP是一种传输协议(protocol),其中包含容器。
从技术上讲,RTMP承载FLV是不正确的,因为FLV具有两层封装,而RTMP仅承载底层。
因此,可以说RTMP只能传输FLV可以的那些编解码器,而说RTMP可以传输FLV并不是100%正确的。
Adobe的RTMP规范不是为开发人员创建的,而是针对Wowza的一个法律问题而创建的,因此它并不是为了让您了解正在发生的事情而编写。阅读red5,crtmp或其他rtmp服务器的资源,它们很容易理解。
关于audio - 实时消息协议(protocol)流的所有可能容器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39785114/