【问题标题】:Create a demultiplexer for MPEG 2 TS in android在 android 中为 MPEG 2 TS 创建解复用器
【发布时间】:2013-11-23 02:54:01
【问题描述】:

我有一个要求,我需要从 MPEG2 TS(HLS STREAM) 中提取 ID3 标签。 MPEG2 在播放文件方面对 android 的支持有限。但我关心的是提取 ID3 标签(不需要播放文件)。因此我不关心编解码器(编码和解码)。

我已经探索了以下选项:

libstagefright 和 OpenMax:由 Google 从 Android 2.0 实现的播放引擎。 它有一个MediaExtractor负责从底层文件系统或http流中检索轨道数据和相应的元数据。但是根据这篇帖子Adding video codec to Android 我需要构建自己的固件或自己的​​媒体播放器。我希望我不必走那条路。更多关于 stagefright 和 openMax 的信息可以在这里找到:

An overview of Stagefright player

Android’s Stagefright Media Player Architecture

Custom Wrapper Codec Integration into Android

How to integrate a decoder to multimedia framework

编译和使用 FFMPEG:一个完整​​的跨平台解决方案,用于录制、转换和流式传输音频和视频。我们可以使用这里提到的这个库来解复用 ts 文件:

FFmpeg - Extracting video and audio from transport stream file (.ts)

但我不确定是否能够从 HLS 流中提取 ID3 标签。 libavformat 或许能够做到这一点,但我仍然需要想出一种机制,将读取的元数据发送给我的应用程序。

为 android 编译 vlc:我已编译 vlc for android 并在 demux 组件中的传输模块内进行了一些修改以提取标签,但它无法播放我的所有流供应给它。

在浏览了这些选项之后,我仍然在解决如何实现这一点。我不想创建媒体播放器,因为我不会播放文件,也不想构建自己的固件。使用 ffmpeg 似乎是最可行的选择,但我想在不使用任何第三方或开源库的情况下尝试这个。我的问题是:

是否有可能从头开始创建一个可以在 android 上运行的解复用器?

如果可能的话,该怎么做呢?

我错过了什么选项?

我是新手。任何帮助将不胜感激..谢谢

【问题讨论】:

    标签: android ffmpeg http-live-streaming mpeg2-ts stagefright


    【解决方案1】:

    android 中,支持提取ID3 标签。详情请参考ID3 module

    ID3MP3 提取器的集成可以在here 中找到。

    通过快速检查,我发现从Froyo 开始支持ID3

    【讨论】:

    • 感谢回复。。我以前看过这些文件,但是android sdk是否在java中公开了这些文件?我见过 MediaMetaDataRetriever 类,但它不适用于 MPEG 2 TS 文件。
    • 在android源码树的frameworks/base/media/libstagefright/mpeg2ts中是否有MPEG2TSExtractor.cpp的java接口
    • 感谢您的帮助...我已经看到了您在该领域的专业知识,并感谢您对我的帮助..一旦我发现了什么就在这里更新
    • @anz.. 我不知道为什么MediaPlayer 没有播放您的文件。恕我直言,我觉得它更多的是配置问题而不是实现问题。要启用日志,请在此处查看我的回复:stackoverflow.com/questions/19923412/…
    猜你喜欢
    • 1970-01-01
    • 2012-03-06
    • 2012-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-01
    相关资源
    最近更新 更多