【发布时间】:2013-11-15 22:29:52
【问题描述】:
我正在尝试使用 HTTP 实时流 (HLS) 将视频流式传输到我的计算机和我的 iPhone。在阅读了 Apple 的“HTTP Live Streaming Overview”以及“为 iPhone 和 iPad 创建和部署 HTTP Live Streaming Media 的最佳实践”之后,我有点卡住了。
我获取了我的源文件(一个 mkv)并使用 ffmpeg 将文件编码为 MPEG-TS 格式和 Apple 推荐的设置以及 Baseline 3.0 配置文件:
ffmpeg -i "example.mkv" -f mpegts -threads:v 4 -sws_flags bicubic -vf "scale=640:352,setdar=16/9,ass=sub.ass" -codec:v libx264 -r 29.970 -b:v 1200k -profile:v baseline -level:v 3.0 -movflags faststart -coder 1 -flags +loop -cmp chroma -partitions +parti8x8+parti4x4+partp8x8+partb8x8 -me_method hex -subq 6 -me_range 16 -g 239 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -direct-pred 1 -fast-pskip 1 -af "aresample=48000" -codec:a libvo_aacenc -b:a 96k -ac 2 -y "output.ts"
不用担心。我使用pre-compiled segmenting tool 来分割视频并构建一个.m3u8 播放列表。生成的文件如下所示:
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXTINF:10,
http://localhost/media/stream/stream-1.ts
#EXTINF:10,
http://localhost/media/stream/stream-2.ts
#EXTINF:10,
http://localhost/media/stream/stream-3.ts
#EXT-X-ENDLIST
我对照一些Example Playlist Files for use with HTTP Live Streaming 进行了检查,没有发现任何问题。我还尝试在 VLC 中播放 .m3u8 文件,效果非常棒。
我创建了一个 HTML 页面来播放文件:
<html lang="en">
<head>
<meta charset=utf-8/>
</head>
<body>
<div id='player'>
<video width="352" height="288" src="stream.m3u8" controls autoplay>
</video>
</div>
</body>
</html>
而且此页面在我的 iPhone 上的 Chrome、Safari 中无法使用。 w3schools 上的 html5 视频标签示例在我的计算机上运行良好,上面提到的官方 Apple 概述提供了一个与我的页面非常相似的 HTML 示例。然而,当我访问自己的 .m3u8 页面时,我的视频播放器完全没有响应。
【问题讨论】:
-
可以显示 mediastreamvalidator 工具的输出吗?
-
感谢您的回复!不幸的是,我还没有花钱成为一个“真正的”苹果开发者,所以我没有那个特定的工具。我一直在寻找可能的替代品,但收效甚微。欢迎您在这方面提供任何建议!
-
也许您可以将文件放在公共网络服务器上。如果您需要免费的网络服务器,您可以使用微型 Amazon EC2 实例。然后可以访问更多工具的人可以看看。实际上,这让我想知道您的网络服务器返回的 mime 类型...看看这是否有帮助:stackoverflow.com/questions/6438680/…
-
您是否尝试过在您的 safari 上直接浏览 m3u8,而不是通过 html?例如,如果您的 m3u8 文件存在于服务器上的myserver/mymoviue.m3u8 下,那么在此处浏览应该会显示视频。如果这不起作用,那么您的问题不在 HTML 中。
-
Windows 桌面 Chrome caniuse.com/#search=hls 仍然不支持 HLS,但它只适用于我的旧 iPhone。
标签: html streaming html5-video http-live-streaming m3u8