Android Mediacodec 在不同平台(Android、iOS、Web)中编码 h264 和解码

Android Mediacodec encode h264 and decode in different platforms (Android,iOS, Web)

我正在开发一个 Android 应用程序 (min sdk=21),它需要将实时视频(从 Android 设备摄像头捕获)流式传输到不同的平台(Android/IOS/web) .
我决定使用 Media 编解码器将视频编码为 h.264,并通过 TCP socket 将原始数据发送到其他设备。

我从媒体编解码器创建了一个输入表面,并将颜色格式设置为 MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface

Android 设备应该能够解码此原始数据,但是是否有可能 在 iOS 或 Web[=25] 中解码此原始数据=]如果我选择这种颜色格式呢?

是的,输入的颜色类型无关紧要。即使您使用 COLOR_FormatSurface,它仍然被编码为普通 YUV 4:2:0 视频,就像您使用其他非表面颜色格式一样。

如果您手动选择更不常见的颜色格式,如 YUV 4:4:4(当不使用表面输入时),编码器可以选择实际将其下采样为 YUV 4:2:0(以及所有解码器会支持它)或保持原样并编码为更不常见的 H264 变体,并非所有解码器都能够解码。