如何使用 Kotlin 或 Java(不使用 FFmpeg)在 Android 上从 .mp4 创建分段 MPEG-4 (FMP4) 文件

问题描述 投票:0回答:1

有没有办法在 Android 上获取

.mp4
视频文件并创建 碎片 MPEG-4 (FMP4) 视频容器文件(带有随附的播放列表 .m3u8 文件)? Java 或 Kotlin 都可以,但我不想使用 FFmpeg。

我想使用 FMP4 文件通过 HTTP 直播流 (HLS) 协议进行视频点播流(不是直播流)。编解码器是基本的 H.264/AAC。 Android 支持使用 HLS 播放 FMP4 容器,如此处所述。 HLS 的 FMP4 规范位于此处

Apple 有一个视频介绍如何在 iOS 上执行此操作,但我在 Android 上找不到任何内容。

有 Android Media3 Transformer API,但看起来它不能做到这一点。它有一个 FragmentedMp4Extractor 类,但仅用于从 FMP4 容器格式中提取数据。

JCodec 似乎也无法做到这一点。请求碎片 MP4 的项目中有一个未解决的问题

java android http-live-streaming android-mediacodec android-media3
1个回答
0
投票

您可以使用 Transformer API 生成碎片 mp4 视频:

    val transformerBuilder = Transformer.Builder( /* context= */this)
    val muxerFactory = InAppMuxer.Factory.Builder()
            .setOutputFragmentedMp4(true)
            .build()
    transformerBuilder.setMuxerFactory(muxerFactory)
© www.soinside.com 2019 - 2024. All rights reserved.