【问题标题】:Styling Chromecast Custom Receiver Media Player样式化 Chromecast 自定义接收器媒体播放器
【发布时间】:2014-10-15 14:12:52
【问题描述】:

我正在使用媒体播放器库来投射我的 HLS 流并且我正在尝试设置它的样式。我想在加载等之前放置动画。这就是我在媒体管理器的 onLoad 方法中所做的;

  window.onload = function ()
  {
     mediaElement = document.querySelector('video');
     mediaElement.autoplay = true;
     ...
  }

 mediaManager.onLoad = function (event)
 {
  var title = event.data['media']['metadata']['title'];

  var titleElement = this.receiverelement.querySelector('.media-title');
  videoplayer.setInnerText_(titleElement, title);

  var subtitle = event.data['media']['metadata']['subtitle'];
  var subtitleElement = this.receiverelement.querySelector('.media-subtitle');
  videoplayer.setInnerText_(subtitleElement, subtitle);

  var artwork = videoplayer.getValue_(event.data, ['media', 'metadata',
      'images', 0, 'url']);
  var artworkElement = this.receiverelement.querySelector('.media-artwork');
  videoplayer.setBackgroundImage_(artworkElement, artwork);

  var autoplay = videoplayer.getValue_(event.data, ['autoplay']);
  var contentId = videoplayer.getValue_(event.data, ['media', 'contentId']);
  var contentType = videoplayer.getValue_(event.data, ['media', 'contentType']
      );
  this.videoType(contentType);
  this.currentState(videoplayer.State.LOADING, false);
  this.videoElement.autoplay = autoplay || true;
  this.videoElement.src = contentId || '';
  if (event.data['media'] && event.data['media']['contentId']) {
    var url = event.data['media']['contentId'];
    var mediaHost = new cast.player.api.Host({
                    'mediaElement': this.videoElement,
                    'url': url
               });

    mediaHost.onError = function (errorCode) {
        console.error('### HOST ERROR - Fatal Error: code = ' + errorCode);

        if (mediaPlayer !== null) {
                        mediaPlayer.unload();
        }
    }

    var initialTimeIndexSeconds = event.data['media']['currentTime'] || 0;
    var protocol = null;
    var parser = document.createElement('a');
    parser.href = url;   

    var ext = ext = parser.pathname.split('.').pop();
    if (ext === 'm3u8') {
         protocol =  cast.player.api.CreateHlsStreamingProtocol(mediaHost);
    } else if (ext === 'mpd') {
         protocol = cast.player.api.CreateDashStreamingProtocol(mediaHost);
    } else if (ext === 'ism/') {
          protocol = cast.player.api.CreateSmoothStreamingProtocol(mediaHost);
    }
    console.log('### Media Protocol Identified as ' + ext);  

    if(protocol == null)
    {
        this.load.bind(this);
    }
    else
    {
        mediaPlayer = new cast.player.api.Player(mediaHost);
        mediaPlayer.load(protocol, initialTimeIndexSeconds);
    }

  }

我还在使用媒体播放器库(DRM 需要它)吗? videoElement 变量是指 HTML 中的视频标签。在媒体管理器 onload 功能中,我将其来源设置为视频 url。通过这样做,我是否仍在使用媒体播放器库,我仍然可以为 DRM 等设置 licenseURL 吗?如果没有,我该如何设置媒体播放器的样式?

【问题讨论】:

    标签: javascript css chromecast


    【解决方案1】:

    Styled Media Receiver 也使用 MPL。如果许可证 URL 嵌入在清单中,那么这应该适用于 DRM。如果您需要任何类型的身份验证,则需要创建一个自定义接收器。

    【讨论】:

    • 是的,我需要进行身份验证。我想知道你是否可以为我回答这个问题。我在 DRM 自定义接收器github.com/googlecast/CastMediaPlayerStreamingDRM/blob/master/… 上关注这个 Google 示例,在第 548 行中,它说“将 mediaElement.src 设置为 data.media.contentId”,但我没有看到将 url 设置为视频标签源。你能解释一下这是怎么发生的吗?我尝试了这个例子,即使没有 mediaElement.src = contentId,它仍然显示一个 m3u8 文件。这是如何工作的?
    • Cast 媒体命名空间协议负责在媒体元素上设置媒体源。
    猜你喜欢
    • 2014-04-22
    • 2014-10-04
    • 2014-04-26
    • 1970-01-01
    • 2020-12-12
    • 2015-05-19
    • 2015-01-10
    • 2014-03-28
    相关资源
    最近更新 更多