kotlin Android Transformer API是否优化输入视频,使其可通过互联网进行流式传输(faststart)?

q43xntqr  于 2023-10-23  发布在  Kotlin
关注(0)|答案(1)|浏览(105)

有谁知道Android Transformer API是否优化了输入视频,使其可以通过互联网进行流式传输(通过将moov原子移动到前面)?有没有什么可以设置的?
我能在文档中找到的就是这个:
输入可以是ExoPlayer支持的任何容器格式,但输出始终是MP4文件。
考虑到输出始终是MP4,它可能是针对Web流进行了优化,但我想确定这是否是默认情况,或者是否需要在运行Transformer之前进行设置。

t9aqgxwy

t9aqgxwy1#

简短回答:目前不支持快速启动。
更长的答案:Media3 Transformer有2种多路复用器实现:

  1. DefaultMuxer使用FrameworkMuxerFrameworkMuxer使用系统MPEG4Writer(Stagefright引擎的一部分)。
  2. InAppMuxer使用自己的实现,称为Mp4Muxer
    两个多路复用器最后写入moov原子(在mdat之后)。
    您可以使用诸如AtomicParsley之类的工具来验证这一点。
AtomicParsley transformer-output.mp4 -T
Atom ftyp @ 0 of size: 28, ends @ 28
Atom mdat @ 28 of size: 11822589 (^), ends @ 11822617
             (^)denotes a 64-bit atom length
Atom moov @ 11822617 of size: 4424, ends @ 11827041
     Atom mvhd @ 11822625 of size: 108, ends @ 11822733
     Atom meta @ 11822733 of size: 177, ends @ 11822910
         Atom  @ 11822745 of size: 4296, ends @ 11827041

Media3团队意识到了这个问题:https://github.com/androidx/media/issues/727

相关问题