如何在 h264 中流式传输视频?

how to stream a video in h264?

我正在尝试将我的视频流式传输到 h264,这样我就可以通过 video 标签在 html5 页面上播放它。我找到了很多展示如何将视频文件流式传输到 rtmp 流的示例。但我几乎找不到 h264.

的例子

这是我能找到的唯一示例:

ffmpeg -f dshow -i video="Virtual-Camera" -preset ultrafast -vcodec libx264 -tune zerolatency -b 900k -f mpegts udp://10.1.0.102:1234

这似乎符合我的需要。但是我不知道udp://10.1.0.102:1234是什么服务器

如果它以 rtmp://10.1.0.102 开头,那么我知道它是一个 rtmp 服务器,我必须设置一个 nginx 和一个 rtmp 模块。但什么是 udp 服务器?我需要做什么才能设置一个?

非常感谢。

UDP:// 本身不是流格式,但告诉您它通过 UDP(而不是 TCP)提供流。格式其实是MPEG-TS(从-f mpegts可以看出)

如果您想在普通浏览器中播放,您需要以不同的格式提供。对于实时视频,并没有真正可以与标签一起使用的普遍支持的格式。 Microsoft Edge 和 Apple Safari 都原生支持 HLS,但 Chrome 和 Firefox 都缺乏对直播格式的原生支持。

借助 HLS,您可以使用 hls.js 并在几乎所有浏览器中播放。 ffmpeg 可以原生 output HLS,你只需要一个网络服务器。

此 ffmpeg 命令行允许通过 UDP 通过 MPEG2-TS 进行流式传输。 所以它充当实时编码器,这对于实时编码器来说是个不错的选择。

所以你有一个现场编码器,但要流式传输到网页,你还需要一个流媒体服务器软件,它将摄取(接收)这个直播流,并将其转换为可播放的格式 HTML5 视频标签。格式很可能是 WebRTC。

您可以使用 Wowza 或 Unreal Media Server - 它们会提取您的 MPEG2-TS 流并作为 WebRTC 流输出到网页。