【发布时间】:2019-11-19 21:25:08
【问题描述】:
我正在尝试在浏览器中显示连续的视频流(实时流)。
说明:
我的客户报告视频流在 Chrome 浏览器中不起作用。我认为这将是一个简单的案例,我什至尝试编写一个演示,以证明仅使用 HTML5 原生视频标签即可使用流式传输: https://github.com/mishaszu/streaming-video-demo
随机视频没有问题,但是: 客户端的特定视频流不起作用。 带html代码:
<video id="video-block" width="320" height="200" autoplay>
<source src="url/to/my/video" type="video/mp4">
</video>
它会显示加载器一段时间然后死掉。
我对流的了解:
1.使用的编解码器:H264-MPEG-4 AVC (part 10) (avc1)
2. 这是一个直播,不是文件,所以我不能在终端上使用像MP4Box这样的命令
3. 因为是直播,所以可能没有“文件结尾”
4. 我知道它没有坏,因为 VLC 能够显示它
5. 我尝试了带有所有媒体类型字符串的原生 HTML 5 视频标签(以防万一检查所有编解码器的 mp4)
正如我提到的尝试不同的 mime 类型没有帮助,我也尝试使用 MediaSource,但我真的不确定如何将它用于实时流,因为我发现的所有信息都做出了假设:
a) 等待解决承诺,然后附加缓冲区
b) 将updateend 的事件侦听器添加到附加缓冲区
我认为在直播的情况下它不会起作用。
结论:
我发现了很多关于流式文件如何包含元数据的信息(在文件的开头或结尾)......最后我得出一个结论,也许我不完全理解发生了什么。
问题:
处理 mp4 直播的正确方法是什么?
如果原生 HTML video 标签应该支持直播,如何调试?
我想也许我应该寻找像 HLS 这样的东西,但对于 mp4 格式?
【问题讨论】:
-
您好,“客户端的特定视频流不起作用”到底是什么意思?
-
"I found a lot of information about how a streamed file might contain metadata (at the beginning of the file or at the end)."现场直播是假的。对于直播,使用分段的 mp4,其中部分元数据在开头,或者在单独的初始化片段中,其余部分分散在每个片段中 -
@k3llydev 对不起,也许我有点困惑。该视频仅在客户端的网络中可用,因此我无法在本地调试它(我可以访问客户端的 Chrome 浏览器,但无法使用标志运行它)。
doesn't work我的意思是它不播放视频(也不记录任何错误或 Http 网络错误),它只显示黑色背景。 -
@szatmary 我不知道这一点,但如果是直播,我猜浏览器应该会获得未知数量的片段。不知道为什么 VLC 能够显示它而浏览器不能。浏览器是否可能无法获取元数据(是否可以从javascript lvl检查元数据是否存在)?
-
在不知道 URL 是什么的情况下,我只能猜测。浏览器需要额外的信息,通常编码在清单或播放列表中。如果你不知道格式,我也没办法,除非你能提供一个公共链接。 URL 中的文件扩展名是什么? mp4? m3u8? mpd?你在浏览器中使用的是什么播放器? hls.js?视频.js?原始mse?
标签: javascript html video video-streaming html5-video