是否可以通过 MPEG-DASH 流式传输 MJPEG 内容? 什么不起作用 有什么作用

问题描述

我正在尝试使用 ffmpeg 通过破折号重新流式传输 MJPEG 流。

我有一个 ESP32 摄像头模块,它以 192.168.2.128:81/stream(Arduino 代码 here输出 MJPEG 直播。 我可以直接在浏览器中打开此流并实时查看视频,但是当我需要多客户端解决方案时,摄像头一次只允许一个客户端。

什么不起作用

我目前正在尝试实施的一个解决方案是使用运行 apache 和 ffmpeg 的单独服务器(RaspBerry Pi)使用 DASH 重新流式传输 MJPEG 内容
ffmpeg -re -i http://192.168.2.128:81/stream -strict -2 -an -c:v copy -b:v 2000k -f dash -window_size 4 -extra_window_size 0 -min_seg_duration 2000000 -remove_at_exit 1 /var/www/html/out.mpd

在服务器上执行此命令时没有出现错误。 然后我使用这个 ffmpeg-dash.html 在浏览器中显示视频。 不幸的是,这段代码失败了,在 Firefox 中控制台报告错误

[72][Stream] No streams to play.

紧随其后:

Cannot play media. No decoders for requested formats: video/mp4;codecs="mp4v.6c";width="640";height="480"

有什么作用

令我困惑的是,如果我用示例 .mkv 文件替换 MJPEG 直播 url,上面的代码工作正常,所以如果我使用
ffmpeg -re -i /var/www/html/video.mkv -strict -2 -an -c:v copy -b:v 2000k -f dash -window_size 4 -extra_window_size 0 -min_seg_duration 2000000 -remove_at_exit 1 /var/www/html/out.mpd

使用前面提到的 ffmpeg-dash.html 文件,我可以毫无问题地观看直播的示例视频 (video.mkv)。 此外,ffmpeg 似乎可以毫无问题地读取 MJPEG 直播,因为

ffmpeg -t 10 -i http://192.168.2.128:81/stream -filter:v fps=15 -c:v flv test.flv

成功返回一个 10 秒的直播片段。

所以对我来说,问题似乎在于我如何将两者结合起来。我错过了什么?甚至可以通过 MPEG-DASH 流式传输 MJPEG 内容吗? (我是新手,请为我的无知提前道歉)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)