我想将来自udp的实时视频流传输到HTMLvideo
标签中。我进行了一些研究,但是我获得了很多信息,因此我很难清楚地了解我可以做什么和不能做什么。
视频流使用H.264和AAC编解码器,MP4容器,并具有3840x2160(4K)分辨率。我想在Chrome(最新版本)上播放。
据我了解,HTMLvideo
标签可以本地读取H.264 / AAC视频。我将其与服务器上的视频分辨率结合使用(我正在使用Meteor JS + React)。
我学会了使用FFmpeg来流式传输VLC播放器读取的udp流量,然后使用FFserver(我知道它已被弃用)创建一个HTTP流量,该流量也可以由VLC读取,但不能由HTMLvideo
标记读取。
所以...我的问题是:HTML是否video
可以从HTTP本地读取视频流?
我已经看到了很多有关HLS和DASH的讨论,但是我不明白它们是否(以及为什么)是强制性的。
我读了一篇有关某人m3u8
仅使用FFmpeg创建HLS的帖子,这是可行的解决方案吗?
FFserver配置
HTTPPort 8090
HTTPBindAddress 0.0.0.0
MaxHTTPConnections 20
MaxClients 10
MaxBandwidth 100000
<Feed feed.ffm>
File /tmp/feed.ffm
FileMaxSize 1g
ACL allow 127.0.0.1
</Feed>
<Stream stream.mpeg>
Feed feed.ffm
Format mpeg
AudioCodec aac
AudioBitRate 256
AudioChannels 1
VideoCodec libx264
VideoBitRate 10000 // Total random here
VideoBitRateRange 5000-15000 // And here...
VideoFrameRate 30
VideoQMin 1
VideoQMax 50
VideoSize 3840x2160
VideoBufferSize 20000 // Not sure either
AVOptionVideo flags +global_header
</Stream>
我必须指定QMin和QMax以避免出现错误消息,但我不太了解它是什么。
FFmpeg命令行
ffmpeg -re -i bbb_sunflower_2160p_30fps_normal.mp4 -strict -2 -r 30 -vcodec libx264 http://localhost:8090/feed.ffm
与VLC一起使用。在移至udp流之前,我正在使用计算机上的文件。
浏览器上的媒体支持是一个不断变化的格局,因此值得在某些地方查找最新视图。
根据我的经验,此链接上的表通常是最新的:
您会注意到该表包括编解码器和容器-mp4中的egh264。了解这一点很重要,因为您的浏览器可能支持编解码器,但所需的容器中不支持。
对于受支持的容器和编解码器,HTML5标签将支持HTTP流或更准确地说是HTTP下载。大多数服务器和浏览器将支持分块下载视频文件,以便您可以在完全下载视频之前开始观看。
为了在不同设备类型和不同网络条件下获得更好的性能,通常通过可调整比特率(ABR)协议(例如HLS或DASH)交付视频。ABR还允许客户端设备或播放器以大块(例如10秒大块)的形式下载视频,但是服务器以多个不同的比特率版本提供每个大块。播放器可以从最适合当前网络条件的比特率中选择下一个块。还可以在此答案中查看更多信息:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句