如何在安卓系统中使用Stagefright?

4
我想在我的应用程序中播放.ts视频文件。我不知道如何做到这一点。我怀疑在Android中是否有可能实现。
我听说过Stagefright框架。请告诉我如何在我的应用程序中使用Stagefright,以及它是否能够播放.ts文件。
或者还有其他方法可以播放.ts文件吗?
谢谢。
5个回答

1

Android有两个框架(Stagefright和Nu-Player)

  • 本地播放和渐进式下载(YouTube)- Stagefright
  • 用于流媒体(rtsp/HLS) - Nu-Player

谈到TS,如果它托管在服务器上,并且您尝试进行流媒体传输(http:///1.ts),则您的Android手机将像使用You-Tube一样将其视为渐进式下载(PD)。

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

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

如果您正在编写应用程序,则只能依赖现有的Stagefright。 MXPlayer拥有自己的多媒体框架来播放内容。


0
使用GStreamer。它支持Android,并且可以解码TS文件。
在Android.mk(jni目录中)中对教程5进行轻微修改,以将TS插件包含在GSTREAMER_PLUGINS中:
mpeg2dec mpegdemux2 mpegtsdemux mpegtsmux

那么你就可以开始了。这是针对TS内部的mpeg2。请记住,TS是一个容器,因此您可能需要具体说明TS内部流使用的编解码器。


0

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


0

StageFright对TS文件有支持,尽管非常有限,首先不支持seek(定位)。

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


0

我认为Android Stagefright不支持播放.ts(传输流)或基本流。它仅支持MP4 / 3GP / MP3文件格式或HLS播放(m2u8)。
您可以使用HLS(HTTP Live Streaming)来播放您的文件,但必须通过此类型的url http://xxxxxxxxxx.com/playlist.m3u8 进行传递。
您必须将.ts文件存储在服务器上。有关更多详细信息,请参见此处


您好,以下是翻译的内容:Ninza 感谢您的回复 :) 有没有第三方库可用于在 Android 上播放 .ts 文件? - Arun Badole
@AB1209,文件必须是本地的吗?还有另一种播放.ts文件的方法。请看我的编辑。至于第三方库ffmpeg可能可以完成任务,但它有点复杂:https://dev59.com/HW445IYBdhLWcg3wucmo#4820282 - Lazy Ninja
Ninza我已经使用.m3u8文件格式来播放.ts文件列表,它运行良好。但是我想单独播放一个.ts文件。它可以存储在本地或服务器上。 - Arun Badole
@AB1209 好的。那个我还没有尝试过。但是我认为你需要在本地级别(ndk)上做很多工作才能实现它。FFmpeg可能是一个不错的库来开始。 - Lazy Ninja
Ninza,我有一个.m3u8文件的URL,其中包含.ts文件列表,我可以轻松地使用VideoView播放该文件。因此,间接地说,VideoView正在播放.m3u8文件中列出的.ts文件。所以,请问您如何指导我使用VideoView用于播放.ts文件的功能? - Arun Badole

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接