使用 mp4box 直播破折号内容
Live streaming dash content using mp4box
我正在尝试使用媒体源扩展 [=45] 将 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 套接字将其逐块发送到提供它的 JavaScript 客户端到媒体来源 API.
但是,这不是直播内容的好方法。
我现在想做的是创建一个单一的管道,以便实时并尽可能减少延迟。
使用 FFmpeg 可以将输出重定向到 stdout
而不是 out.mp4
并获取内容。
我不知道是否可以将 MP4Box 合并到管道中。
- MP4Box 可以从非文件来源获取输入数据吗?
- MP4Box 能否在实时到达时逐步抓取此类内容(从文件或其他来源)?即,如果流停止 1 秒并自动恢复,稍等片刻。
- 同样的问题,但对于输出:它能输出到不是文件的东西吗(比如
stdout
),它能逐步输出,这样每当输出数据准备好时,我就可以接受它并将其传输到 Web 客户端,本质上生成一个永无止境的虚线 MP4。
您不需要 MP4Box 来生成所需的输出,但您需要自己将内容分块以在生成的文件中查找框。
基本上你会用H264
生成一个fMP4
,并向浏览器发送初始化的moov
框和MP4每个片段的moof+mdat
框你产生的。您必须在 JavaScript 中编写播放器代码,您可能无法使用标准的 DASH 播放器。
要生成正确的分段 MP4,您需要将其传递给 ffmpeg:-movflags empty_moov+omit_tfhd_offset+frag_keyframe+default_base_moof
。
务必使用可用的最新版本。
据我了解您的解决方案,您不是在流式传输而是在逐步下载单个 MP4 文件。我理解正确吗?
我最近启动了 RTP2DASH 项目来从 RTP 数据源进行真正的 DASH 直播。它仍然非常 'alpha' 但对于简单的用例应该很容易采用。
我正在尝试使用媒体源扩展 [=45] 将 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 套接字将其逐块发送到提供它的 JavaScript 客户端到媒体来源 API.
但是,这不是直播内容的好方法。
我现在想做的是创建一个单一的管道,以便实时并尽可能减少延迟。
使用 FFmpeg 可以将输出重定向到 stdout
而不是 out.mp4
并获取内容。
我不知道是否可以将 MP4Box 合并到管道中。
- MP4Box 可以从非文件来源获取输入数据吗?
- MP4Box 能否在实时到达时逐步抓取此类内容(从文件或其他来源)?即,如果流停止 1 秒并自动恢复,稍等片刻。
- 同样的问题,但对于输出:它能输出到不是文件的东西吗(比如
stdout
),它能逐步输出,这样每当输出数据准备好时,我就可以接受它并将其传输到 Web 客户端,本质上生成一个永无止境的虚线 MP4。
您不需要 MP4Box 来生成所需的输出,但您需要自己将内容分块以在生成的文件中查找框。
基本上你会用H264
生成一个fMP4
,并向浏览器发送初始化的moov
框和MP4每个片段的moof+mdat
框你产生的。您必须在 JavaScript 中编写播放器代码,您可能无法使用标准的 DASH 播放器。
要生成正确的分段 MP4,您需要将其传递给 ffmpeg:-movflags empty_moov+omit_tfhd_offset+frag_keyframe+default_base_moof
。
务必使用可用的最新版本。
据我了解您的解决方案,您不是在流式传输而是在逐步下载单个 MP4 文件。我理解正确吗?
我最近启动了 RTP2DASH 项目来从 RTP 数据源进行真正的 DASH 直播。它仍然非常 'alpha' 但对于简单的用例应该很容易采用。