使 Android 视频文件准备好通过 HTTP 播放

Posted

技术标签:

【中文标题】使 Android 视频文件准备好通过 HTTP 播放【英文标题】:Making Video files Android ready for playback over HTTP 【发布时间】:2010-07-09 10:24:34 【问题描述】:

我正在开发一个 android 应用程序,该应用程序应该通过 HTTP 在 Android 设备上播放视频。在我们设置服务器来托管视频文件之前,我们需要澄清一些事情:

根据开发者文档,Android 支持视频的 .mp4 和 .3gp 容器格式。如果我们使用 H.263(video) - AAC LC (Audio) 音频-视频编解码器用于我们的媒体文件,我们是否能够通过将 URL 传递给 MediaPlayer 类来播放视频?

我做了一个小实验,将其中一个视频文件(.mp4)的 URL 传递给 MediaPlayer 类,得到以下错误:

命令 PLAYER_INIT 以 错误或信息 PVMFErrContentInvalidForProgressivePlayback

从文档中,我了解到对于渐进式播放,视频的索引(例如 moov atom)应该位于文件的开头。

问题: 1. 我们如何让我们的视频支持 Android? 2. 我们需要做哪些不同的考虑?

请帮忙。

谢谢。

【问题讨论】:

您使用哪些软件来制作视频? 不确定;我刚得到了一堆我需要托管的东西 【参考方案1】:

您实际上可以使用 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 库可以从项目网站下载。

【讨论】:

【参考方案2】:

我在 Android-developers google group 上交叉发布了这个问题。马克在那里回答。谢谢马克! See this thread

【讨论】:

以上是关于使 Android 视频文件准备好通过 HTTP 播放的主要内容,如果未能解决你的问题,请参考以下文章

如何使用AngularJS使文档准备好条件?

视频编码之I帧 、P帧、B帧

来自 YouTube 的视频源文件使 Android Studio 中的应用程序崩溃

如何通过单击 Android 中的按钮使 VideoView 全屏显示?

Android 录制没有音频的视频

Android学习路线图