【发布时间】:2012-12-06 11:43:04
【问题描述】:
我想在我的应用程序中播放.ts 视频文件。我没有办法做到这一点。
我怀疑在Android中是否可以做到。
我听说过Stagefright 框架。所以请告诉我如何在我的应用程序中使用Stagefright 以及它是否能够播放.ts 文件。
或者有没有其他方法可以播放.ts文件?
谢谢
【问题讨论】:
-
+1 有趣的问题
标签: android stagefright
我想在我的应用程序中播放.ts 视频文件。我没有办法做到这一点。
我怀疑在Android中是否可以做到。
我听说过Stagefright 框架。所以请告诉我如何在我的应用程序中使用Stagefright 以及它是否能够播放.ts 文件。
或者有没有其他方法可以播放.ts文件?
谢谢
【问题讨论】:
标签: android stagefright
我认为 Android stagefright 不支持播放 .ts(传输流)或基本流。它仅支持 MP4/3GP/MP3 文件格式或 HLS 播放(m2u8)。
你可以使用 HLS(HTTP Live Streaming) 来播放你的文件,但是你必须传递一个 http://xxxxxxxxxx.com/playlist.m3u8 类型的 url。
不过,您必须将 .ts 文件存储在服务器中。详情请参考here。
【讨论】:
Libstagefright 支持 mpeg2ts(参见 Android JellyBean framewroks/av/media/libstagefright/mpeg2ts)
GingerBread 支持它(我猜)。
【讨论】:
使用GStreamer。它支持Android,并且可以解码TS文件。
教程 5 需要在 Android.mk(在 jni 目录)中稍作修改,以在 GSTREAMER_PLUGINS 中包含 TS 插件:
mpeg2dec mpegdemux2 mpegtsdemux mpegtsmux
那你就可以走了。这适用于 TS 内的 mpeg2。请记住,TS 是一个容器,因此您可能需要具体说明 TS 内的流使用什么编解码器进行编码。
【讨论】:
StageFright 支持 TS 文件,尽管它非常有限,但不支持初学者搜索。
还取决于 TS 文件中使用的视频编解码器,StageFright 实现支持的很少(我认为只有 H264,但对此不确定)。除了这个 TS 文件的 StageFright 实现还受到谷歌的 TS 解析器实现的限制,这也是非常基本的。它播放“可能的”TS 文件的一小部分。我说“可能”是因为 TS 标准 (ISO/IEC 13818-1) 为编码器留下了很大的解释空间和可能性。
【讨论】:
Android中有2个框架(Stagefright & Nu-Player)
来到 TS,如果它托管在服务器中并且如果您尝试流式传输 (http:///1.ts),那么它会被视为渐进式下载 (PD),就像您的 Android 手机的 You-Tube 一样。
为了播放本地/PD 内容,Stagefright 会加载 Parser 组件 (MPEG2TSExtractor.cpp) 来解析 TS 内容。在旧版本中,上述解析器模块不支持渐进式下载。这就是播放不成功的原因。
在最近的版本中添加了这种支持。
如果你正在写一个APP,那么你只能依赖现有的Stagefright。 MXPlayer 有自己的多媒体框架来播放内容。
【讨论】: