【问题标题】:ffmpeg transcode to live streamffmpeg 转码为直播
【发布时间】:2023-04-10 10:04:01
【问题描述】:

我需要在 html 视频标签中显示一个 ip camera 流,我已经想出了如何像这样从 rtsp 流转码为文件

ffmpeg -i "rtsp://user:password@ip" -s 640x480 /tmp/output.mp4

现在我需要能够像这样在视频标签中实时流式传输 rtsp 输入

<video id="video" src="http://domain:port/output.mp4" autoplay="autoplay" />

我试图在我的服务器(亚马逊上的一个 ubuntu 微型实例)中执行类似的操作,以便重现视频标签中的视频,但没有成功

ffmpeg -i "rtsp://user:password@ip" -s 640x480 http://localhost:8080/stream.mp4

我得到了这个日志

[tcp @ 0x747b40] Connection to tcp://localhost:8080 failed: Connection refused http://localhost:8080/stream.mp4: Connection refused

我真的不明白发生了什么,不确定它是将输出发送到那个 url 还是在那里提供输出,我一直在检查 ffmpeg man docs,但我没有找到任何与此相关的示例用例以及类似FFmpeg Stream Transcoding 之类的其他问题,类似于我上次尝试但没有成功

顺便说一句,这是我使用的相机 DS-2CD2020F-I(W) - http://www.hikvision.com/en/Products_accessries_157_i5847.html 他们提供了一个 httppreview,但它只是一个 img 标签源,它会更新但似乎不稳定

这是我第一次尝试做这样的事情,所以任何关于如何实现它的见解都会非常有用和感激

【问题讨论】:

  • stackoverflow.com/questions/26999595/…,需要结合ffserver和ffmpeg。还有一些非开源产品可以在免费许可下执行此操作(这将为您省去麻烦)。
  • @Rudolfs 这些天来,FFMPEG 确实支持 HTTP 实时流,而不需要任何 FFServer。主要缺点是延迟较高。

标签: video ffmpeg streaming video-streaming html5-video


【解决方案1】:

这样的东西应该可以从摄像机创建实时 HLS 流,但延迟不会很好。如果延迟很重要,您可能需要查看 WebRTC。

ffmpeg -i "rtsp://user:password@ip" -s 640x480 -c:v libx264 -f ssegment -hls_flags delete_segments -segment_list playlist.m3u8 -segment_list_type hls -segment_list_size 10 -segment_list_flags +live -segment_time 10 out_%6d.ts

您需要在 HTTP 服务器后面找到生成的 ts 和 m3u8 文件的输出,然后您可以使用此 test 页面来检查它是否正常工作。

【讨论】:

  • 如果您必须手动将片段和播放列表复制到 HTTP 服务器,则不是直播。
  • @Rudolfs 不需要手动复制,直接在 HTTP 服务器上创建即可。鉴于 HLS 代表 HTTP Live Streaming,Apple 似乎认为它是实时流媒体。在我的回答中更清楚地说明这一点。
  • 是的,我最终将 kurento 与 webrtc kurento.org/blog/interoperating-webrtc-and-ip-cameras 一起使用,这是我所需要的完美示例,给定一个 rtsp://ip 在视频标签中流式传输它:)
猜你喜欢
  • 2018-10-07
  • 1970-01-01
  • 1970-01-01
  • 2017-09-21
  • 1970-01-01
  • 2022-08-20
  • 2019-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多