【问题标题】:How to use Stagefright in Android?如何在 Android 中使用 Stagefright?
【发布时间】:2012-12-06 11:43:04
【问题描述】:

我想在我的应用程序中播放.ts 视频文件。我没有办法做到这一点。 我怀疑在Android中是否可以做到。

我听说过Stagefright 框架。所以请告诉我如何在我的应用程序中使用Stagefright 以及它是否能够播放.ts 文件。

或者有没有其他方法可以播放.ts文件?

谢谢

【问题讨论】:

  • +1 有趣的问题

标签: android stagefright


【解决方案1】:

我认为 Android stagefright 不支持播放 .ts(传输流)或基本流。它仅支持 MP4/3GP/MP3 文件格式或 HLS 播放(m2u8)。
你可以使用 HLS(HTTP Live Streaming) 来播放你的文件,但是你必须传递一个 http://xxxxxxxxxx.com/playlist.m3u8 类型的 url。
不过,您必须将 .ts 文件存储在服务器中。详情请参考here

【讨论】:

  • Ninza 感谢您的回复:) 是否有任何适用于 Android 的第三方库可用于播放 .ts 文件?
  • @AB1209,文件必须是本地的吗?还有另一种播放 .ts 文件的方法。请参阅我的编辑。至于第三方库 ffmpeg 可以做,但是有点复杂:stackoverflow.com/a/4820282/1503155
  • Ninza 我使用 .m3u8 文件格式播放 .ts 文件列表,效果很好。但我想单独播放 .ts 文件。它可以存储在本地或服务器上。跨度>
  • @AB1209 好的。那个我还没试过。但是我认为您必须在本机级别(ndk)上做很多工作才能实现它。 ffmpeg 可能是一个很好的库。
  • Ninza 我有一个 .m3u8 文件的 url,其中包含 .ts 文件的列表,我可以使用 VideoView 轻松播放该文件。因此,VideoView 正在播放 .m3u8 文件中列出的 .ts 文件。所以请你指导我如何使用 VideoView 用来播放 .ts 文件的功能。
【解决方案2】:

Libstagefright 支持 mpeg2ts(参见 Android JellyBean framewroks/av/media/libstagefright/mpeg2ts) GingerBread 支持它(我猜)。

【讨论】:

    【解决方案3】:

    使用GStreamer。它支持Android,并且可以解码TS文件。

    教程 5 需要在 Android.mk(在 jni 目录)中稍作修改,以在 GSTREAMER_PLUGINS 中包含 TS 插件:

    mpeg2dec mpegdemux2 mpegtsdemux mpegtsmux
    

    那你就可以走了。这适用于 TS 内的 mpeg2。请记住,TS 是一个容器,因此您可能需要具体说明 TS 内的流使用什么编解码器进行编码。

    【讨论】:

      【解决方案4】:

      StageFright 支持 TS 文件,尽管它非常有限,但不支持初学者搜索。

      还取决于 TS 文件中使用的视频编解码器,StageFright 实现支持的很少(我认为只有 H264,但对此不确定)。除了这个 TS 文件的 StageFright 实现还受到谷歌的 TS 解析器实现的限制,这也是非常基本的。它播放“可能的”TS 文件的一小部分。我说“可能”是因为 TS 标准 (ISO/IEC 13818-1) 为编码器留下了很大的解释空间和可能性。

      【讨论】:

        【解决方案5】:

        Android中有2个框架(Stagefright & Nu-Player)

        • 用于本地播放和渐进式下载(You-Tube)-Stagefright
        • 用于流式传输 (rtsp/HLS) - Nu-Player

        来到 TS,如果它托管在服务器中并且如果您尝试流式传输 (http:///1.ts),那么它会被视为渐进式下载 (PD),就像您的 Android 手机的 You-Tube 一样。

        为了播放本地/PD 内容,Stagefright 会加载 Parser 组件 (MPEG2TSExtractor.cpp) 来解析 TS 内容。在旧版本中,上述解析器模块不支持渐进式下载。这就是播放不成功的原因。

        在最近的版本中添加了这种支持。

        如果你正在写一个APP,那么你只能依赖现有的Stagefright。 MXPlayer 有自己的多媒体框架来播放内容。

        【讨论】:

          猜你喜欢
          • 2014-03-02
          • 2011-10-17
          • 2014-02-24
          • 2016-10-07
          • 2014-03-21
          • 2013-12-02
          • 2013-11-06
          • 2011-10-11
          • 2012-11-14
          相关资源
          最近更新 更多