我试图使用HTTP Live Streaming(HLS)将视频流传输到我的电脑和iPhone。在阅读了苹果公司的“HTTP Live Streaming概述”以及“为iPhone和iPad创建和部署HTTP Live Streaming媒体的最佳实践”之后,我有点困惑。
我拿出了源文件(一个mkv文件),并使用ffmpeg将其编码为MPEG-TS格式,并采用了苹果推荐的设置和基线3.0配置文件。
没有问题。我使用了一个预编译分段工具来对视频进行分段,并构建了一个.m3u8播放列表。生成的文件看起来像这样:
我检查了一些与HTTP Live Streaming一起使用的示例播放列表文件,并没有发现任何问题。我还尝试在VLC中播放.m3u8文件,效果非常好。
我创建了一个HTML页面来播放文件:
这个页面在Chrome、Safari和我的iPhone上都无法正常工作。w3schools上的HTML5视频标签示例在我的电脑上可以正常工作,而上面提到的官方苹果概述给出了一个与我的页面非常相似的HTML示例。然而,当我访问自己的.m3u8页面时,我的视频播放器完全没有响应。
我拿出了源文件(一个mkv文件),并使用ffmpeg将其编码为MPEG-TS格式,并采用了苹果推荐的设置和基线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"
没有问题。我使用了一个预编译分段工具来对视频进行分段,并构建了一个.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
我检查了一些与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>
这个页面在Chrome、Safari和我的iPhone上都无法正常工作。w3schools上的HTML5视频标签示例在我的电脑上可以正常工作,而上面提到的官方苹果概述给出了一个与我的页面非常相似的HTML示例。然而,当我访问自己的.m3u8页面时,我的视频播放器完全没有响应。