我正在使用 https://github.com/google/shaka-player/tree/master/demo/cast_receiver
有iOS客户端和Android客户端。我的 iOS 它基于:
https://github.com/googlecast/CastVideos-ios
对于 Android,当 ai 将视频投射到 shaka 播放器接收器上时,在 Google 提供的迷你播放器或扩展控制器上进行搜索、暂停、播放没有问题。
在 iOS 中我收到此消息:
-[GCKMediaControlChannel mediaSessionID] 调用需要媒体状态而没有媒体状态的方法,忽略;确保媒体已加载,媒体通道已收到状态,并且设备管理器尝试重新连接时不会调用此方法
和其他日志:
-[GCKUIMediaController updateTransportControls] updateTransportControls;mediaclient 是,mediaStatus 是,_currentRequest 是 -[GCKUIMediaController request:didFailWithError:] 请求 15 失败,出现错误错误 Domain=com.google.GCKError Code=32“没有可用的媒体会话” UserInfo={NSLocalizedDescription=没有可用的媒体会话}
我正在尝试使用 Bento4 和 Shaka Packager 使用碎片 mp4 输出 DASH 和 HLS 文件。
我在理解 MPEG-DASH Live 和点播配置文件之间的差异和优缺点时遇到了一些困难。如果我正在流式传输实时广播内容,我会使用实时配置文件,但对于静态点播视频,我似乎可以使用点播或实时配置文件。每个配置文件以完全不同的文件格式和文件夹结构输出文件,按需输出包含 .mp4 文件的平面文件夹结构,实时输出包含 m4s 文件的嵌套文件夹结构。
对于不会现场直播的静态视频内容(例如浏览器支持、功效等),是否建议使用一种配置文件而不是另一种配置文件?如果是,为什么?
我只是无法弄清楚 shaka 播放器如何能够解密我的 CENC 保护内容,即使我在播放器配置中提供了无效的解密密钥。
player.configure({
drm: {
clearKeys: {
'6FepeJBbmaiozSMs18vPfA==': '6FepeJBbmaiozSMs18vPfA==', // ==> invalid key
'6FepeJBbmaiozSMs18vPfA==': '6FepeJBbmaiozSMs18vPfA==', // ==> invalid key
}
}
})
Run Code Online (Sandbox Code Playgroud)
这是给打包程序的参数
packager in=video-SD.webm,stream=audio,output=protected_audio.webm,drm_label=AUDIO in=video-HD.
webm,stream=video,output=protected_video_HD.webm,drm_label=HD in=video-SD.webm,stream=video,output=prote
cted_video_SD.webm,drm_label=SD --enable_raw_key_encryption --enable_raw_key_decryption \
--keys label=AUDIO:key_id=f3c5e0361e6654b28f8049c778b23946:key=a4631a153a443df9eed0593043db7519, label=SD:key_id=abba271e8bcf552bbd2e86a434a9a5d9:key=69eaa802a6763af979e8d1940fb88392,label=HD:key_id=abba271e8bcf552bbd2e86a434a9a5d9:key=69eaa802a6763af979e8d1940fb88392 \
--base_urls https://s3-eu-west-1.amazonaws.com/dash/ \
--mpd_output h264.mpd
Run Code Online (Sandbox Code Playgroud)
mpd 文件看起来像
<?xml version="1.0" encoding="UTF-8"?>
<!--Generated with https://github.com/google/shaka-packager version 72c4797-release-->
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" minBufferTime="PT2S" type="static" mediaPresentationDuration="PT5.539000034332275S">
<BaseURL>https://s3-eu-west-1.amazonaws.com/dash/</BaseURL>
<Period id="0">
<AdaptationSet id="0" contentType="audio" lang="en" subsegmentAlignment="true">
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b" cenc:default_KID="f3c5e036-1e66-54b2-8f80-49c778b23946">
<cenc:pssh>AAAAVHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAPzxeA2HmZUso+AScd4sjlGq7onHovPVSu9LoakNKml2au6Jx6Lz1UrvS6GpDSppdkAAAAA</cenc:pssh>
</ContentProtection>
<Representation id="0" bandwidth="96897" …Run Code Online (Sandbox Code Playgroud) 我遵循与 DASH 视频配合使用的 shaka 的基本用法,但在尝试加载 M3U8 时抛出错误代码 4032。
import * as muxjs from 'mux.js';
import * as shaka from 'shaka-player';
export class AppComponent implements AfterViewInit {
@ViewChild('videoPlayer') videoElementRef: ElementRef;
videoElement: HTMLVideoElement;
manifestUri = 'http://hlsliveamdgl7-lh.akamaihd.net/i/hlsdvrlive_1@583042/master.m3u8';
ngAfterViewInit() {
shaka.polyfill.installAll();
this.videoElement = this.videoElementRef.nativeElement;
this.initPlayer();
}
private initPlayer() {
shaka.media.ManifestParser.registerParserByExtension("m3u8", shaka.hls.HlsParser);
shaka.media.ManifestParser.registerParserByMime("Application/vnd.apple.mpegurl", shaka.hls.HlsParser);
shaka.media.ManifestParser.registerParserByMime("application/x-mpegURL", shaka.hls.HlsParser);
let player = new shaka.Player(this.videoElement);
player.load(this.manifestUri).then(() => {
// This runs if the asynchronous load is successful.
console.log('The video has now been loaded!');
}).catch(this.onError); // onError is executed if …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 shaka 播放器上加载 VOD。这是我的网址:
https://5b48f8f32d3be.streamlock.net/023a27950bd44774/mp4:22436e792e8b42de_HD.0.mp4/playlist.m3u8
我一直在控制台中收到 4032 错误,我已经对其进行了一些搜索。在 shaka 文档中,4032 错误提到为 CONTENT_UNSUPPORTED_BY_BROWSER。但是,当我在 shaka 播放器测试 URL 上测试我的 URL 时,一切正常。
如果我的浏览器有问题,它也不应该在测试 URL 上播放。我应该怎么做才能支持 HLS?