Android Mediamuxer moov atom
Posted
技术标签:
【中文标题】Android Mediamuxer moov atom【英文标题】: 【发布时间】:2016-09-14 05:50:50 【问题描述】:我正在使用Mediacodec
和Mediamuxer
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