我正在开发一个 Android 应用程序,它应该在 Android 设备上通过 HTTP 播放视频。在我们设置服务器来托管视频文件之前,我们需要澄清一些事情:
根据开发者文档,Android 支持 .mp4 和 .3gp 视频容器格式。如果我们使用 H.263(视频)- AAC LC(音频)音频视频编解码器用于我们的媒体文件,我们是否能够通过将 URL 传递给 MediaPlayer 类来播放视频?
我做了一个小实验,将其中一个视频文件 (.mp4) 的 URL 传递给 MediaPlayer 类,但出现以下错误:
Command PLAYER_INIT completed with an error or info PVMFErrContentInvalidForProgressivePlayback
从文档中,我了解到对于渐进式播放,视频的索引(例如 moov atom)应该位于文件的开头。
问题:
1. 我们如何让我们的视频支持 Android?
2. 我们需要考虑哪些不同的因素?
请帮忙。
谢谢。
最佳答案
您实际上可以通过使用 JCodec (http://jcodec.org) 的 ISO BMF (MP4) 容器的纯 Java 实现来实现这一点。为此,请使用以下代码:
MovieBox movie = MP4Util.createRefMovie(new File("bad.mp4"));
new Flattern().flattern(movie, new File("good.mp4"));
'Flattern' 的副作用是创建一个网络优化的电影文件,其标题在 数据之前。
您还可以从命令行使用类似的功能:
java -cp jcodec-0.1.3-uberjar.jar org.jcodec.movtool.WebOptimize <movie>
JCodec 库可以从项目网站下载。
关于android - 使视频文件 Android 准备好通过 HTTP 播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3211713/