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

时间:2018-10-11 07:59:35

标签: ffmpeg video-streaming

我正在尝试将视频流传输到h264中,因此我可以通过html5标签在video页面上播放。我发现了很多示例,这些示例说明了如何将视频文件流传输到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服务器?我需要做什么来设置一个?

非常感谢。

2 个答案:

答案 0 :(得分:0)

UDP://不是这样的流格式,而是告诉您它通过UDP(而不是TCP)提供流。格式实际上是MPEG-TS(您可以从-f mpegts中看到)

如果您想在普通浏览器中播放它,则需要以其他格式提供它。对于实时视频,实际上并没有一种可以与标记一起使用的普遍支持的格式。 Microsoft Edge和Apple Safari都原生支持HLS,但是Chrome和Firefox都缺乏对实时流格式的任何原生支持。

使用HLS,您可以使用hls.js并在几乎所有浏览器中进行播放。 ffmpeg本身可以output HLS,那么您只需要一个Web服务器即可。

答案 1 :(得分:0)

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

因此,您有一个实时编码器,但是要流式传输到网页,还需要一个流式服务器软件,该服务器将摄取(接收)此实时流,并将其转换为HTML5视频标签可播放的格式。该格式可能是WebRTC。

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