有没有办法在 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 的项目中有一个未解决的问题。
您可以使用 Transformer API 生成碎片 mp4 视频:
val transformerBuilder = Transformer.Builder( /* context= */this)
val muxerFactory = InAppMuxer.Factory.Builder()
.setOutputFragmentedMp4(true)
.build()
transformerBuilder.setMuxerFactory(muxerFactory)