我正在深入研究 Telegram bot API,它显示了以下选项sendVideo:
support_streaming 布尔 可选
如果上传的视频适合流式传输,则传递 True
这表明有些 MPEG-4 视频文件适合流式传输,有些则不适合。有何不同?如何确保我的视频文件“适合流式传输”?
use*_*686 36
据我所知,MP4 容器文件的元数据(音频/视频轨道、编解码器信息)可能位于文件开头、实际数据之前或末尾。如果元数据放置在末尾,则播放器在下载整个内容之前无法解码视频流(除非它可以搜索文件,这可以使用 HTTP 范围请求来实现)。
例如,这个文件有mdatbefore moov,所以它不能按原样流式传输:
$ atomicparsley foo.mp4 -T
Atom ftyp @ 0 of size: 32, ends @ 32
Atom free @ 32 of size: 8, ends @ 40
Atom mdat @ 40 of size: 3280091, ends @ 3280131
Atom moov @ 3280131 of size: 139261, ends @ 3419392
Atom mvhd @ 3280139 of size: 108, ends @ 3280247
Atom trak @ 3280247 of size: 57400, ends @ 3337647
Atom tkhd @ 3280255 of size: 92, ends @ 3280347
...
Atom trak @ 3337647 of size: 81158, ends @ 3418805
Atom tkhd @ 3337655 of size: 92, ends @ 3337747
...
Run Code Online (Sandbox Code Playgroud)
请参见例如FFMPEG“快速入门”文章。
此外(正如我刚刚发现的),音轨数据可以与视频数据交错,也可以不交错。如果由于某种原因没有交错,则播放器在开始接收视频数据之前再次需要等待整个音频流下载完毕(除非它可以向后/向前搜索)。
另请参见分段、分段、分裂和交错。
| 归档时间: |
|
| 查看次数: |
6689 次 |
| 最近记录: |