Android Mediamuxer moov atom

Posted

技术标签:

【中文标题】Android Mediamuxer moov atom【英文标题】: 【发布时间】:2016-09-14 05:50:50 【问题描述】:

我正在使用MediacodecMediamuxer api 记录设备屏幕,一切都很好。

现在我想在录制的同时流式传输这个文件,但是直到muxer 停止并且 moov atom 被写入文件末尾。

所以我的问题是甚至可以使用Mediamuxer 来达到目的吗?如果没有,有什么替代方案?

【问题讨论】:

只是一个问题.. 您的用例是否存在不能同时写入文件和流式传输的限制?如果没有,您可以只创建 2 个接收器,即 MediaMuxer 和一个流组件,并使用相同的编码器输出进行写入和流 @Ganesh 我没有完全理解你,但我的用例是我必须将录制流式传输到 chromecast(录制时,即镜像屏幕)并且 chromecast 找不到 moov 框,因此无法播放文件,顺便说一句,你能解释一下 2 个接收器吗? 我的观点更多地与 NVR 或 DVR 类型的用例有关,其中流同时写入磁盘并使用RTP 通过网络流式传输。显然,这与您的用例不同,因为您需要 DLNA 类型传输,正如下面的答案所示,这是不可能的.. 我不知道它是否可能,但 cyanogenmod 有内置的应用程序可以执行相同的检查更新问题 【参考方案1】:

不,这不可能。

为了在写入的同时发送 MP4 文件,您需要写入分段的 MP4,而 MediaMuxer 只写入非分段的 MP4。

【讨论】:

好的,是否可以在开头而不是结尾用一些假数据编写 moov atom 没有。在非分段 MP4 中,moov atom 包含文件中每个单独数据包的描述,在您实际完成流之前无法写入。 这就是我想做的,如果不可能的话,氰基是怎么做的?检查更新的问题 更新后的问题包含无法加载的图像。 CyanogenMod 可能正在使用其他一些 API。您可以通过使用不同的库而不是内置的 MediaMuxer 来编写 MP4 来自己完成此操作。但如何做到这一点是一个不同的问题。如果您想问的不是最初的问题,请提出新问题。 投射功能不使用MediaMuxer,而是使用其他私有API。

以上是关于Android Mediamuxer moov atom的主要内容,如果未能解决你的问题,请参考以下文章

Android Multimedia框架总结(二十四)MediaMuxer实现手机屏幕录制成gif图

Android在MediaMuxer和MediaCodec录制视频示例 - audio+video

如果 Android API 级别低于 26,如何将存储访问框架与 MediaMuxer 一起使用

Android将mp3转成AAC再混合到视频中

Android 深入系统完全讲解(29)

Android 深入系统完全讲解(29)