我正在使用连接到我的Android设备的USB设备
此设备向我发送包含视频帧的缓冲区 它不断地剂量。
当我收到缓冲区时,我应该将特定的标题放入其中并将其作为m4v视频文件写入SD卡。
然后我应该在媒体播放器中播放它 到目前为止它工作正常但我应该现场直播。一旦usb设备发送缓冲区我就应该处理它并播放它以便我可以显示视频。
我的问题是如何从字节缓冲区播放视频文件而不将其存储在SD卡中?
答案 0 :(得分:2)
我知道这个问题已经有一段时间了,但是我遇到的情况与我通过USB连接传输视频传输流的情况相同。
您似乎需要创建一个扩展MediaDataSource的数据源,并提供readAt()
和getSize()
方法。
我的理解是Android的MediaPlayer,当您提供URL / URI作为数据源时(通过setDataSource()
,处理所有网络以下载数据或从存储中检索数据,并拥有自己的MediaDataSource是玩家用户。
我的计划是创建一个服务,从USB设备获取传输流,并不断更新我提供给MediaPlayer的自定义MediaDataSource。
Here是我在这个主题上唯一能找到的东西,这是一个用MediaDataSource和MediaPlayer进行测试的测试。他们将文件中的视频读入字节数组,然后将该数组用于readAt()
和getSize()
方法。
我能找到的其他资源只是为MediaPlayer提供字符串的人,但没有涉及到自己的网络。此外,我很好奇视频是如何与固定大小的视频不同而不同。
编辑:我写了一篇关于MediaDataSource的博客文章以及如何开始使用它。这是link。
答案 1 :(得分:0)
我发现jacks205没有提到Closeable中的抽象方法close()。我们还需要编写close(),否则编译将报告以下错误: YourMediaDataSource不是抽象的,不会覆盖Closeable中的抽象方法close()