android - 在 android 中为 MPEG 2 TS 创建一个解复用器

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

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

我探索了以下选项:

libstagefright and 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中,支持提取ID3标签。请引用ID3 module了解更多详情。

ID3 集成到 MP3 提取器中可以找到 here .

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

关于android - 在 android 中为 MPEG 2 TS 创建一个解复用器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19904085/

相关文章:

java - 永久 SensorEventListener 震动

JavaCV获取当前上传比特率

android -/hardware/qcom/media-caf/msm8916 出现错误

android.mk LOCAL_MODULE_FILENAME 不应包含扩展名

YouTube 3D 并排电影的 FFmpeg 元数据标签

android - 如何从服务器播放音频文件 Mp3

image-processing - 如何从 http 网络摄像头直播中捕获图像

android - Fire base onMessageReceived 根本不起作用

javascript - React Native 响应式屏幕