gpt4 book ai didi

ios - 为什么这个加密的 HLS 视频不能在 iOS 上播放(但可以通过 hls.js 库在 Windows Chrome 上运行)?

转载 作者:行者123 更新时间:2023-12-04 22:58:37 25 4
gpt4 key购买 nike

原始视频是来自 https://www.appsloveworld.com/download-sample-mp4-video-mp4-test-videos/ 的“示例视频 5” .

我的 /home/vagrant/Code/example/public/hls_hls.keyInfo是:

https://example.com/hls.key
/home/vagrant/Code/example/public/hls_hls.key
467216aae8a26fb699080812628031955e304a66e9e4480f9b70d31d8fe94e9a

我的 /home/vagrant/Code/example/public/hls_hls.key使用 PHP 生成: hex2bin('467216aae8a26fb699080812628031955e304a66e9e4480f9b70d31d8fe94e9a')
ffmpeg使用“ts”文件将视频加密为 HLS 播放列表的命令:
'/usr/bin/ffmpeg' '-y' '-i' 'storage/app/sample_media2/2020-02-27/Sample_Videos_5.mp4' 
'-c:v' 'libx264' '-s:v' '1920x1080' '-crf' '20' '-sc_threshold' '0' '-g' '48'
'-keyint_min' '48' '-hls_list_size' '0'
'-hls_time' '10' '-hls_allow_cache' '0' '-b:v' '4889k' '-maxrate' '5866k'
'-hls_segment_type' 'mpegts' '-hls_fmp4_init_filename' 'output_init.mp4'
'-hls_segment_filename' 'storage/app/public/test/output_1080p_%04d.ts'
'-hls_key_info_file' '/home/vagrant/Code/example/public/hls_hls.keyInfo'
'-strict' '-2' '-threads' '12' 'storage/app/public/test/output_1080p.m3u8'

然后,我从 https://caniuse.com/#search=hls 知道如果没有库,Windows Chrome 将无法播放 HLS 视频,所以我使用 https://github.com/video-dev/hls.js/ , 和 Windows Chrome 成功播放加密视频!

但是,iOS Safari 无法播放它(有或没有 hls.js 库)。

在 iOS Safari 上,当我尝试播放视频时,我只是快速瞥见(不到一秒)其中 屏幕显示 0:15,因此它必须足够读取和解密才能知道视频的正确持续时间。

因此,为了调试,我记录事件:
const nativeHlsEvents = ['play', 'playing', 'abort', 'error', 'canplaythrough', 'waiting', 'loadeddata', 'loadstart', 'progress', 'timeupdate', 'volumechange'];
$.each(nativeHlsEvents, function (i, eventType) {
video.addEventListener(eventType, (event) => {//https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement
console.log(eventType, event);
if (eventType === 'error') {
console.error(video.error);//https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/error
}
});
});

我在控制台日志中看到:
loadstart, {"isTrusted":true}
progress, {"isTrusted":true}
play, {"isTrusted":true}
waiting, {"isTrusted":true}
error, {"isTrusted":true}
video.error, {}

我不知道如何找到有关该错误的更多详细信息。

请注意,即使 Windows Chrome 成功播放视频,它也会在控制台日志中显示警告:
{"type":"mediaError","details":"fragParsingError","fatal":false,"reason":"TS packet did not start with 0x47","frag":{"...
{"type":"mediaError","details":"fragParsingError","fatal":false,"reason":"no audio/video samples found","frag":{...

我的问题在哪里?

最佳答案

我需要购买更新的 iPhone。

我在 https://en.wikipedia.org/wiki/IPhone_6#Software 看到和 https://support.apple.com/guide/iphone/supported-iphone-models-iphe3fa5df43/ios “6s”是 iOS 13 支持的最古老的硬件,https://caniuse.com/#search=hls说 HLS 需要 >=13.2。

关于ios - 为什么这个加密的 HLS 视频不能在 iOS 上播放(但可以通过 hls.js 库在 Windows Chrome 上运行)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60852109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com