Ffmpeg 在残缺的MP4中寻找

Ffmpeg 在残缺的MP4中寻找,ffmpeg,mp4,mpeg,fmp4,Ffmpeg,Mp4,Mpeg,Fmp4,对于我的web客户端,我希望用户能够立即播放曲目,而不必下载整个文件。为此,我使用了带有AAC音频编码的分段MP4(Mime类型:audio/MP4;codecs=“mp4a.40.2”) 这是用于将输入文件转换为fMP4的命令: ffmpeg-i/tmp/input.any\ -强积金4\ -movflags faststart+单独的\u moof+空的\u moov+默认的\u base\u moof\ -acodec aac-b:a 256000\ -frag_持续时间500K\ /tm

对于我的web客户端,我希望用户能够立即播放曲目,而不必下载整个文件。为此,我使用了带有AAC音频编码的分段MP4(Mime类型:
audio/MP4;codecs=“mp4a.40.2”

这是用于将输入文件转换为fMP4的命令:

ffmpeg-i/tmp/input.any\
-强积金4\
-movflags faststart+单独的\u moof+空的\u moov+默认的\u base\u moof\
-acodec aac-b:a 256000\
-frag_持续时间500K\
/tmp/output.mp4
如果我在上查看此文件,我会看到该文件是这样分段的:

ftyp
moov
moof
mdat
moof
mdat
..
moof
mdat
mfra
ftyp
moov
moof # 00:00
mdat 
moof # 00:01
mdat
moof # 00:02
mdat
moof # 00:03
mdat
mfra
到目前为止,这看起来还不错,但我现在面临的问题是,我不清楚如何在不引入额外开销的情况下开始从特定时间戳加载数据。我的意思是,我需要特定时间戳的第一个
[moof][mdat]
的精确字节偏移量,而不需要整个文件

假设我有一个如下所示的文件:

ftyp
moov
moof
mdat
moof
mdat
..
moof
mdat
mfra
ftyp
moov
moof # 00:00
mdat 
moof # 00:01
mdat
moof # 00:02
mdat
moof # 00:03
mdat
mfra
但是,此文件不能直接在我的服务器上使用,它是从另一个服务加载的,但客户端希望从
00:02
开始请求数据包

有没有一种方法可以有效地执行此操作,而无需将整个文件从另一个服务加载到我的服务器

我的猜测是加载
[ftyp][moov]
(或者至少将这部分存储在我自己的服务器上),但据我所知,存储在这些框中的元数据不会帮助我找到第一对
[moof][mdat]
-的字节偏移量

这是可能的还是我采取了错误的方法