【问题标题】:Some general doubts about video.js [closed]关于video.js的一些普遍疑问[关闭]
【发布时间】:2012-12-01 19:44:10
【问题描述】:

我对播放器有一些普遍的疑问。我会列出它们:

  1. video.js 是否支持 HLS 视频格式?如果是这样,在什么平台上? (浏览器、设备、浏览器...?)。对不起,我在网站上搜索了这个,没有找到任何东西。

  2. 我看到 Ogg 和 MP4 文件格式是最受支持的文件类型,而 WebM 则不是那么多。我已经搜索了 WebM 是什么……那是 HLS 吗?除了网站上未列出的文件格式之外,还有其他受支持的文件格式吗?

  3. video.js 是否支持视频广告和谷歌分析?

  4. 播放功能,类似于视频结尾的列表,我可以在其中选择另一个。这可能吗?

  5. 是否支持自适应流式传输?也就是根据不断变化的网络条件调整传送到网页的视频质量?

  6. 自定义玩家创建皮肤并将其应用到上面是否容易?例如,我可以在播放器上放置我网站的符号吗?

我认为是这样的。

如果有人可以提供帮助,我将非常高兴。

【问题讨论】:

  • 在搜索了videojs的网站后,有很多问题:)。如果您想要 HSL、视频广告、分析、自适应流媒体、html5 和 flash 支持等...我建议您使用更完整的解决方案,例如 JWPlayer

标签: html5-video video.js


【解决方案1】:

video.js 是否支持 HLS 视频格式?如果有,基于什么 平台? (浏览器、设备、浏览器...?)。对不起,我搜索了 这个在网站上,没有找到任何东西。

是的,今天在任何通过 HTML5(iPhone、Desktop Safari)支持它的平台上使用源代码中的“application/x-mpegURL”mimetype。很快也将在所有桌面上支持 HLS。

我看到 Ogg 和 MP4 文件格式是最受支持的文件类型, 而WebM则不是很多。我已经搜索了 WebM 是什么...是 HLS?除了未列出的文件格式之外,是否还有其他支持的文件格式 网站?

实际上,就最终用户支持而言,WebM、MP4 和 Ogg 现在都非常紧密地联系在一起。 WebM 与 Ogg 一样是一种开放且免费的格式,但压缩效果更好。 WebM 不是 HLS。 HLS 是 MPEG-TS 视频文件片段的播放列表。

video.js 是否支持视频广告和 Google Analytics?

很快。

播放功能,类似于视频结尾中的列表,其中 我可以选择另一个。这可能吗?

您可以自己构建它。目前还没有预制的解决方案。

是否支持自适应流式传输?也就是调整质量 根据不断变化的网络条件传送到网页的视频?

通过 HLS,是的。

自定义玩家创建皮肤并应用它们是否容易? 它?例如,我可以在播放器上放置我网站的符号吗?

Video.js 都是开源的,皮肤是使用 HTML、CSS 和 JavaScript 构建的。如果您对这些技术感到满意,那么让它看起来像您想要的应该不难。

总结
过去几年 Video.js 一直是我的副项目,但 Zencoder(我的公司)被 Brightcove 收购,现在我开始全职工作,并从 Brightcove 玩家团队获得帮助。所以期待大事的到来。如果您受到启发,我仍然很乐意获得更多帮助。

【讨论】:

  • 关于第 1 点,为了让 HLS 工作,我发现我必须在源代码中包含 type 属性,如下所示:myPlayer.src({ type: "application/x-mpegURL", src: videoM3u8Url });
【解决方案2】:

那个闪存兼容吗?

是的:如果配置正确,如果浏览器本身不支持 <video> 元素,它将回退到使用其内置的 Flash 播放器。

你可以覆盖它,例如强制它一直使用它的 Flash 播放器。

【讨论】:

    【解决方案3】:

    您可以使用以下 API 自定义在 Google Analytics 中跟踪 VideoJS 3.2 视频事件:

    // Once the video is ready
    _V_("video-embed-1234").ready(function(){
    
        // Google Analytics event tracking
        var trackGaEvent = function() {
            var playerState = this;
    
            // Determine time
            var date = new Date( event.timeStamp );
    
            var hours = date.getHours();
            if ( hours < 10 ) hours = "0" + hours.toString();
            var minutes = date.getMinutes();
            if ( minutes < 10 ) minutes = "0" + minutes.toString();
            var seconds = date.getSeconds();
            if ( seconds < 10 ) seconds = "0" + seconds.toString();
    
            var formattedTime = hours + ':' + minutes + ':' + seconds;
    
            // Log event
            var gaCategory = 'VideoJS';
            var videoId = playerState.id;
            var playerStateUrl = videoId.replace('benchfly-embed-', 'https://secured.benchfly.com/player/') + '/';
            _gaq.push([ '_trackEvent', gaCategory, event.type, playerStateUrl, formattedTime, false ]);
        };
    
        // Attach GA tracking to event listeners
        this.addEvent( "play", trackGaEvent );
        this.addEvent( "pause", trackGaEvent );
        this.addEvent( "load", trackGaEvent );
        this.addEvent( "ended", trackGaEvent );
        this.addEvent( "volumechange", trackGaEvent );
    
    });
    

    【讨论】:

    • 我将您的代码封装在一些 Javascript 中以确保页面已加载,但从 var date = new Date( event.timeStamp ); 开始出现错误。自然,我更改了视频的 ID 和 playerStatusUrl,但我不断收到“未定义事件”。每次我开始播放视频等时都会发生这种情况。视频播放正常,但我猜 Analytics 不会对它得到的结果感到满意。我错过了一些明显的东西吗?谢谢!
    • 与我之前的评论有关,我在 IE 上收到“无法获取未定义或空引用的属性 'timeStamp'”的错误。同样,如果我只是遗漏了什么,我完全可以理解。就像我需要的 GA 中的一些信息一样。你能详细说明你的方法吗?谢谢!
    • 我想我把它整理出来了。通过将event 传递给函数(例如stackoverflow.com/a/13844751/728053),发现了一些对浏览器处理方式不同的引用。将其更改为var trackGaEvent = function(event) {。 IE 停止将 event 报告为 null。 Firefox 停止声明,event is not defined
    • VideoJS 版本 4 中的新功能还有一些更改可以让 Analytics 工作。 _V_("video-embed-1234").ready(function(){ 变为 videojs("video-embed-1234").ready(function(){。而addEvent需要切换到on,因此this.addEvent( "play", trackGaEvent );变成this.on( "play", trackGaEvent );
    猜你喜欢
    • 1970-01-01
    • 2012-04-02
    • 2021-08-07
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    • 2018-08-04
    • 2020-12-13
    • 1970-01-01
    相关资源
    最近更新 更多