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

标签 android video video-encoding

我正在开发一个 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/

相关文章:

android - 为什么 Android Google Cardboard SDK 不提供将视频从 url 加载到 VRVideoView 小部件中的功能?

java - Netbeans Windows 应用程序 Java 中的 Youtube 视频

像 Youtube 应用程序一样的 iOS float 视频窗口

android - 尝试在Android上播放视频时出现Resources $ NotFoundException?

android - 如何将音量键事件传递给DialogFragment

android - FragmentActivity 与 ViewPager : Crash on orientation change

apache-flex - AS3 视频在运行时进行高压缩编码(H.264?)

swift - 如何使用 Swift 3 中的 sampleBuffer、captureOutput 将视频保存到文件?

iphone - FFMPEG for iPhone 录制的视频编码

java - 在读取时修改 InputStream 读取的字节,而不是稍后修改