我正在开发一个 Node.js 项目,我有一个需要从特定的平滑流视频片段中提取单个帧的需求。我正在努力将视频部分下载为可以从中提取单个帧的格式。我试图研究摆脱这个问题的方法,但我只是不知道我在看什么,也不知道如何从 A 到 B。
让我们以这个网址为例:
http://playready.directtaps.net/smoothstreaming/SSWSS720H264/SuperSpeedway_720.ism/QualityLevels(230000)/Fragments(video=0)
这将下载视频的一个片段,但我不知道这个片段实际上是什么。这似乎是按照给定的时间戳以 mp4 格式下载视频本身的一部分,但它本身无法播放。
所以,我有几个问题:
/Fragments...
时,我实际上收到了什么? fMP4?我意识到这可能要求很多。如果您可以将我链接到可以进行进一步研究的资源,或者如果您有任何信息或图书馆可以将我链接到可以帮助我实现这一目标,我将不胜感激。谢谢!
更新:
我又学到了一点点。我确实收到了 MP4 的碎片。我用MP4 Explorer手动查看,看到有一个Moof框和一个Mdat框。
我的理解是视频/音频数据存储在Mdat框中,但是您需要从Moov框读取数据以获取指向实际视频帧所在位置的指针。我没有 Moov 盒子...
哈利路亚!我不必手动执行此操作。
使用
ffmpeg
:
ffmpeg -ss 00:00:01.00 -i http://playready.directtaps.net/smoothstreaming/SSWSS720H264/SuperSpeedway_720.ism/manifest(format=mpd-time-csf) -frames:v 1 image.jpg
宾果游戏,我有框架!