尝试将 HEVC 编码的视频复用到三星 Galaxy S6 上的 MediaMuxer MPEG-4 容器。
MediaFormat(从 MediaCodec 获得):
{height=1080, width=1920, max_capacity=8847360, what=1869968451, mime=video/hevc, csd-0=java.nio.ByteArrayBuffer[position=0,limit=76,capacity=76], remained_resource=6773760}
根据文档中的表格, csd-0出现在那里,这对于 H265/hevc 来说已经足够了
MediaMuxer 基于此格式创建索引为 0 的视频轨道。在编写了一些示例然后调用之后mediaMuxer.stop()
,IllegalStateException
会抛出并在 logcat 中显示以下内容:
E/MPEG4Writer:缺少编解码器特定数据 D/MPEG4Writer:视频轨道停止 D/MPEG4Writer:视频轨道源停止 D/MPEG4Writer:视频轨道源停止 I/MPEG4Writer:接收到的总/0 长度 (247/0) 缓冲区和编码的 247 帧。- 声音的 I/MPEG4Writer:音轨漂移时间:0 us I/MPEG4Writer:接收到总/0 长度 (173/0) 缓冲区并编码 173 帧。- 视频 D/MPEG4Writer:视频轨道停止 D/MPEG4Writer:音轨停止 D/MPEG4Writer:音轨源停止 D/MPEG4Writer:音轨源停止 D/MPEG4Writer:音轨停止 D/MPEG4Writer:轨道范围的持续时间是 [5744606, 5764430] 我们 D/MPEG4Writer:停止编写器线程 D/MPEG4Writer:最后一批写入了 0 个块 D/MPEG4Writer:编写器线程已停止 E/MP4FileMuxer:完成:停止或释放失败 java.lang.IllegalStateException:无法停止多路复用器
生成的 MP4 文件无法播放。可能是什么问题?