首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于媒体源扩展的FFmpeg实时流

用于媒体源扩展的FFmpeg实时流
EN

Stack Overflow用户
提问于 2022-08-31 23:42:40
回答 1查看 243关注 0票数 0

我尝试使用FFmpeg实现从RTSP流到网页的视频流,并使用媒体源扩展。

预期系统图

我知道这个任务可以用HLS或WebRTC来实现,但是HLS有很大的延迟,WebRTC很难实现。

我想用FFMPEG捕获RTSP流,将它拆分到ISO BMMF(ISO/IEC 14496-12)的“实时模式”中,并通过TCP将其发送到我的web服务器,在其中,我通过websocket将这些块重新流到网页。在网页中,我在流媒体模式下将chunck附加到缓冲sourceBuffer.appendBuffer(新Uint8Array(chunck))和视频播放。

在使用ffmpeg的第一步中,我可以很容易地将RTSP流分割成分段。

代码语言:javascript
复制
ffmpeg -i test.mp4 -map 0 -c copy -f segment -segment_time 2 -reset_timestamps 1 output_%03d.mp4

但是,如果正确理解段不使用管道,则不能将输出重定向到tcp://127.0.0.1或管道:1。例如,我可以通过image2在TCP中轻松地发送jpg中的视频帧,在TCP流中捕获ff d9字节,并将流分割到jpg图像。

代码语言:javascript
复制
ffmpeg -i rtsp://127.0.0.1:8554 -f image2pipe tcp://127.0.0.1:7400

如何分割RTSP流到ISO BMMF块发送到网页播放媒体源扩展?或其他方法,以准备RTSP流与FFmpeg在MSE中播放。也许我没有正确理解MSE是如何工作的,以及如何准备播放视频。

EN

回答 1

Stack Overflow用户

发布于 2022-09-01 01:10:48

...in,我通过websocket将这些块重新流到网页。

你不需要网络套接字。比那容易多了。实际上,您也不需要MediaSource扩展。

您的服务器应该通过一个常规的HTTP响应将来自FFmpeg的数据进行流。然后,你可以在你的网页上做这样的事情:

代码语言:javascript
复制
<video src="https://stream.example.com/output-from-ffmpeg" preload="none"></video>

我如何能够分割RTSP流到ISO块发送到网页播放媒体源扩展?

您需要实现一个瘦应用服务器端来接收来自FFmpeg的STDOUT的数据,然后将其中继到客户端。为此,我发现使用WebM/Matroska更容易,因为您不必处理moov原子什么的。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73562944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档