1

我已经设置 MediaCodec 使用 AVC 对帧进行编码,但我似乎不太明白为什么它给了我一个简短的 CODEC_CONFIG 和一个非常奇怪的第一帧。

00 00 00 01 65 b8 40 7f ff f0 f4 50 00 10 7d f7 0f ​​5f 7d f7 df 7d f7 df 7d f7 df 7d f7 df 7d f7 df 7d f7 df 7d f7 df 7d f7 df 7d f7 df 7d 75 d7 5d 5 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d5 57 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 5d 75 d7 80

其交替的 5d 和 d7

CODEC_CONFIG 也比正常短,似乎没有意义。

00 00 00 01 67 42 c0 1e e9 01 40 7b 40 3c 22 11 a8 00 00 00 01 68 ce 06 e2

这之后的帧是好的。

4

2 回答 2

2

如果不通过解析器运行,每件事似乎都很好。

然而,粘贴箱告诉我们。

我认为 AVC 编解码器数据包绝对值得怀疑。

17 00 00 00 00 00 00 00 01 67 42 c0 0d e9 02 83 f4 03 c2 21 1a 80 00 00 00 01 68 ce 06 e2

以下标签也是

17 01 00 00 00 00 00 00 01 65 b8 40

最后是帧间

27 01 00 00 00 00 00 00 01 41 e2 20.....

从附件 B 到 FLV 时,您需要将零字节标记转换为大小标记。您还需要按照 flash 的需要编写编解码器配置。请参阅 Red5 编解码器。在编解码器配置中,指定了用于大小标记的字节数。我认为它是 2 位 val+1。

简短的回答...相信编解码器配置..相信帧输出..并再次尝试在闪存中播放。将“0001”替换为有效负载的大小。您有正确的 3 字节显示时间,但您保留了 0001,并且您可能没有在标题中设置“大小说明符”的大小。

[2 Header][ 3 Presentaion-offset][ 2-4 size]payload [size]

可以在这里看到配置构建。 http://code.google.com/p/comserver/source/browse/trunk/plugins/shoutcast/src/org/red5/server/plugin/shoutcast/marshal/transpose/VideoFramer.java#447

于 2013-09-07T08:59:36.650 回答
0

所以有两种类型的 NAL 格式。流式传输和打包。GPU 创建一个 Stream NAL。大多数网络协议如 RTP 等都需要 Packetized 格式。打包解码器配置可在 ISO 14496-15 中的 AVCDecoderConfigurationRecord 下找到。您可以在 ISO 14496-10 中找到 Stream NAL。

您实际上必须解析出 Stream NAL 的块并将其转换为 Packetized。SPS/PPS NAL 更复杂一些。IDR 等 NAL 可以通过简单地将 00 00 00 01 字节替换为 SPS 中定义的长度参数来完成。

于 2013-09-13T17:02:10.093 回答