我正在使用连接到我的 Android 设备的 USB 设备
该设备向我发送一个包含视频帧的缓冲区
它不断地剂量。
当我收到缓冲区时,我应该将特定的标头放入其中并将其作为 m4v 视频文件写入 SD 卡。
那我应该在媒体播放器中播放它
到目前为止,它运行良好,但我应该现场播放视频。一旦 USB 设备向我发送缓冲区,我就应该处理它并播放它,以便我可以显示视频。
我的问题是如何从字节缓冲区播放视频文件而不将其存储在 SD 卡中?
我知道问题提出已经有一段时间了,但我也处于同样的情况,我有一个通过 USB 连接的视频传输流。
看起来您需要创建一个扩展 MediaDataSource 并提供readAt()
and getSize()
方法。
我的理解是Android的MediaPlayer,当你提供一个URL/URI作为数据源时(通过setDataSource()
,处理所有网络下载数据或从存储检索数据,并拥有播放器用户自己的 MediaDataSource。
我的计划是创建一个从 USB 设备获取传输流的服务,并不断更新我提供给 MediaPlayer 的自定义媒体数据源。
Here是我能找到的关于该主题的唯一内容,这是为使用 MediaDataSource 和 MediaPlayer 进行测试而编写的测试。他们将视频从文件读取到字节数组中,然后使用该数组readAt()
and getSize()
方法。
我能找到的唯一其他资源是人们向 MediaPlayer 提供字符串,但没有涉及建立自己的网络。另外,我很好奇恒定的视频流与固定大小的视频有何不同。
编辑:我写了一篇关于 MediaDataSource 以及如何开始使用它的博客文章。这里是link.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)