【问题标题】:HLS stream not working on Apple devicesHLS 流无法在 Apple 设备上运行
【发布时间】:2015-10-25 10:51:05
【问题描述】:

我有一个实时 RTSP 流,我已设法通过 VLC 转码为 HLS。现在它可以在 Android 和桌面浏览器上完美运行(通过 Flash)。

但不是在 Apple 上(我可以在我的虚拟机上的 iPad 和桌面 Safari 上测试它)。我可以看到播放器,但是当我按下“播放”按钮时,我看到的只是播放器内部的一个黑色矩形。在桌面 Safari 上,播放/暂停按钮附近还有一个文本“正在加载...”,没有其他任何反应。

我的 HTML:

<video id="player" controls style="width:100%; height:100%">
  <source src="http://178.79.164.114/playlist.m3u8" type="application/x-mpegURL">
</video>

vlc 的命令:

vlc -I dummy rtsp://<stream-url> --sout '#transcode{width=320,height=240,fps=25,vcodec=h264,vb=256,acodec=none,venc=x264{aud,profile=baseline,level=30,keyint=30,bframes=0,ref=1,nocabac}}:std{access=livehttp{seglen=10,delsegs=true,numsegs=5,index=/path/to/server/directory/playlist.m3u8,index-url=http://178.79.164.114/seg-########.ts},mux=ts{use-key-frames},dst=/path/to/server/directory/seg-########.ts}'

以及播放列表文件的示例:

#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:3
#EXT-X-ALLOW-CACHE:NO
#EXT-X-MEDIA-SEQUENCE:179
#EXTINF:9.60,
http://178.79.164.114/seg-00000179.ts
#EXTINF:9.60,
http://178.79.164.114/seg-00000180.ts
#EXTINF:9.60,
http://178.79.164.114/seg-00000181.ts
#EXTINF:9.61,
http://178.79.164.114/seg-00000182.ts
#EXTINF:9.59,
http://178.79.164.114/seg-00000183.ts

这是ffprobe http://178.79.164.114/playlist.m3u8 的奇怪输出(为什么有这些 N/A 和 variant_bitrate 为 0?)。也许它可以帮助:

Input #0, hls,applehttp, from 'http://178.79.164.114/playlist.m3u8':
  Duration: N/A, start: 3995.330722, bitrate: N/A
  Program 0 
    Metadata:
      variant_bitrate : 0
    Stream #0:0: Video: h264 (Constrained Baseline) ([27][0][0][0] / 0x001B), yuv420p, 320x240 [SAR 11:12 DAR 11:9], 25 fps, 25 tbr, 90k tbn, 50 tbc

我还为 .m3u8 和 .ts 文件配置了正确的 MIME 类型,并花了一天时间搜索和尝试转码命令的不同选项:宽度、高度、比特率、fps、不同的配置文件和级别...... - 没有任何效果。但是,如果我尝试一些来自苹果 (http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8) 的示例 - 一切都很好,尽管它不是直播。

如果有人有任何想法或有可能使用 mediastreamvalidator 测试我的直播 - 请提供帮助。

更新

现在我正在尝试使用变体播放列表,但它没有任何改变。

【问题讨论】:

  • variant_bitrate : 0 在您不使用变体播放列表时显示。你能试着放一段无声的音轨,看看有没有什么不同吗?
  • @aergistal 抱歉,之前无法进行测试。它有效,谢谢!但是为什么它没有音轨呢?这是记录在案的行为吗?您也可以创建一个答案,我会接受它
  • 这能回答你的问题吗? Hls video streaming on iOS/Safari

标签: ios safari vlc http-live-streaming


【解决方案1】:

播放器可能期望混合的视频和音频,所以添加一个静音音轨。

Apple HLS documentation 说:

媒体片段文件通常由流分段器根据来自编码器的输入生成,由一系列 .ts 文件组成,其中包含携带 H.264 视频的 MPEG-2 传输流片段和 AAC、MP3 或 AC-3 音频

Technical Note TN2224 中提到了对纯音频流的支持,并且该协议的第 7 版引入了对替代再现(非复用流)的支持,但这是通过控制播放的主播放列表中的 EXT-X-MEDIA 标签完成的(你的媒体播放列表)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-16
    • 2015-11-04
    • 2020-06-11
    • 2021-03-01
    • 1970-01-01
    • 2012-11-18
    • 2016-12-18
    • 2015-10-01
    相关资源
    最近更新 更多