我正在尝试使用媒体源扩展API将H.264内容以HTML5形式直播。
以下方法效果很好:
ffmpeg -i rtsp://10.50.1.29/media/video1 -vcodec copy -f mp4 -reset_timestamps 1 -movflags frag_keyframe+empty_moov -loglevel quiet out.mp4
然后:
mp4box -dash 1000 -frag 1000 -frag-rap out.mp4
我可以获取 MP4Box 输出 (out_dashinit.mp4
) 并通过 Web Sockets 将其分块发送到 JavaScript 客户端,然后由客户端馈送到媒体源 API。
但是,这对于实时内容来说并不是一个好方法。
现在我正在尝试创建单个流水线,以便以实时方式进行操作并具有最小的可能延迟。
使用 FFmpeg,可以将输出重定向到 stdout
而不是 out.mp4
并抓取内容。
我无法确定是否可以将 MP4Box 结合到管道中。
- MP4Box 是否可以从非文件源接收输入数据?
- MP4Box 是否可以逐步抓取此类内容(从文件或其他源)而在实时到达时等待一段时间,例如等待 1 秒钟后流停止并自动恢复?
- 同样的问题,但是对于输出:是否可以输出到非文件(例如
stdout
)中,并且是否可以逐步这样做,以便每当输出数据准备好时,我就可以将其取出并传输到 Web 客户端,从而生成无限长的虚线 MP4。
moof
+mdat
盒子。只要正确初始化了媒体源对象(带有moov
盒子),就可以通过它进行解析。 - Pablo Montilla