From c4c732d0bf2d9f397054835b4cf8a158cdc9f45e Mon Sep 17 00:00:00 2001 From: bitbalint <99177189+bitbalint@users.noreply.github.com> Date: Mon, 25 Jul 2022 22:21:34 +0200 Subject: [PATCH 01/83] Fix button label typo for Native SDKs "Unified Configutation" -> "Unified Configuration" --- player/native-sdks/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/player/native-sdks/index.html b/player/native-sdks/index.html index ea75f1bd..9919dece 100644 --- a/player/native-sdks/index.html +++ b/player/native-sdks/index.html @@ -15,7 +15,7 @@
- Unified Configutation & UI + Unified Configuration & UI
From 0037c88daafdbd33c31f8d036e8ffd51c6e06527 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Kr=C3=B6pfl?= Date: Thu, 18 Aug 2022 13:50:51 +0200 Subject: [PATCH 02/83] replace art of motion urls to use cdn.bitmovin.com --- .../ad-event-verification-omsdk/js/script.js | 8 +++---- player/ad-event-verification-omsdk/page.js | 2 +- player/ad-event-verification/js/script.js | 8 +++---- player/ad-event-verification/setup.js | 8 +++---- player/ad-scheduling/js/script.js | 16 +++++++------- player/audio-api/js/script.js | 4 ++-- player/audio-api/setup.js | 4 ++-- player/audio-only-streaming/js/script.js | 4 ++-- player/audio-only-streaming/setup.js | 4 ++-- player/channel-switching/js/script.js | 4 ++-- player/channel-switching/switchChannel.js | 4 ++-- player/chromecast/demo.js | 8 +++---- player/chromecast/js/script.js | 8 +++---- player/chromeless/demo.js | 8 +++---- player/chromeless/js/script.js | 8 +++---- player/custom-adaptation/demo.js | 8 +++---- player/custom-adaptation/js/script.js | 8 +++---- player/drm/demo.js | 4 ++-- player/drm/js/script.js | 8 +++---- player/hls-fmp4/demo.js | 4 ++-- player/hls-fmp4/js/script.js | 4 ++-- player/native-sdks/js/script.js | 8 +++---- player/picture-in-picture/js/script.js | 8 +++---- player/picture-in-picture/setup.js | 8 +++---- player/player-playground/demo.js | 6 ++--- player/player-playground/js/script.js | 22 +++++++++---------- player/stream-test/js/script.js | 12 +++++----- player/thumbnail-seeking/js/script.js | 10 ++++----- player/thumbnail-seeking/setup.js | 10 ++++----- player/variable-playback-speed/demo.js | 12 ++++------ player/variable-playback-speed/js/script.js | 8 +++---- 31 files changed, 117 insertions(+), 121 deletions(-) diff --git a/player/ad-event-verification-omsdk/js/script.js b/player/ad-event-verification-omsdk/js/script.js index cc75ea3b..d598b959 100644 --- a/player/ad-event-verification-omsdk/js/script.js +++ b/player/ad-event-verification-omsdk/js/script.js @@ -19,10 +19,10 @@ var conf = { }, }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', - progressive: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', - poster: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/poster.jpg' + dash: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + progressive: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', + poster: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg' }; var player; diff --git a/player/ad-event-verification-omsdk/page.js b/player/ad-event-verification-omsdk/page.js index 42f4983a..8ed04b10 100644 --- a/player/ad-event-verification-omsdk/page.js +++ b/player/ad-event-verification-omsdk/page.js @@ -34,5 +34,5 @@ var playerContainer = document.getElementById('player-container'); var player = new bitmovin.player.core.Player(playerContainer, conf); player.load({ - dash: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + dash: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', }); diff --git a/player/ad-event-verification/js/script.js b/player/ad-event-verification/js/script.js index 01dee17b..43be40e4 100644 --- a/player/ad-event-verification/js/script.js +++ b/player/ad-event-verification/js/script.js @@ -18,10 +18,10 @@ var conf = { }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', - progressive: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', - poster: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/poster.jpg' + dash: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + progressive: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', + poster: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg' }; var playerContainer = document.getElementById('player-container'); diff --git a/player/ad-event-verification/setup.js b/player/ad-event-verification/setup.js index cd1078fc..2f615044 100644 --- a/player/ad-event-verification/setup.js +++ b/player/ad-event-verification/setup.js @@ -3,10 +3,10 @@ var conf = { }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', - progressive: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', - poster: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/poster.jpg' + dash: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + progressive: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', + poster: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg' }; var playerContainer = document.getElementById('player-container'); diff --git a/player/ad-scheduling/js/script.js b/player/ad-scheduling/js/script.js index 34498787..5a938237 100644 --- a/player/ad-scheduling/js/script.js +++ b/player/ad-scheduling/js/script.js @@ -23,10 +23,10 @@ var conf = { }; var source = { - dash: '//bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', - hls: '//bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', - progressive: '//bitmovin-a.akamaihd.net/content/MI201109210084_1/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', - poster: '//bitmovin-a.akamaihd.net/content/art-of-motion_drm/art-of-motion_poster.jpg' + dash: '//cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + hls: '//cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + progressive: '//cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', + poster: '//cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg' }; document.querySelector('#scheudle-ad-button').addEventListener('click', loadConfig); @@ -103,10 +103,10 @@ function removeSchedule() { player = new bitmovin.player.Player(playerContainer, conf); player.load({ - dash: '//bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', - hls: '//bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', - progressive: '//bitmovin-a.akamaihd.net/content/MI201109210084_1/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', - poster: '//bitmovin-a.akamaihd.net/content/art-of-motion_drm/art-of-motion_poster.jpg' + dash: '//cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + hls: '//cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + progressive: '//cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', + poster: '//cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg' }); } diff --git a/player/audio-api/js/script.js b/player/audio-api/js/script.js index e3ec23cb..9d70a6f7 100644 --- a/player/audio-api/js/script.js +++ b/player/audio-api/js/script.js @@ -27,8 +27,8 @@ var source1 = { }; var source2 = { - hls: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', - poster: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/poster.jpg' + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + poster: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg' }; var playerContainer1 = document.getElementById('player-container-1'); diff --git a/player/audio-api/setup.js b/player/audio-api/setup.js index f14442da..33f42b59 100644 --- a/player/audio-api/setup.js +++ b/player/audio-api/setup.js @@ -9,8 +9,8 @@ var source1 = { }; var source2 = { - hls: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', - poster: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/poster.jpg' + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + poster: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg' }; var playerContainer1 = document.getElementById('player-container-1'); diff --git a/player/audio-only-streaming/js/script.js b/player/audio-only-streaming/js/script.js index e1aeeaea..d97cd435 100644 --- a/player/audio-only-streaming/js/script.js +++ b/player/audio-only-streaming/js/script.js @@ -8,8 +8,8 @@ var conf = { }; var source = { - hls: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa-audio-only.m3u8', - poster: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/poster.jpg' + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa-audio-only.m3u8', + poster: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg' }; var playerContainer = document.getElementById('player-container'); diff --git a/player/audio-only-streaming/setup.js b/player/audio-only-streaming/setup.js index 0a7b3dbc..a101a9d8 100644 --- a/player/audio-only-streaming/setup.js +++ b/player/audio-only-streaming/setup.js @@ -3,8 +3,8 @@ var conf = { }; var source = { - hls: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa-audio-only.m3u8', - poster: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/poster.jpg' + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa-audio-only.m3u8', + poster: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg' }; var playerContainer = document.getElementById('player-container'); diff --git a/player/channel-switching/js/script.js b/player/channel-switching/js/script.js index b357e936..15e7c464 100644 --- a/player/channel-switching/js/script.js +++ b/player/channel-switching/js/script.js @@ -121,8 +121,8 @@ function switchChannel(channelID, event) { source = { title: 'Art of Motion', description: 'What is this event... Parcour?', - dash: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', - hls: 'https://bitdash-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8' + dash: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8' } } else if (channelID === '2') { source = { diff --git a/player/channel-switching/switchChannel.js b/player/channel-switching/switchChannel.js index 24abd2d3..5d7868ab 100644 --- a/player/channel-switching/switchChannel.js +++ b/player/channel-switching/switchChannel.js @@ -4,8 +4,8 @@ function switchChannel(channelID) { source = { title: 'Art of Motion', description: 'What is this event... Parcour?', - dash: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', - hls: 'https://bitdash-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8' + dash: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8' } } else if (channelID === '2') { source = { diff --git a/player/chromecast/demo.js b/player/chromecast/demo.js index 60159c91..e4b3f87b 100644 --- a/player/chromecast/demo.js +++ b/player/chromecast/demo.js @@ -7,11 +7,11 @@ var conf = { var source = { dash: - 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', hls: - 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', progressive: - 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', + 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', poster: - 'https://bitmovin-a.akamaihd.net/content/art-of-motion_drm/art-of-motion_poster.jpg' + 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg' }; diff --git a/player/chromecast/js/script.js b/player/chromecast/js/script.js index c2690c85..07dcfa17 100644 --- a/player/chromecast/js/script.js +++ b/player/chromecast/js/script.js @@ -13,10 +13,10 @@ var conf = { }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', - progressive: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', - poster: 'https://bitmovin-a.akamaihd.net/content/art-of-motion_drm/art-of-motion_poster.jpg' + dash: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + progressive: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', + poster: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg' }; var playerContainer = document.getElementById('player-container'); diff --git a/player/chromeless/demo.js b/player/chromeless/demo.js index 35eaf65e..175eeb8f 100644 --- a/player/chromeless/demo.js +++ b/player/chromeless/demo.js @@ -8,10 +8,10 @@ var conf = { }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', - progressive: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', - poster: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/poster.jpg' + dash: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + progressive: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', + poster: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg' }; var playerContainer = document.getElementById('player-container'); diff --git a/player/chromeless/js/script.js b/player/chromeless/js/script.js index 370dcf21..c2f82c94 100644 --- a/player/chromeless/js/script.js +++ b/player/chromeless/js/script.js @@ -12,10 +12,10 @@ var conf = { }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', - progressive: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', - poster: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/poster.jpg' + dash: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + progressive: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', + poster: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg' }; var playerContainer = document.getElementById('player-container'); diff --git a/player/custom-adaptation/demo.js b/player/custom-adaptation/demo.js index d26c3413..86b15ca1 100644 --- a/player/custom-adaptation/demo.js +++ b/player/custom-adaptation/demo.js @@ -20,10 +20,10 @@ var conf = { }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', - progressive: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', - poster: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/poster.jpg', + dash: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + progressive: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', + poster: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg', }; var playerContainer = document.getElementById('player-container'); diff --git a/player/custom-adaptation/js/script.js b/player/custom-adaptation/js/script.js index c16400dd..e5337dc3 100644 --- a/player/custom-adaptation/js/script.js +++ b/player/custom-adaptation/js/script.js @@ -132,10 +132,10 @@ }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', - progressive: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', - poster: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/poster.jpg', + dash: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + progressive: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', + poster: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg', }; var playerContainer = document.getElementById('player-container'); diff --git a/player/drm/demo.js b/player/drm/demo.js index 731bbde8..81f6788d 100644 --- a/player/drm/demo.js +++ b/player/drm/demo.js @@ -6,8 +6,8 @@ var config = { }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/art-of-motion_drm/mpds/11331.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/art-of-motion_drm/m3u8s/11331.m3u8', + dash: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', smooth: 'https://test.playready.microsoft.com/smoothstreaming/SSWSS720H264/SuperSpeedway_720.ism/manifest', drm: { widevine: { diff --git a/player/drm/js/script.js b/player/drm/js/script.js index 9ac60c43..64f4ffd7 100644 --- a/player/drm/js/script.js +++ b/player/drm/js/script.js @@ -1,14 +1,14 @@ (function () { var noDrmSource = { - 'dash': 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', - 'hls': 'https://bitdash-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + 'dash': 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + 'hls': 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', 'smooth': 'https://test.playready.microsoft.com/smoothstreaming/SSWSS720H264/SuperSpeedway_720.ism/manifest' }; var defaultSource = { - 'hls': 'https://bitmovin-a.akamaihd.net/content/art-of-motion_drm/m3u8s/11331.m3u8', - 'dash': 'https://bitmovin-a.akamaihd.net/content/art-of-motion_drm/mpds/11331.mpd', + 'hls': 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + 'dash': 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', 'smooth': 'https://test.playready.microsoft.com/smoothstreaming/SSWSS720H264/SuperSpeedway_720.ism/manifest', 'drm': { 'widevine': { diff --git a/player/hls-fmp4/demo.js b/player/hls-fmp4/demo.js index e47d9173..cb6f368a 100644 --- a/player/hls-fmp4/demo.js +++ b/player/hls-fmp4/demo.js @@ -3,8 +3,8 @@ const conf = { }; var source = { - hls: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s-fmp4/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', - poster: 'https://bitmovin-a.akamaihd.net/content/art-of-motion_drm/art-of-motion_poster.jpg' + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s-fmp4/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + poster: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg' }; var playerContainer = document.getElementById('player-container'); diff --git a/player/hls-fmp4/js/script.js b/player/hls-fmp4/js/script.js index 50de1593..cdc4ce52 100644 --- a/player/hls-fmp4/js/script.js +++ b/player/hls-fmp4/js/script.js @@ -10,8 +10,8 @@ var conf = { }; var source = { - hls: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s-fmp4/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', - poster: 'https://bitmovin-a.akamaihd.net/content/art-of-motion_drm/art-of-motion_poster.jpg' + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s-fmp4/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + poster: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg' }; var playerContainer = document.getElementById('player-container'); diff --git a/player/native-sdks/js/script.js b/player/native-sdks/js/script.js index 507f207e..41e56965 100644 --- a/player/native-sdks/js/script.js +++ b/player/native-sdks/js/script.js @@ -10,10 +10,10 @@ var conf = { } var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', - progressive: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', - poster: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/poster.jpg' + dash: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + progressive: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', + poster: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg' }; var playerContainer = document.getElementById('player-container'); diff --git a/player/picture-in-picture/js/script.js b/player/picture-in-picture/js/script.js index e99532b3..bac2ef65 100644 --- a/player/picture-in-picture/js/script.js +++ b/player/picture-in-picture/js/script.js @@ -25,10 +25,10 @@ }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', - progressive: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', - poster: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/poster.jpg' + dash: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + progressive: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', + poster: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg' }; var playerContainer = document.getElementById('player'); diff --git a/player/picture-in-picture/setup.js b/player/picture-in-picture/setup.js index ab398a5d..5ec714ee 100644 --- a/player/picture-in-picture/setup.js +++ b/player/picture-in-picture/setup.js @@ -26,10 +26,10 @@ var conf = { }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', - progressive: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', - poster: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/poster.jpg', + dash: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + progressive: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', + poster: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg', }; var playerContainer = document.getElementById('player-container'); diff --git a/player/player-playground/demo.js b/player/player-playground/demo.js index d5820714..88f0c59e 100644 --- a/player/player-playground/demo.js +++ b/player/player-playground/demo.js @@ -3,9 +3,9 @@ var conf = { }; var source = { - dash: "https://bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd", - hls: "https://bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8", - poster: "https://bitmovin-a.akamaihd.net/content/MI201109210084_1/poster.jpg" + dash: "https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd", + hls: "https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8", + poster: "https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg" }; var playerContainer = document.getElementById("player-container"); diff --git a/player/player-playground/js/script.js b/player/player-playground/js/script.js index 61747d11..111bc16d 100644 --- a/player/player-playground/js/script.js +++ b/player/player-playground/js/script.js @@ -14,41 +14,41 @@ var tempKeyHolder = { } var sourceConfig = { - dash: "https://bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd", - hls: "https://bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8", - progressive: "https://bitmovin-a.akamaihd.net/content/MI201109210084_1/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4", + dash: "https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd", + hls: "https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8", + progressive: "https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4", smooth: "https://test.playready.microsoft.com/smoothstreaming/SSWSS720H264/SuperSpeedway_720.ism/manifest", - poster: "https://bitmovin-a.akamaihd.net/content/MI201109210084_1/poster.jpg" + poster: "https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg" }; var sources = [ { title: "DASH", url: { - dash: "https://bitdash-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd", - poster: "https://bitdash-a.akamaihd.net/content/MI201109210084_1/poster.jpg", + dash: "https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd", + poster: "https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg", } }, { title: "HLS", url: { - hls: "https://bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8", - poster: "https://bitdash-a.akamaihd.net/content/MI201109210084_1/poster.jpg", + hls: "https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8", + poster: "https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg", } }, { title: "Smooth", url: { smooth: "https://test.playready.microsoft.com/smoothstreaming/SSWSS720H264/SuperSpeedway_720.ism/manifest", - poster: "https://bitdash-a.akamaihd.net/content/MI201109210084_1/poster.jpg", + poster: "https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg", } }, { title: "Progressive", url: { - progressive: "https://bitmovin-a.akamaihd.net/content/MI201109210084_1/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4", - poster: "https://bitdash-a.akamaihd.net/content/MI201109210084_1/poster.jpg", + progressive: "https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4", + poster: "https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg", } } ]; diff --git a/player/stream-test/js/script.js b/player/stream-test/js/script.js index de9fdbd5..a818a5ae 100644 --- a/player/stream-test/js/script.js +++ b/player/stream-test/js/script.js @@ -57,16 +57,16 @@ var config = { }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', - progressive: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', + dash: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + progressive: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', smooth: 'https://test.playready.microsoft.com/smoothstreaming/SSWSS720H264/SuperSpeedway_720.ism/manifest', - poster: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/poster.jpg' + poster: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg' }; var drmSource = { - dash: 'https://bitmovin-a.akamaihd.net/content/art-of-motion_drm/mpds/11331.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/art-of-motion_drm/m3u8s/11331.m3u8', + dash: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', smooth: 'https://test.playready.microsoft.com/smoothstreaming/SSWSS720H264/SuperSpeedway_720.ism/manifest', progressive: '', drm: { diff --git a/player/thumbnail-seeking/js/script.js b/player/thumbnail-seeking/js/script.js index 48af15b6..9a30a1ed 100644 --- a/player/thumbnail-seeking/js/script.js +++ b/player/thumbnail-seeking/js/script.js @@ -10,12 +10,12 @@ var conf = { }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', - progressive: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', - poster: 'https://bitmovin-a.akamaihd.net/content/art-of-motion_drm/art-of-motion_poster.jpg', + dash: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + progressive: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', + poster: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg', thumbnailTrack: { - url: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/thumbnails/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.vtt' + url: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/thumbnails/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.vtt' } }; diff --git a/player/thumbnail-seeking/setup.js b/player/thumbnail-seeking/setup.js index e101f2e1..601f4a9e 100644 --- a/player/thumbnail-seeking/setup.js +++ b/player/thumbnail-seeking/setup.js @@ -3,12 +3,12 @@ var conf = { }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', - progressive: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', - poster: 'https://bitmovin-a.akamaihd.net/content/art-of-motion_drm/art-of-motion_poster.jpg', + dash: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + progressive: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', + poster: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg', thumbnailTrack: { - url: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/thumbnails/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.vtt' + url: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/thumbnails/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.vtt' } }; diff --git a/player/variable-playback-speed/demo.js b/player/variable-playback-speed/demo.js index 70183143..a08ca521 100644 --- a/player/variable-playback-speed/demo.js +++ b/player/variable-playback-speed/demo.js @@ -3,14 +3,10 @@ var conf = { }; var source = { - dash: - 'https://bitdash-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', - hls: - 'https://bitdash-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', - progressive: - 'https://bitdash-a.akamaihd.net/content/MI201109210084_1/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', - poster: - 'https://bitdash-a.akamaihd.net/content/art-of-motion_drm/art-of-motion_poster.jpg', + dash: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + progressive: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', + poster: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg' }; var playerContainer = document.getElementById('player-container'); diff --git a/player/variable-playback-speed/js/script.js b/player/variable-playback-speed/js/script.js index 9bc63e16..509171c7 100644 --- a/player/variable-playback-speed/js/script.js +++ b/player/variable-playback-speed/js/script.js @@ -13,10 +13,10 @@ var conf = { }; var source = { - dash: 'https://bitdash-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', - hls: 'https://bitdash-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', - progressive: 'https://bitdash-a.akamaihd.net/content/MI201109210084_1/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', - poster: 'https://bitdash-a.akamaihd.net/content/art-of-motion_drm/art-of-motion_poster.jpg' + dash: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + progressive: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4', + poster: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/poster.jpg' }; var playerContainer = document.getElementById('player-container'); From 507c9c535d138f96ccc5058f80dd4b36e331bbe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Kr=C3=B6pfl?= Date: Wed, 24 Aug 2022 13:26:29 +0200 Subject: [PATCH 03/83] replaced streams for sintel and bbb --- player/audio-api/js/script.js | 3 +-- player/audio-api/setup.js | 3 +-- player/caption-styling/demo.js | 6 +++--- player/caption-styling/js/script.js | 6 +++--- player/channel-switching/js/script.js | 9 +++++---- player/channel-switching/switchChannel.js | 9 +++++---- player/custom-quality-labels/setup.js | 6 +++--- player/multi-audio-tracks/js/script.js | 6 +++--- player/multi-audio-tracks/setup.js | 6 +++--- player/overlay-ad/js/script.js | 6 +++--- player/overlay-ad/setup.js | 6 +++--- player/player-ui-styling/demo.js | 6 +++--- player/player-ui-styling/externallyManaged.js | 6 +++--- player/player-ui-styling/js/script.js | 6 +++--- player/preload-vod/js/script.js | 6 +++--- 15 files changed, 45 insertions(+), 45 deletions(-) diff --git a/player/audio-api/js/script.js b/player/audio-api/js/script.js index 9d70a6f7..eb634123 100644 --- a/player/audio-api/js/script.js +++ b/player/audio-api/js/script.js @@ -22,8 +22,7 @@ var conf = { }; var source1 = { - hls: 'https://cdn.bitmovin.com/content/demos/4k/38e843e0-1998-11e9-8a92-c734cd79b4dc/manifest.m3u8', - poster: 'https://bitmovin-a.akamaihd.net/content/sintel/poster.png' + hls: 'https://cdn.bitmovin.com/content/assets/blender-4k/38e843e0-1998-11e9-8a92-c734cd79b4dc/manifest.m3u8' }; var source2 = { diff --git a/player/audio-api/setup.js b/player/audio-api/setup.js index 33f42b59..a580d4e1 100644 --- a/player/audio-api/setup.js +++ b/player/audio-api/setup.js @@ -4,8 +4,7 @@ var conf = { }; var source1 = { - hls: 'https://cdn.bitmovin.com/content/demos/4k/38e843e0-1998-11e9-8a92-c734cd79b4dc/manifest.m3u8', - poster: 'https://bitmovin-a.akamaihd.net/content/sintel/poster.png' + hls: 'https://cdn.bitmovin.com/content/assets/blender-4k/38e843e0-1998-11e9-8a92-c734cd79b4dc/manifest.m3u8' }; var source2 = { diff --git a/player/caption-styling/demo.js b/player/caption-styling/demo.js index 0f5e19f8..5cf96f11 100644 --- a/player/caption-styling/demo.js +++ b/player/caption-styling/demo.js @@ -3,9 +3,9 @@ var conf = { }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/sintel/sintel.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/sintel/hls/playlist.m3u8', - poster: 'https://bitmovin-a.akamaihd.net/content/sintel/poster.png' + dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png' }; var playerContainer = document.getElementById('player-container'); diff --git a/player/caption-styling/js/script.js b/player/caption-styling/js/script.js index 14e19429..19ef13fb 100644 --- a/player/caption-styling/js/script.js +++ b/player/caption-styling/js/script.js @@ -10,9 +10,9 @@ var conf = { }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/sintel/sintel.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/sintel/hls/playlist.m3u8', - poster: 'https://bitmovin-a.akamaihd.net/content/sintel/poster.png' + dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png' }; var playerContainer = document.getElementById('player-container'); diff --git a/player/channel-switching/js/script.js b/player/channel-switching/js/script.js index 15e7c464..d3fee856 100644 --- a/player/channel-switching/js/script.js +++ b/player/channel-switching/js/script.js @@ -128,15 +128,16 @@ function switchChannel(channelID, event) { source = { title: 'Big Buck Bunny', description: 'A day in the life of Big Buck Bunny.', - dash: 'https://bitmovin-a.akamaihd.net/content/bbb/stream.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/bbb/stream.m3u8' + dash: 'https://cdn.bitmovin.com/content/assets/bbb/stream.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/bbb/stream.m3u8' }; } else { source = { title: 'Sintel', description: 'The main character, Sintel, is attacked while traveling through a wintry mountainside.', - dash: 'https://bitmovin-a.akamaihd.net/content/sintel/sintel.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/sintel/hls/playlist.m3u8' + dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png' } } diff --git a/player/channel-switching/switchChannel.js b/player/channel-switching/switchChannel.js index 5d7868ab..a2644487 100644 --- a/player/channel-switching/switchChannel.js +++ b/player/channel-switching/switchChannel.js @@ -11,15 +11,16 @@ function switchChannel(channelID) { source = { title: 'Big Buck Bunny', description: 'A day in the life of Big Buck Bunny.', - dash: 'https://bitmovin-a.akamaihd.net/content/bbb/stream.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/bbb/stream.m3u8' + dash: 'https://cdn.bitmovin.com/content/assets/bbb/stream.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/bbb/stream.m3u8' }; } else { source = { title: 'Sintel', description: 'The main character, Sintel, is attacked while traveling through a wintry mountainside.', - dash: 'https://bitmovin-a.akamaihd.net/content/sintel/sintel.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/sintel/hls/playlist.m3u8' + dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png' } } diff --git a/player/custom-quality-labels/setup.js b/player/custom-quality-labels/setup.js index c46561bc..a26aa9f8 100644 --- a/player/custom-quality-labels/setup.js +++ b/player/custom-quality-labels/setup.js @@ -11,9 +11,9 @@ var conf = { }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/sintel/sintel.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/sintel/hls/playlist.m3u8', - poster: 'https://bitmovin-a.akamaihd.net/content/sintel/poster.png', + dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png', labeling: { dash: { qualities: getQualityLabels diff --git a/player/multi-audio-tracks/js/script.js b/player/multi-audio-tracks/js/script.js index a091674e..15a5ba7c 100644 --- a/player/multi-audio-tracks/js/script.js +++ b/player/multi-audio-tracks/js/script.js @@ -10,9 +10,9 @@ var conf = { }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/sintel/sintel.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/sintel/hls/playlist.m3u8', - poster: 'https://bitmovin.com/wp-content/uploads/2016/06/sintel-poster.jpg' + dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png' }; var playerContainer = document.getElementById('player-container'); diff --git a/player/multi-audio-tracks/setup.js b/player/multi-audio-tracks/setup.js index 60b22c33..3b97ec14 100644 --- a/player/multi-audio-tracks/setup.js +++ b/player/multi-audio-tracks/setup.js @@ -3,9 +3,9 @@ var conf = { }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/sintel/sintel.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/sintel/hls/playlist.m3u8', - poster: 'https://bitmovin-a.akamaihd.net/content/sintel/poster.png', + dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png', }; var playerContainer = document.getElementById('player-container'); diff --git a/player/overlay-ad/js/script.js b/player/overlay-ad/js/script.js index 38119aee..9c253b4d 100644 --- a/player/overlay-ad/js/script.js +++ b/player/overlay-ad/js/script.js @@ -18,9 +18,9 @@ var conf = { }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/sintel/sintel.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/sintel/hls/playlist.m3u8', - poster: 'https://bitmovin-a.akamaihd.net/content/sintel/poster.png' + dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png' }; var playerContainer = document.getElementById('player-container'); diff --git a/player/overlay-ad/setup.js b/player/overlay-ad/setup.js index f80dd31d..62c30017 100644 --- a/player/overlay-ad/setup.js +++ b/player/overlay-ad/setup.js @@ -14,9 +14,9 @@ var conf = { }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/sintel/sintel.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/sintel/hls/playlist.m3u8', - poster: 'https://bitmovin-a.akamaihd.net/content/sintel/poster.png', + dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png', }; var playerContainer = document.getElementById('player-container'); diff --git a/player/player-ui-styling/demo.js b/player/player-ui-styling/demo.js index 201b32d3..08f857ea 100644 --- a/player/player-ui-styling/demo.js +++ b/player/player-ui-styling/demo.js @@ -8,9 +8,9 @@ const conf = { }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/sintel/sintel.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/sintel/hls/playlist.m3u8', - poster: 'https://bitmovin-a.akamaihd.net/content/sintel/poster.png', + dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png', }; var playerContainer = document.getElementById('player-container'); diff --git a/player/player-ui-styling/externallyManaged.js b/player/player-ui-styling/externallyManaged.js index 0d9e3dd3..d8f154b6 100644 --- a/player/player-ui-styling/externallyManaged.js +++ b/player/player-ui-styling/externallyManaged.js @@ -4,9 +4,9 @@ var config = { }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/sintel/sintel.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/sintel/hls/playlist.m3u8', - poster: 'https://bitmovin-a.akamaihd.net/content/sintel/poster.png' + dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png' }; var currentUiManager, isSmallscreen = false; diff --git a/player/player-ui-styling/js/script.js b/player/player-ui-styling/js/script.js index 3ee6ad93..c2041651 100644 --- a/player/player-ui-styling/js/script.js +++ b/player/player-ui-styling/js/script.js @@ -11,9 +11,9 @@ var conf = { }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/sintel/sintel.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/sintel/hls/playlist.m3u8', - poster: 'https://bitmovin-a.akamaihd.net/content/sintel/poster.png' + dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png' }; var currentUiManager, isSmallscreen = false; diff --git a/player/preload-vod/js/script.js b/player/preload-vod/js/script.js index d69932b5..ddfa1933 100644 --- a/player/preload-vod/js/script.js +++ b/player/preload-vod/js/script.js @@ -63,9 +63,9 @@ var conf = { }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/sintel/sintel.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/sintel/hls/playlist.m3u8', - poster: 'https://bitmovin-a.akamaihd.net/content/sintel/poster.png' + dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png' }; var playerPreloadContainer = document.getElementById('player-container-preload'); From 62826c1e143326e5943da52eb97f6d287ee31572 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Kr=C3=B6pfl?= Date: Wed, 24 Aug 2022 15:09:13 +0200 Subject: [PATCH 04/83] updated 360 demo source --- player/vr-360/demo.js | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/player/vr-360/demo.js b/player/vr-360/demo.js index 23d71026..1a585442 100644 --- a/player/vr-360/demo.js +++ b/player/vr-360/demo.js @@ -6,14 +6,10 @@ var conf = { }; var source = { - dash: - 'https://bitmovin-a.akamaihd.net/content/playhouse-vr/mpds/105560.mpd', - hls: - 'https://bitmovin-a.akamaihd.net/content/playhouse-vr/m3u8s/105560.m3u8', - progressive: - 'https://bitmovin-a.akamaihd.net/content/playhouse-vr/progressive.mp4', - poster: - 'https://bitmovin-a.akamaihd.net/content/playhouse-vr/poster.jpg', + dash: 'https://cdn.bitmovin.com/content/assets/playhouse-vr/mpds/105560.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/playhouse-vr/m3u8s/105560.m3u8', + progressive: 'https://cdn.bitmovin.com/content/assets/playhouse-vr/progressive.mp4', + poster: 'https://cdn.bitmovin.com/content/assets/playhouse-vr/poster.jpg' vr: { startupMode: '2d', startPosition: 180, From c7663d5109ea16ce8d93a114a1eff93daf2c9865 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Kr=C3=B6pfl?= Date: Wed, 24 Aug 2022 15:09:32 +0200 Subject: [PATCH 05/83] fixed missing , --- player/vr-360/demo.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/player/vr-360/demo.js b/player/vr-360/demo.js index 1a585442..aba090cf 100644 --- a/player/vr-360/demo.js +++ b/player/vr-360/demo.js @@ -9,7 +9,7 @@ var source = { dash: 'https://cdn.bitmovin.com/content/assets/playhouse-vr/mpds/105560.mpd', hls: 'https://cdn.bitmovin.com/content/assets/playhouse-vr/m3u8s/105560.m3u8', progressive: 'https://cdn.bitmovin.com/content/assets/playhouse-vr/progressive.mp4', - poster: 'https://cdn.bitmovin.com/content/assets/playhouse-vr/poster.jpg' + poster: 'https://cdn.bitmovin.com/content/assets/playhouse-vr/poster.jpg', vr: { startupMode: '2d', startPosition: 180, From a2c1972c97d567eef17a4857617723efdf918cfb Mon Sep 17 00:00:00 2001 From: Andreas Kogler Date: Fri, 26 Aug 2022 12:35:22 +0200 Subject: [PATCH 06/83] Replace `akamai` links in VR - 360 demo --- player/vr-360/js/script.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/player/vr-360/js/script.js b/player/vr-360/js/script.js index 84bd5a52..61387248 100644 --- a/player/vr-360/js/script.js +++ b/player/vr-360/js/script.js @@ -13,10 +13,10 @@ var conf = { }; var source = { - dash: 'https://bitmovin-a.akamaihd.net/content/playhouse-vr/mpds/105560.mpd', - hls: 'https://bitmovin-a.akamaihd.net/content/playhouse-vr/m3u8s/105560.m3u8', - progressive: 'https://bitmovin-a.akamaihd.net/content/playhouse-vr/progressive.mp4', - poster: 'https://bitmovin-a.akamaihd.net/content/playhouse-vr/poster.jpg', + dash: 'https://cdn.bitmovin.com/content/assets/playhouse-vr/mpds/105560.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/playhouse-vr/m3u8s/105560.m3u8', + progressive: 'https://cdn.bitmovin.com/content/assets/playhouse-vr/progressive.mp4', + poster: 'https://cdn.bitmovin.com/content/assets/playhouse-vr/poster.jpg', vr: { startupMode: '2d', startPosition: 180 From 81d62c5b987cb5e9375392235ffe0b971ae12597 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Kr=C3=B6pfl?= Date: Mon, 29 Aug 2022 12:20:26 +0200 Subject: [PATCH 07/83] fixed all sintel hls stream urls --- player/caption-styling/demo.js | 2 +- player/caption-styling/js/script.js | 2 +- player/channel-switching/js/script.js | 2 +- player/channel-switching/switchChannel.js | 2 +- player/custom-quality-labels/setup.js | 2 +- player/multi-audio-tracks/js/script.js | 2 +- player/multi-audio-tracks/setup.js | 2 +- player/overlay-ad/js/script.js | 2 +- player/overlay-ad/setup.js | 2 +- player/player-ui-styling/demo.js | 2 +- player/player-ui-styling/externallyManaged.js | 2 +- player/player-ui-styling/js/script.js | 2 +- player/preload-vod/js/script.js | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/player/caption-styling/demo.js b/player/caption-styling/demo.js index 5cf96f11..5f3e2ba6 100644 --- a/player/caption-styling/demo.js +++ b/player/caption-styling/demo.js @@ -4,7 +4,7 @@ var conf = { var source = { dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', - hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/playlist.m3u8', poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png' }; diff --git a/player/caption-styling/js/script.js b/player/caption-styling/js/script.js index 19ef13fb..38204c6d 100644 --- a/player/caption-styling/js/script.js +++ b/player/caption-styling/js/script.js @@ -11,7 +11,7 @@ var conf = { var source = { dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', - hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/playlist.m3u8', poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png' }; diff --git a/player/channel-switching/js/script.js b/player/channel-switching/js/script.js index d3fee856..6326dba8 100644 --- a/player/channel-switching/js/script.js +++ b/player/channel-switching/js/script.js @@ -136,7 +136,7 @@ function switchChannel(channelID, event) { title: 'Sintel', description: 'The main character, Sintel, is attacked while traveling through a wintry mountainside.', dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', - hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/playlist.m3u8', poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png' } } diff --git a/player/channel-switching/switchChannel.js b/player/channel-switching/switchChannel.js index a2644487..bfe38489 100644 --- a/player/channel-switching/switchChannel.js +++ b/player/channel-switching/switchChannel.js @@ -19,7 +19,7 @@ function switchChannel(channelID) { title: 'Sintel', description: 'The main character, Sintel, is attacked while traveling through a wintry mountainside.', dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', - hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/playlist.m3u8', poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png' } } diff --git a/player/custom-quality-labels/setup.js b/player/custom-quality-labels/setup.js index a26aa9f8..b0f00e87 100644 --- a/player/custom-quality-labels/setup.js +++ b/player/custom-quality-labels/setup.js @@ -12,7 +12,7 @@ var conf = { var source = { dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', - hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/playlist.m3u8', poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png', labeling: { dash: { diff --git a/player/multi-audio-tracks/js/script.js b/player/multi-audio-tracks/js/script.js index 15a5ba7c..f8a4f292 100644 --- a/player/multi-audio-tracks/js/script.js +++ b/player/multi-audio-tracks/js/script.js @@ -11,7 +11,7 @@ var conf = { var source = { dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', - hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/playlist.m3u8', poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png' }; diff --git a/player/multi-audio-tracks/setup.js b/player/multi-audio-tracks/setup.js index 3b97ec14..9069dc50 100644 --- a/player/multi-audio-tracks/setup.js +++ b/player/multi-audio-tracks/setup.js @@ -4,7 +4,7 @@ var conf = { var source = { dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', - hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/playlist.m3u8', poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png', }; diff --git a/player/overlay-ad/js/script.js b/player/overlay-ad/js/script.js index 9c253b4d..f1f33421 100644 --- a/player/overlay-ad/js/script.js +++ b/player/overlay-ad/js/script.js @@ -19,7 +19,7 @@ var conf = { var source = { dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', - hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/playlist.m3u8', poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png' }; diff --git a/player/overlay-ad/setup.js b/player/overlay-ad/setup.js index 62c30017..603d2690 100644 --- a/player/overlay-ad/setup.js +++ b/player/overlay-ad/setup.js @@ -15,7 +15,7 @@ var conf = { var source = { dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', - hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/playlist.m3u8', poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png', }; diff --git a/player/player-ui-styling/demo.js b/player/player-ui-styling/demo.js index 08f857ea..3afe4d29 100644 --- a/player/player-ui-styling/demo.js +++ b/player/player-ui-styling/demo.js @@ -9,7 +9,7 @@ const conf = { var source = { dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', - hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/playlist.m3u8', poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png', }; diff --git a/player/player-ui-styling/externallyManaged.js b/player/player-ui-styling/externallyManaged.js index d8f154b6..631fab47 100644 --- a/player/player-ui-styling/externallyManaged.js +++ b/player/player-ui-styling/externallyManaged.js @@ -5,7 +5,7 @@ var config = { var source = { dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', - hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/playlist.m3u8', poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png' }; diff --git a/player/player-ui-styling/js/script.js b/player/player-ui-styling/js/script.js index c2041651..4f4ba517 100644 --- a/player/player-ui-styling/js/script.js +++ b/player/player-ui-styling/js/script.js @@ -12,7 +12,7 @@ var conf = { var source = { dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', - hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/playlist.m3u8', poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png' }; diff --git a/player/preload-vod/js/script.js b/player/preload-vod/js/script.js index ddfa1933..6730ae94 100644 --- a/player/preload-vod/js/script.js +++ b/player/preload-vod/js/script.js @@ -64,7 +64,7 @@ var conf = { var source = { dash: 'https://cdn.bitmovin.com/content/assets/sintel/sintel.mpd', - hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/sintel.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/sintel/hls/playlist.m3u8', poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png' }; From fd2470ad6aef7f87e1b49b51d3b39d8957529b7b Mon Sep 17 00:00:00 2001 From: Andreas Kogler Date: Mon, 29 Aug 2022 17:53:54 +0200 Subject: [PATCH 08/83] Use new URL for DRM protected AoM source --- player/drm/demo.js | 4 ++-- player/drm/js/script.js | 4 ++-- player/stream-test/js/script.js | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/player/drm/demo.js b/player/drm/demo.js index 81f6788d..9fff1b76 100644 --- a/player/drm/demo.js +++ b/player/drm/demo.js @@ -6,8 +6,8 @@ var config = { }; var source = { - dash: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', - hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + dash: 'https://cdn.bitmovin.com/content/assets/art-of-motion_drm/mpds/11331.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion_drm/m3u8s/11331.m3u8', smooth: 'https://test.playready.microsoft.com/smoothstreaming/SSWSS720H264/SuperSpeedway_720.ism/manifest', drm: { widevine: { diff --git a/player/drm/js/script.js b/player/drm/js/script.js index 64f4ffd7..e8c6b9d5 100644 --- a/player/drm/js/script.js +++ b/player/drm/js/script.js @@ -7,8 +7,8 @@ }; var defaultSource = { - 'hls': 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', - 'dash': 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', + 'hls': 'https://cdn.bitmovin.com/content/assets/art-of-motion_drm/m3u8s/11331.m3u8', + 'dash': 'https://cdn.bitmovin.com/content/assets/art-of-motion_drm/mpds/11331.mpd', 'smooth': 'https://test.playready.microsoft.com/smoothstreaming/SSWSS720H264/SuperSpeedway_720.ism/manifest', 'drm': { 'widevine': { diff --git a/player/stream-test/js/script.js b/player/stream-test/js/script.js index a818a5ae..96f1c560 100644 --- a/player/stream-test/js/script.js +++ b/player/stream-test/js/script.js @@ -65,8 +65,8 @@ var source = { }; var drmSource = { - dash: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd', - hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8', + dash: 'https://cdn.bitmovin.com/content/assets/art-of-motion_drm/mpds/11331.mpd', + hls: 'https://cdn.bitmovin.com/content/assets/art-of-motion_drm/m3u8s/11331.m3u8', smooth: 'https://test.playready.microsoft.com/smoothstreaming/SSWSS720H264/SuperSpeedway_720.ism/manifest', progressive: '', drm: { From 4ce1136be59b893493e0d5acfe6c7122ac4ee389 Mon Sep 17 00:00:00 2001 From: Andreas Kogler Date: Mon, 3 Oct 2022 17:13:33 +0200 Subject: [PATCH 09/83] Add missing `var` to avoid error in `strict` mode --- player/custom-adaptation/js/script.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/player/custom-adaptation/js/script.js b/player/custom-adaptation/js/script.js index e5337dc3..46de5b81 100644 --- a/player/custom-adaptation/js/script.js +++ b/player/custom-adaptation/js/script.js @@ -139,7 +139,7 @@ }; var playerContainer = document.getElementById('player-container'); - player = new bitmovin.player.Player(playerContainer, conf); + var player = new bitmovin.player.Player(playerContainer, conf); player.load(source).then(function () { availableRepresentations = player.getAvailableVideoQualities(); From 1bea21a3a98a1650b6b1a626a7c538a74fb282d4 Mon Sep 17 00:00:00 2001 From: James Varndell Date: Tue, 17 Jan 2023 09:59:14 +0000 Subject: [PATCH 10/83] Fixing broken links in Player demos --- player/caption-styling/index.html | 4 ++-- player/player-ui-styling/index.html | 2 +- player/thumbnail-seeking/index.html | 7 +++---- player/vr-360/index.html | 4 ++-- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/player/caption-styling/index.html b/player/caption-styling/index.html index 43a5a033..eaf863ae 100644 --- a/player/caption-styling/index.html +++ b/player/caption-styling/index.html @@ -31,8 +31,8 @@

Bitmovin closed captions and subtitles supporttutorial + For more information about all the supported options head over to the + tutorial section.

diff --git a/player/player-ui-styling/index.html b/player/player-ui-styling/index.html index 88b76efa..44536a7f 100644 --- a/player/player-ui-styling/index.html +++ b/player/player-ui-styling/index.html @@ -102,7 +102,7 @@

Styling of single components

If you prefer to update just a few elements without having to build an entire UI, all elements can be restyled using CSS. - The + The documentation provides a complete reference of all CSS classes used in the UI. You may even want to have a look at our SCSS source files. diff --git a/player/thumbnail-seeking/index.html b/player/thumbnail-seeking/index.html index 5add595b..444f5e47 100644 --- a/player/thumbnail-seeking/index.html +++ b/player/thumbnail-seeking/index.html @@ -43,10 +43,9 @@

How to set up thumbnail seeking in your Bitmovin Player

-

To set up your video player with thumbnails have a look at this article for a more comprehensive - explanation of the - - Bitmovin Player configuration. +

To set up your video player with thumbnails have a look at + this article + for a description of the thumbnails you can use with Bitmovin Player.

What’s required for a video player with thumbnails

diff --git a/player/vr-360/index.html b/player/vr-360/index.html index 2f9e822e..59025e51 100644 --- a/player/vr-360/index.html +++ b/player/vr-360/index.html @@ -69,8 +69,8 @@

HTML5 VR and 360° Adaptive Video Streaming

quality of your adaption logic of paramount importance. The patented technology of the Bitmovin Player puts it a few steps ahead of its nearest competitors.

For more information about VR Playback head over to our - tutorial + tutorial section.

- \ No newline at end of file + From 3a55868d33ef32c7aa0445bbddb4c3836f536fb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Kr=C3=B6pfl?= Date: Thu, 9 Feb 2023 16:07:58 +0100 Subject: [PATCH 11/83] fix UI factory calls --- player/player-ui-styling/externallyManaged.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/player/player-ui-styling/externallyManaged.js b/player/player-ui-styling/externallyManaged.js index 631fab47..5298a9fd 100644 --- a/player/player-ui-styling/externallyManaged.js +++ b/player/player-ui-styling/externallyManaged.js @@ -14,15 +14,15 @@ var playerContainer = document.getElementById('player-container'); var player = new bitmovin.player.Player(playerContainer, conf); player.load(source).then(function () { - currentUiManager = bitmovin.playerui.UIManager.Factory.buildDefaultUI(player); + currentUiManager = bitmovin.playerui.UIFactory.buildDefaultUI(player); }); function toggleSmallScreenUI() { currentUiManager.release(); if (!isSmallscreen) { - currentUiManager = bitmovin.playerui.UIManager.Factory.buildModernSmallScreenUI(player); + currentUiManager = bitmovin.playerui.UIFactory.buildModernSmallScreenUI(player); } else { - currentUiManager = bitmovin.playerui.UIManager.Factory.buildDefaultUI(player); + currentUiManager = bitmovin.playerui.UIFactory.buildDefaultUI(player); } isSmallscreen = !isSmallscreen; -} \ No newline at end of file +} From 1fef69ca3c15437085025b7d16fb5bd56adc9ee4 Mon Sep 17 00:00:00 2001 From: Kirill Karpov <85180621+karpov-kir@users.noreply.github.com> Date: Wed, 22 Feb 2023 16:36:44 +0400 Subject: [PATCH 12/83] Add Stream Lab to Stream Test page (#102) --- player/stream-test/css/style.css | 8 ++++++++ player/stream-test/index.html | 26 ++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/player/stream-test/css/style.css b/player/stream-test/css/style.css index c975963d..3f8a01de 100644 --- a/player/stream-test/css/style.css +++ b/player/stream-test/css/style.css @@ -334,3 +334,11 @@ body:not(.fullscreen) :not(.no-frame).notebook-frame::before { color: red; font-weight: bold; } + +.demo-select-target { + display: flex; +} + +.demo-select-target select { + margin-right: 10px; +} \ No newline at end of file diff --git a/player/stream-test/index.html b/player/stream-test/index.html index 1fbb5a31..b1df14e9 100644 --- a/player/stream-test/index.html +++ b/player/stream-test/index.html @@ -59,6 +59,32 @@
+
+
+
Test your stream on real devices with Stream Lab
+
+
+ + + Open dashboard + +
+
From cee7bf4bf94eb5e1b7a11511f35b56b543ab93db Mon Sep 17 00:00:00 2001 From: Kirill Karpov <85180621+karpov-kir@users.noreply.github.com> Date: Tue, 7 Mar 2023 13:00:40 +0400 Subject: [PATCH 13/83] Fix player appearance on Stream Test page (#103) --- player/stream-test/css/style.css | 1 + 1 file changed, 1 insertion(+) diff --git a/player/stream-test/css/style.css b/player/stream-test/css/style.css index 3f8a01de..0b8b23fc 100644 --- a/player/stream-test/css/style.css +++ b/player/stream-test/css/style.css @@ -166,6 +166,7 @@ body:not(.fullscreen) :not(.no-frame).notebook-frame::before { .demo-row { display: flex; + align-items: flex-start; } .demo-start { From 7000b324b809efac190bf262b5fb137c3eb56556 Mon Sep 17 00:00:00 2001 From: felix-hoc Date: Wed, 8 Mar 2023 15:50:45 +0100 Subject: [PATCH 14/83] Migrate PlayReady LA URLs to new servers. --- player/drm/demo.js | 2 +- player/drm/js/script.js | 2 +- player/stream-test/js/script.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/player/drm/demo.js b/player/drm/demo.js index 9fff1b76..61a44875 100644 --- a/player/drm/demo.js +++ b/player/drm/demo.js @@ -14,7 +14,7 @@ var source = { LA_URL: 'https://cwip-shaka-proxy.appspot.com/no_auth' }, playready: { - LA_URL: 'https://playready.directtaps.net/pr/svc/rightsmanager.asmx?PlayRight=1&ContentKey=EAtsIJQPd5pFiRUrV9Layw==' + LA_URL: 'https://test.playready.microsoft.com/service/rightsmanager.asmx?PlayRight=1&ContentKey=EAtsIJQPd5pFiRUrV9Layw==' } } }; diff --git a/player/drm/js/script.js b/player/drm/js/script.js index e8c6b9d5..c2f20c6b 100644 --- a/player/drm/js/script.js +++ b/player/drm/js/script.js @@ -15,7 +15,7 @@ 'LA_URL': 'https://cwip-shaka-proxy.appspot.com/no_auth' }, 'playready': { - 'LA_URL': 'https://playready.directtaps.net/pr/svc/rightsmanager.asmx?PlayRight=1&ContentKey=EAtsIJQPd5pFiRUrV9Layw==' + 'LA_URL': 'https://test.playready.microsoft.com/service/rightsmanager.asmx?PlayRight=1&ContentKey=EAtsIJQPd5pFiRUrV9Layw==' } } }; diff --git a/player/stream-test/js/script.js b/player/stream-test/js/script.js index 96f1c560..35800e10 100644 --- a/player/stream-test/js/script.js +++ b/player/stream-test/js/script.js @@ -72,7 +72,7 @@ var drmSource = { drm: { none: '', widevine: 'https://cwip-shaka-proxy.appspot.com/no_auth', - playready: 'https://playready.directtaps.net/pr/svc/rightsmanager.asmx?PlayRight=1&ContentKey=EAtsIJQPd5pFiRUrV9Layw==' + playready: 'https://test.playready.microsoft.com/service/rightsmanager.asmx?PlayRight=1&ContentKey=EAtsIJQPd5pFiRUrV9Layw==' } }; From f68545c10c518fe2ca3b99d40aef9f80f9026a63 Mon Sep 17 00:00:00 2001 From: dweinber Date: Fri, 17 Mar 2023 13:57:01 +0100 Subject: [PATCH 15/83] Add initial, basic CMCD demo setup --- player/cmcd/README.md | 7 +++++++ player/cmcd/css/style.css | 33 +++++++++++++++++++++++++++++++++ player/cmcd/icon.svg | 1 + player/cmcd/index.html | 29 +++++++++++++++++++++++++++++ player/cmcd/info.json | 22 ++++++++++++++++++++++ player/cmcd/js/script.js | 22 ++++++++++++++++++++++ 6 files changed, 114 insertions(+) create mode 100644 player/cmcd/README.md create mode 100644 player/cmcd/css/style.css create mode 100644 player/cmcd/icon.svg create mode 100644 player/cmcd/index.html create mode 100644 player/cmcd/info.json create mode 100644 player/cmcd/js/script.js diff --git a/player/cmcd/README.md b/player/cmcd/README.md new file mode 100644 index 00000000..7b20fc1e --- /dev/null +++ b/player/cmcd/README.md @@ -0,0 +1,7 @@ +# CMCD Support + +Send Common Media Client Data (CMCD) data from Player to CDN + +### Tags + + - To be defined \ No newline at end of file diff --git a/player/cmcd/css/style.css b/player/cmcd/css/style.css new file mode 100644 index 00000000..6f2c53d8 --- /dev/null +++ b/player/cmcd/css/style.css @@ -0,0 +1,33 @@ +.demo-event-box { + padding: 23px; + border: solid 1px #CBE0ED; + border-radius: 4px; +} + +.demo-event-box > div { + font-size: 20px; + font-weight: 500; + padding-bottom: 23px; +} + +#logContent { + height: 300px; + width: 100%; + font-size: 16px; + line-height: 19px; + overflow-y: scroll; + overflow-wrap: break-word; + margin-top: 0px; + padding-top: 0px; + padding-left: 0px; + background-color: #fff; + font-family: 'Courier New', Courier, monospace; + color: #000000; +} + +.log-message { + display: flex; + flex-direction: row; + margin-bottom: unset !important; + flex-wrap: wrap; +} diff --git a/player/cmcd/icon.svg b/player/cmcd/icon.svg new file mode 100644 index 00000000..c35bf029 --- /dev/null +++ b/player/cmcd/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/player/cmcd/index.html b/player/cmcd/index.html new file mode 100644 index 00000000..a1d45d41 --- /dev/null +++ b/player/cmcd/index.html @@ -0,0 +1,29 @@ + + + + +
+

+ This demo showcases how Common Media Client Data (CMCD) can be sent by the Player to a CDN. +

+
+ +
+
+
+
+
+
+
+
    +
  • Combine CDN and Player logs to improve operational monitoring
  • +
  • Faster troubleshooting by seeing Player sessions in CDN logs
  • +
  • Optimize performance through pre-fetching and measure impact through Analytics
  • +
+
+
+ +
+
CDN logs including CMCD from the Player (CMCD data highlighted in blue)
+
It can take approximately 30 seconds to receiver CDN logs from Akamai, please bear with us
+
diff --git a/player/cmcd/info.json b/player/cmcd/info.json new file mode 100644 index 00000000..cc556092 --- /dev/null +++ b/player/cmcd/info.json @@ -0,0 +1,22 @@ +{ + "title": "CMCD Support", + "description": "Send Common Media Client Data (CMCD) data from Player to CDN (experimental)", + "long_description": "To be defined.", + "executable": { + "executable": true, + "indexfile": "index.html" + }, + "code": { + "show_code": false, + "language": "js", + "files": [] + }, + "metadata":{ + "title":"Enable Common Media Client Data (CMCD) » Video Player | Bitmovin", + "description": "Send Common Media Client Data (CMCD) data from Player to CDN" + }, + "tags": [ + "CMCD", + "Common Media Client Data" + ] +} \ No newline at end of file diff --git a/player/cmcd/js/script.js b/player/cmcd/js/script.js new file mode 100644 index 00000000..72837f0c --- /dev/null +++ b/player/cmcd/js/script.js @@ -0,0 +1,22 @@ +const playerConfig = { + key: '29ba4a30-8b5e-4336-a7dd-c94ff3b25f30', + analytics: { + key: '45adcf9b-8f7c-4e28-91c5-50ba3d442cd4', + videoId: 'cmcd' + }, + playback: { + muted: true, + autoplay: true, + } +}; + +const source = { + hls: 'https://bitmovindemocmcd-a.akamaihd.net/content/MI201109210084_1/m3u8s-fmp4-rel/main.m3u8', +}; + +const playerContainer = document.getElementById('player-container'); +const player = new bitmovin.player.Player(playerContainer, playerConfig); + +$(document).ready(function () { + player.load(source); +}); From 491cdeac7682c8c16691ed424e4071143b1340e8 Mon Sep 17 00:00:00 2001 From: dweinber Date: Fri, 17 Mar 2023 13:58:09 +0100 Subject: [PATCH 16/83] Add CmcdIntegration to send CMCD data to CDN --- player/cmcd/index.html | 2 ++ player/cmcd/js/script.js | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/player/cmcd/index.html b/player/cmcd/index.html index a1d45d41..c94e0fdb 100644 --- a/player/cmcd/index.html +++ b/player/cmcd/index.html @@ -1,6 +1,8 @@ + +

diff --git a/player/cmcd/js/script.js b/player/cmcd/js/script.js index 72837f0c..4177e3fe 100644 --- a/player/cmcd/js/script.js +++ b/player/cmcd/js/script.js @@ -10,6 +10,27 @@ const playerConfig = { } }; +const cmcdConfig = { + sessionId: uuidv4(), + contentId: '1111-111111-111111-11111', +}; + +const cmcdPlugin = new window.bitmovin.player.integration.Cmcd.CmcdIntegration(cmcdConfig); +playerConfig.network = { + preprocessHttpRequest: cmcdPlugin.preprocessHttpRequest, + preprocessHttpResponse: cmcdPlugin.preprocessHttpResponse, +}; +playerConfig.adaptation = { + desktop: { + onVideoAdaptation: cmcdPlugin.onVideoAdaptation, + onAudioAdaptation: cmcdPlugin.onAudioAdaptation, + }, + mobile: { + onVideoAdaptation: cmcdPlugin.onVideoAdaptation, + onAudioAdaptation: cmcdPlugin.onAudioAdaptation, + }, +}; + const source = { hls: 'https://bitmovindemocmcd-a.akamaihd.net/content/MI201109210084_1/m3u8s-fmp4-rel/main.m3u8', }; @@ -17,6 +38,8 @@ const source = { const playerContainer = document.getElementById('player-container'); const player = new bitmovin.player.Player(playerContainer, playerConfig); +cmcdPlugin.setPlayer(player); + $(document).ready(function () { player.load(source); }); From 0020636773c42e44f5cc358238b1b690c6dda7d8 Mon Sep 17 00:00:00 2001 From: dweinber Date: Mon, 20 Mar 2023 12:27:58 +0100 Subject: [PATCH 17/83] Mark demo as hidden for now (not showing it on the demo landing page) --- player/cmcd/info.json | 1 + 1 file changed, 1 insertion(+) diff --git a/player/cmcd/info.json b/player/cmcd/info.json index cc556092..e1c39c93 100644 --- a/player/cmcd/info.json +++ b/player/cmcd/info.json @@ -2,6 +2,7 @@ "title": "CMCD Support", "description": "Send Common Media Client Data (CMCD) data from Player to CDN (experimental)", "long_description": "To be defined.", + "hidden": true, "executable": { "executable": true, "indexfile": "index.html" From 031c08ee1c501cc67ae71a3357eb79c3dd2d57b3 Mon Sep 17 00:00:00 2001 From: dweinber Date: Mon, 20 Mar 2023 12:29:43 +0100 Subject: [PATCH 18/83] Revert "Mark demo as hidden for now (not showing it on the demo landing page)" as not supported anymore by the framework This reverts commit 0020636773c42e44f5cc358238b1b690c6dda7d8. --- player/cmcd/info.json | 1 - 1 file changed, 1 deletion(-) diff --git a/player/cmcd/info.json b/player/cmcd/info.json index e1c39c93..cc556092 100644 --- a/player/cmcd/info.json +++ b/player/cmcd/info.json @@ -2,7 +2,6 @@ "title": "CMCD Support", "description": "Send Common Media Client Data (CMCD) data from Player to CDN (experimental)", "long_description": "To be defined.", - "hidden": true, "executable": { "executable": true, "indexfile": "index.html" From fa0b7adc70d798527f451dd4eff1041313b0a973 Mon Sep 17 00:00:00 2001 From: dweinber Date: Mon, 20 Mar 2023 21:25:53 +0100 Subject: [PATCH 19/83] Change text color for CMCD logs to distinguish them more from CDN logs --- player/cmcd/css/style.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/player/cmcd/css/style.css b/player/cmcd/css/style.css index 6f2c53d8..175abaf4 100644 --- a/player/cmcd/css/style.css +++ b/player/cmcd/css/style.css @@ -31,3 +31,7 @@ margin-bottom: unset !important; flex-wrap: wrap; } + +.cmcd-log { + color: blue; +} \ No newline at end of file From f7d1d36095b3448c2ab7728864ccc0ffd1c4ed1e Mon Sep 17 00:00:00 2001 From: dweinber Date: Mon, 20 Mar 2023 21:26:58 +0100 Subject: [PATCH 20/83] Switch to cdn.jsdelivr.net --- player/cmcd/index.html | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/player/cmcd/index.html b/player/cmcd/index.html index c94e0fdb..bdd36d84 100644 --- a/player/cmcd/index.html +++ b/player/cmcd/index.html @@ -1,7 +1,5 @@ - - - - + +

From b9a747f341795681ba0e3046186856b6d2ed6808 Mon Sep 17 00:00:00 2001 From: dweinber Date: Mon, 20 Mar 2023 21:38:33 +0100 Subject: [PATCH 21/83] Ship CMCD integration within the demos for now --- player/cmcd/js/cmcd-integration.js | 1 + 1 file changed, 1 insertion(+) create mode 100644 player/cmcd/js/cmcd-integration.js diff --git a/player/cmcd/js/cmcd-integration.js b/player/cmcd/js/cmcd-integration.js new file mode 100644 index 00000000..95a08605 --- /dev/null +++ b/player/cmcd/js/cmcd-integration.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.BitmovinPlayerIntegrationCmcd=e():(t.bitmovin=t.bitmovin||{},t.bitmovin.player=t.bitmovin.player||{},t.bitmovin.player.integration=t.bitmovin.player.integration||{},t.bitmovin.player.integration.Cmcd=e())}(self,(function(){return function(){"use strict";var t={247:function(t,e,n){n.d(e,{Ao:function(){return E},Dh:function(){return s},I3:function(){return R},J3:function(){return M},M:function(){return h},O5:function(){return b},Ph:function(){return I},QU:function(){return u},RE:function(){return a},RF:function(){return A},RZ:function(){return y},T8:function(){return m},TS:function(){return k},Vf:function(){return x},Vq:function(){return q},ZH:function(){return v},be:function(){return T},dg:function(){return O},gu:function(){return D},mP:function(){return g},mc:function(){return i},nf:function(){return o},oI:function(){return S},x9:function(){return V}});var r,i,u,o,a,s,c,p=(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)});function l(t){return t.sort((function(t,e){return t.key.localeCompare(e.key)})).filter((function(t){return t.keyValuePairToString()}))}function h(t){var e=l(t),n=e.filter((function(t){return t.type===c.Request})).map((function(t){return t.keyValuePairToString()})).join(","),r=e.filter((function(t){return t.type===c.Object})).map((function(t){return t.keyValuePairToString()})).join(","),i=e.filter((function(t){return t.type===c.Status})).map((function(t){return t.keyValuePairToString()})).join(","),u=e.filter((function(t){return t.type===c.Session})).map((function(t){return t.keyValuePairToString()})).join(","),o={};return n&&(o[c.Request]=n),r&&(o[c.Object]=r),i&&(o[c.Status]=i),u&&(o[c.Session]=u),o}function y(t){var e=l(t).map((function(t){return t.keyValuePairToString()})).join(",");return"CMCD=".concat(encodeURI(e))}!function(t){t.AudioOnly="a",t.VideoOnly="v",t.MuxedVideoAudio="av",t.ManifestOrPlaylistTextFile="m",t.InitSegment="i",t.CaptionOrSubtitle="c",t.TimedTextTrack="tt",t.CryptographicKeyOrLicenseOrCertificate="k",t.Other="o"}(i||(i={})),function(t){t.MpegDash="d",t.Hls="h",t.Smooth="s",t.Other="o"}(u||(u={})),function(t){t.Vod="v",t.Live="l"}(o||(o={})),function(t){t[t.v1=1]="v1"}(a||(a={})),function(t){t.EncodedBitrate="br",t.BufferLength="bl",t.BufferStarvation="bs",t.ContentId="cid",t.ObjectDuration="d",t.Deadline="dl",t.MeasuredThroughput="mtp",t.NextObjectRequest="nor",t.NextRangeRequest="nrr",t.ObjectType="ot",t.PlaybackRate="pr",t.RequestedMaximumThroughput="rtp",t.StreamingFormat="sf",t.SessionId="sid",t.StreamType="st",t.Startup="su",t.TopBitrate="tb",t.CmcdVersion="v"}(s||(s={})),function(t){t.Object="CMCD-Object",t.Request="CMCD-Request",t.Status="CMCD-Status",t.Session="CMCD-Session"}(c||(c={}));var f,d=function(){function t(t){this.value=t}return t.prototype.keyValuePairToString=function(){return"string"==typeof this.value?"".concat(this.key,"=").concat((t=this.value,e=/"/g,n=/\\/g,'"'.concat(t.replace(n,"\\").replace(e,'\\"'),'"'))):"boolean"==typeof this.value&&!0===this.value?"".concat(this.key):"".concat(this.key,"=").concat(this.value);var t,e,n},t}(),v=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.EncodedBitrate,n.type=c.Object,n}return p(e,t),e}(d),S=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.BufferLength,n.type=c.Request,n}return p(e,t),e}(d),g=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.BufferStarvation,n.type=c.Status,n}return p(e,t),e}(d),T=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.ContentId,n.type=c.Session,n}return p(e,t),e}(d),m=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.ObjectDuration,n.type=c.Object,n}return p(e,t),e}(d),b=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.Deadline,n.type=c.Request,n}return p(e,t),e}(d),O=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.MeasuredThroughput,n.type=c.Request,n}return p(e,t),e}(d),R=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.NextObjectRequest,n.type=c.Request,n}return p(e,t),e}(d),k=(p((function(t){var e=f.call(this,t)||this;return e.key=s.NextRangeRequest,e.type=c.Request,e}),f=d),function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.ObjectType,n.type=c.Object,n}return p(e,t),e.prototype.keyValuePairToString=function(){return"".concat(this.key,"=").concat(this.value)},e}(d)),A=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.PlaybackRate,n.type=c.Session,n}return p(e,t),e.prototype.keyValuePairToString=function(){return 1===this.value?"":"".concat(this.key,"=").concat(this.value)},e}(d),M=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.RequestedMaximumThroughput,n.type=c.Status,n}return p(e,t),e}(d),x=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.StreamingFormat,n.type=c.Session,n}return p(e,t),e.prototype.keyValuePairToString=function(){return"".concat(this.key,"=").concat(this.value)},e}(d),I=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.SessionId,n.type=c.Session,n}return p(e,t),e}(d),D=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.StreamType,n.type=c.Session,n}return p(e,t),e.prototype.keyValuePairToString=function(){return"".concat(this.key,"=").concat(this.value)},e}(d),E=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.Startup,n.type=c.Request,n}return p(e,t),e.prototype.keyValuePairToString=function(){return!0===this.value?"".concat(this.key):""},e}(d),q=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.TopBitrate,n.type=c.Object,n}return p(e,t),e}(d),V=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.CmcdVersion,n.type=c.Session,n}return p(e,t),e.prototype.keyValuePairToString=function(){return this.value===a.v1?"":"".concat(this.key,"=").concat(this.value)},e}(d)},498:function(t,e,n){n.r(e),n.d(e,{CmcdIntegration:function(){return u}});var r=n(247),i=function(){return i=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0){n.push(new r.oI(1e3*i.level));var u=i.level/(null===(e=this.player)||void 0===e?void 0:e.getPlaybackSpeed());n.push(new r.O5(1e3*u))}var o=this.player.getAvailableAudioQualities().reduce((function(t,e){return Math.max(t,e.bitrate)}),0)/1e3;if(o>0&&n.push(new r.Vq(o)),this.currentVideoQuality){var a=this.player.getAvailableSegments();for(var s in a)if(s.startsWith("video/")){var c=a[s][this.currentVideoQuality.id];n=n.concat(this.getNextObjectAndObjectDurationCmcdData(c,t.url))}}return n},t.prototype.getVideoSegmentRequestSpecificData=function(t){var e,n=[];if(this.currentVideoQuality&&this.currentVideoQuality.bandwidth&&n.push(new r.ZH(Math.round(this.currentVideoQuality.bandwidth/1e3))),this.lastMeasuredThroughputVideo&&n.push(new r.dg(this.lastMeasuredThroughputVideo)),!this.player)return n;var i=this.player.buffer.getLevel(this.player.exports.BufferType.ForwardDuration,this.player.exports.MediaType.Video);if(i.targetLevel>0){n.push(new r.oI(1e3*i.level));var u=i.level/(null===(e=this.player)||void 0===e?void 0:e.getPlaybackSpeed());n.push(new r.O5(1e3*u))}var o=this.player.getAvailableVideoQualities().reduce((function(t,e){return Math.max(t,e.bitrate)}),0)/1e3;if(o>0&&n.push(new r.Vq(o)),this.currentVideoQuality){var a=this.player.getAvailableSegments();for(var s in a)if(s.startsWith("video/")){var c=a[s][this.currentVideoQuality.id];n=n.concat(this.getNextObjectAndObjectDurationCmcdData(c,t.url))}}return n},t.prototype.getNextObjectAndObjectDurationCmcdData=function(t,e){var n=[],i=t.findIndex((function(t){return t.url===e}));if(i>-1){var u=t[i];if(Number.isNaN(u.duration)||n.push(new r.T8(1e3*Number(u.duration))),i+1 Date: Mon, 20 Mar 2023 21:40:38 +0100 Subject: [PATCH 22/83] Ensure everything is loaded before trying to set the player and CMCD integration up --- player/cmcd/js/script.js | 82 +++++++++++++++++++++------------------- 1 file changed, 43 insertions(+), 39 deletions(-) diff --git a/player/cmcd/js/script.js b/player/cmcd/js/script.js index 4177e3fe..dd60da38 100644 --- a/player/cmcd/js/script.js +++ b/player/cmcd/js/script.js @@ -1,45 +1,49 @@ -const playerConfig = { - key: '29ba4a30-8b5e-4336-a7dd-c94ff3b25f30', - analytics: { - key: '45adcf9b-8f7c-4e28-91c5-50ba3d442cd4', - videoId: 'cmcd' - }, - playback: { - muted: true, - autoplay: true, - } -}; +function setupPlayerWithCmcd() { + cmcdSessionId = uuidv4(); -const cmcdConfig = { - sessionId: uuidv4(), - contentId: '1111-111111-111111-11111', -}; + const playerConfig = { + key: '29ba4a30-8b5e-4336-a7dd-c94ff3b25f30', + analytics: { + key: '45adcf9b-8f7c-4e28-91c5-50ba3d442cd4', + videoId: 'cmcd' + }, + playback: { + muted: true, + autoplay: true, + } + }; -const cmcdPlugin = new window.bitmovin.player.integration.Cmcd.CmcdIntegration(cmcdConfig); -playerConfig.network = { - preprocessHttpRequest: cmcdPlugin.preprocessHttpRequest, - preprocessHttpResponse: cmcdPlugin.preprocessHttpResponse, -}; -playerConfig.adaptation = { - desktop: { - onVideoAdaptation: cmcdPlugin.onVideoAdaptation, - onAudioAdaptation: cmcdPlugin.onAudioAdaptation, - }, - mobile: { - onVideoAdaptation: cmcdPlugin.onVideoAdaptation, - onAudioAdaptation: cmcdPlugin.onAudioAdaptation, - }, -}; + const cmcdConfig = { + sessionId: cmcdSessionId, + contentId: '1111-111111-111111-11111', + }; -const source = { - hls: 'https://bitmovindemocmcd-a.akamaihd.net/content/MI201109210084_1/m3u8s-fmp4-rel/main.m3u8', -}; + const cmcdPlugin = new window.bitmovin.player.integration.Cmcd.CmcdIntegration(cmcdConfig); + playerConfig.network = { + preprocessHttpRequest: cmcdPlugin.preprocessHttpRequest, + preprocessHttpResponse: cmcdPlugin.preprocessHttpResponse, + }; + playerConfig.adaptation = { + desktop: { + onVideoAdaptation: cmcdPlugin.onVideoAdaptation, + onAudioAdaptation: cmcdPlugin.onAudioAdaptation, + }, + mobile: { + onVideoAdaptation: cmcdPlugin.onVideoAdaptation, + onAudioAdaptation: cmcdPlugin.onAudioAdaptation, + }, + }; -const playerContainer = document.getElementById('player-container'); -const player = new bitmovin.player.Player(playerContainer, playerConfig); + const playerContainer = document.getElementById('player-container'); + const player = new bitmovin.player.Player(playerContainer, playerConfig); + + cmcdPlugin.setPlayer(player); -cmcdPlugin.setPlayer(player); + player.load({ + hls: 'https://bitmovindemocmcd-a.akamaihd.net/content/MI201109210084_1/m3u8s-fmp4-rel/main.m3u8', + }); +} -$(document).ready(function () { - player.load(source); -}); +$(function() { + setupPlayerWithCmcd(); +}); \ No newline at end of file From 2572ee5fe4ea5cec6b851b180854d081b4c80d46 Mon Sep 17 00:00:00 2001 From: dweinber Date: Mon, 20 Mar 2023 21:41:51 +0100 Subject: [PATCH 23/83] Get list-object from S3 bucket to find the most recent log files --- player/cmcd/js/script.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/player/cmcd/js/script.js b/player/cmcd/js/script.js index dd60da38..c3c17e8e 100644 --- a/player/cmcd/js/script.js +++ b/player/cmcd/js/script.js @@ -44,6 +44,14 @@ function setupPlayerWithCmcd() { }); } +function getCmcdAndCdnLogFromS3() { + const newRequestTimestamp = new Date(); + + // See https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html + fetch('https://bitmovin-cmcd-demo.s3.amazonaws.com\?list-type\=2\&prefix\=akamai/ak') + .then(response => response.text()) +} + $(function() { setupPlayerWithCmcd(); }); \ No newline at end of file From da914c0861114ab4dd753556f910cfcd01d05b08 Mon Sep 17 00:00:00 2001 From: dweinber Date: Mon, 20 Mar 2023 21:45:18 +0100 Subject: [PATCH 24/83] Add x2js to make it more convenient to work with the XML data of the list-object call --- player/cmcd/index.html | 1 + player/cmcd/js/script.js | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/player/cmcd/index.html b/player/cmcd/index.html index bdd36d84..7783d723 100644 --- a/player/cmcd/index.html +++ b/player/cmcd/index.html @@ -1,6 +1,7 @@ +

diff --git a/player/cmcd/js/script.js b/player/cmcd/js/script.js index c3c17e8e..7448e86d 100644 --- a/player/cmcd/js/script.js +++ b/player/cmcd/js/script.js @@ -1,3 +1,8 @@ +const LOG_PULL_INTERVALL_SECONDS = 10 * 1000; + +let lastSuccessfulRetrieval = new Date(); +let cmcdSessionId; + function setupPlayerWithCmcd() { cmcdSessionId = uuidv4(); @@ -50,6 +55,14 @@ function getCmcdAndCdnLogFromS3() { // See https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html fetch('https://bitmovin-cmcd-demo.s3.amazonaws.com\?list-type\=2\&prefix\=akamai/ak') .then(response => response.text()) + .then(response => (new X2JS()).xml2js(response)) + .then(response => parseS3ObjectListingAndFetchDataStreamLogFiles(response, newRequestTimestamp)) +} + +function parseS3ObjectListingAndFetchDataStreamLogFiles(response, newRequestTimestamp) { + console.log(`Found ${response.ListBucketResult.KeyCount} of max ${response.ListBucketResult.MaxKeys} keys (isTruncated=${response.ListBucketResult.IsTruncated})`); + + const elements = response.ListBucketResult.Contents; } $(function() { From de88b4b1a01017c636f944dc85a6f2abfa0755a0 Mon Sep 17 00:00:00 2001 From: dweinber Date: Mon, 20 Mar 2023 21:47:14 +0100 Subject: [PATCH 25/83] Retrieve all log files which were added since the last request --- player/cmcd/js/script.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/player/cmcd/js/script.js b/player/cmcd/js/script.js index 7448e86d..69747ab6 100644 --- a/player/cmcd/js/script.js +++ b/player/cmcd/js/script.js @@ -63,6 +63,26 @@ function parseS3ObjectListingAndFetchDataStreamLogFiles(response, newRequestTime console.log(`Found ${response.ListBucketResult.KeyCount} of max ${response.ListBucketResult.MaxKeys} keys (isTruncated=${response.ListBucketResult.IsTruncated})`); const elements = response.ListBucketResult.Contents; + const relevantEntries = elements.filter(element => { + const timestamp = new Date(element.Key.split('-')[2] * 1000); + if (timestamp >= lastSuccessfulRetrieval) { + return true; + } + }); + + lastSuccessfulRetrieval = newRequestTimestamp; + + if (relevantEntries.length > 0) { + let fetchPromises = [] + relevantEntries.forEach(element => { + fetchPromises.push( + fetch('https://bitmovin-cmcd-demo.s3.amazonaws.com/' + element.Key) + .then(response => response.arrayBuffer()) + ); + }); + + return Promise.all(fetchPromises); + } } $(function() { From 012e795993a71f480b2764403b8aad9ed64e67af Mon Sep 17 00:00:00 2001 From: dweinber Date: Mon, 20 Mar 2023 21:49:02 +0100 Subject: [PATCH 26/83] Unzip and parse the log files and display them in the log area in the page --- player/cmcd/index.html | 1 + player/cmcd/js/script.js | 180 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 180 insertions(+), 1 deletion(-) diff --git a/player/cmcd/index.html b/player/cmcd/index.html index 7783d723..e3a7e2bf 100644 --- a/player/cmcd/index.html +++ b/player/cmcd/index.html @@ -2,6 +2,7 @@ +

diff --git a/player/cmcd/js/script.js b/player/cmcd/js/script.js index 69747ab6..0d158479 100644 --- a/player/cmcd/js/script.js +++ b/player/cmcd/js/script.js @@ -1,5 +1,41 @@ const LOG_PULL_INTERVALL_SECONDS = 10 * 1000; +const FIELD = { + TIMESTAMP: 4, + HTTP_STATUS: 6, + HTTP_VERSION: 7, + HOST: 8, + METHOD: 9, + PATH: 10, + PORT: 11, + MIME_TYPE: 14, + USER_AGENT: 15, + ENCRYPTION_VERSION: 16, + CMCD_DATA: 36, +}; +const DELIMITER = ' ' +const CMCD_KEYS = { + EncodedBitrate: 'br', + BufferLength: 'bl', + BufferStarvation: 'bs', + ContentId: 'cid', + ObjectDuration: 'd', + Deadline: 'dl', + MeasuredThroughput: 'mtp', + NextObjectRequest: 'nor', + NextRangeRequest: 'nrr', + ObjectType: 'ot', + PlaybackRate: 'pr', + RequestedMaximumThroughput: 'rtp', + StreamingFormat: 'sf', + SessionId: 'sid', + StreamType: 'st', + Startup: 'su', + TopBitrate: 'tb', + CmcdVersion: 'v', +} + +const logsToDisplay = []; let lastSuccessfulRetrieval = new Date(); let cmcdSessionId; @@ -49,6 +85,110 @@ function setupPlayerWithCmcd() { }); } +function log(data) { + const sorted = data.sort((a, b) => a.timestamp > b.timestamp); + + $('#logContent').html(''); + + sorted.forEach(line => { + $('

') + .append(line.cmcdLog) + .prependTo('#logContent'); + + $('

') + .append(line.timestamp.toISOString() + ': ') + .append(line.cdnLog) + .prependTo('#logContent'); + }) +} + +function beautifyCmcdHeaderData(data) { + const cmcdFields = data.replace('CMCD-HEADER:', '').split(','); + + const beautified = cmcdFields.map(cmcd => { + if (cmcd === CMCD_KEYS.Startup) { + return 'Startup Mode'; + } + if (cmcd.startsWith(`${CMCD_KEYS.ObjectType}=`)) { + const value = cmcd.split('=')[1]; + const type = + value === 'v' ? 'Video' : + value === 'a' ? 'Audio' : + value === 'm' ? 'Manifest' : value; + return `Object Type: ${type}`; + } + if (cmcd === CMCD_KEYS.BufferStarvation) { + return 'BUFFER EMPTY!'; + } + if (cmcd.startsWith(`${CMCD_KEYS.BufferLength}=`)) { + const value = cmcd.split('=')[1]; + return `Buffer Length: ${Number.parseFloat(value)/1000}s`; + } + if (cmcd.startsWith(`${CMCD_KEYS.EncodedBitrate}=`)) { + const value = cmcd.split('=')[1]; + return `Encoded Bitrate: ${value}`; + } + if (cmcd.startsWith(`${CMCD_KEYS.ContentId}=`)) { + const value = cmcd.split('=')[1]; + return `Content ID: ${value.replace(/%22/g, '')}`; + } + if (cmcd.startsWith(`${CMCD_KEYS.ObjectDuration}=`)) { + const value = cmcd.split('=')[1]; + return `Object Duration: ${Number.parseFloat(value)/1000}s`; + } + if (cmcd.startsWith(`${CMCD_KEYS.Deadline}=`)) { + const value = cmcd.split('=')[1]; + return `Deadline: ${Number.parseFloat(value)/1000}s`; + } + if (cmcd.startsWith(`${CMCD_KEYS.MeasuredThroughput}=`)) { + const value = cmcd.split('=')[1]; + return `Measured Throughput: ${value}`; + } + if (cmcd.startsWith(`${CMCD_KEYS.NextObjectRequest}=`)) { + const value = cmcd.split('=')[1]; + return `Next Object Request: ${value}`; + } + if (cmcd.startsWith(`${CMCD_KEYS.NextRangeRequest}=`)) { + const value = cmcd.split('=')[1]; + return `Next Range Request: ${value}`; + } + if (cmcd.startsWith(`${CMCD_KEYS.PlaybackRate}=`)) { + const value = cmcd.split('=')[1]; + return `Playback Rate: ${value}`; + } + if (cmcd.startsWith(`${CMCD_KEYS.RequestedMaximumThroughput}=`)) { + const value = cmcd.split('=')[1]; + return `Requested Maximum Throughput: ${value}`; + } + if (cmcd.startsWith(`${CMCD_KEYS.StreamingFormat}=`)) { + const value = cmcd.split('=')[1]; + const format = + value === 'h' ? 'HLS' : + value === 'd' ? 'DASH' : + value === 's' ? 'Smooth' : 'o'; + return `Streaming Format: ${format}`; + } + if (cmcd.startsWith(`${CMCD_KEYS.SessionId}=`)) { + const value = cmcd.split('=')[1]; + return `Session ID: ${value.replace(/%22/g, '')}`; + } + if (cmcd.startsWith(`${CMCD_KEYS.StreamType}=`)) { + const value = cmcd.split('=')[1]; + const type = value === 'v' ? 'VoD' : 'Live'; + return `Stream Type: ${type}`; + } + if (cmcd.startsWith(`${CMCD_KEYS.TopBitrate}=`)) { + const value = cmcd.split('=')[1]; + return `Top Bitrate: ${value}`; + } + // Version is usually omitted for version 1 + + return cmcd; + }); + + return beautified.filter(cmcd => !!cmcd).join(', '); +} + function getCmcdAndCdnLogFromS3() { const newRequestTimestamp = new Date(); @@ -57,6 +197,7 @@ function getCmcdAndCdnLogFromS3() { .then(response => response.text()) .then(response => (new X2JS()).xml2js(response)) .then(response => parseS3ObjectListingAndFetchDataStreamLogFiles(response, newRequestTimestamp)) + .then(responses => parseDataStreamLogFiles(responses)) } function parseS3ObjectListingAndFetchDataStreamLogFiles(response, newRequestTimestamp) { @@ -85,6 +226,43 @@ function parseS3ObjectListingAndFetchDataStreamLogFiles(response, newRequestTime } } +function parseDataStreamLogFiles(responses) { + if (!responses || responses.length < 1) { + return; + } + + let logs = ''; + responses.forEach(response => logs += gunzipLogFile(response)); + const allLogs = logs.split('\n'); + + const matchingLogs = allLogs.filter(line => line.includes(`sid=%22${cmcdSessionId}%22`)); + const noOrOtherSessionId = allLogs.filter(line => !line.includes(`sid=%22${cmcdSessionId}%22`)); + + console.log(`No session ID or not ${cmcdSessionId}, ignoring those:`); + console.log(noOrOtherSessionId); + + matchingLogs.forEach(logLine => logsToDisplay.push(convertLogLineToLoggingDataStructure(logLine))); + log(logsToDisplay); +} + +function gunzipLogFile(content) { + const decompressed = fflate.decompressSync(new Uint8Array(content)); + return String.fromCharCode.apply(null, decompressed); +} + +function convertLogLineToLoggingDataStructure(logLine) { + const data = logLine.split(' '); + return { + timestamp: new Date(Number.parseFloat(data[FIELD.TIMESTAMP]) * 1000), + cdnLog: data[FIELD.HTTP_STATUS] + DELIMITER + + data[FIELD.METHOD] + DELIMITER + + data[FIELD.HTTP_VERSION] + DELIMITER + + data[FIELD.HOST] + '/' + data[FIELD.PATH] + DELIMITER, + cmcdLog: beautifyCmcdHeaderData(data[FIELD.CMCD_DATA]), + } +} + $(function() { setupPlayerWithCmcd(); -}); \ No newline at end of file + setInterval(getCmcdAndCdnLogFromS3, LOG_PULL_INTERVALL_SECONDS); +}); From 3a339c3ece944a5f4efd87e2002874850d401241 Mon Sep 17 00:00:00 2001 From: Daniel Weinberger Date: Tue, 21 Mar 2023 08:28:04 +0100 Subject: [PATCH 27/83] Update player/cmcd/README.md Co-authored-by: Stefan Krainer --- player/cmcd/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/player/cmcd/README.md b/player/cmcd/README.md index 7b20fc1e..379c8c69 100644 --- a/player/cmcd/README.md +++ b/player/cmcd/README.md @@ -4,4 +4,6 @@ Send Common Media Client Data (CMCD) data from Player to CDN ### Tags - - To be defined \ No newline at end of file + - CMCD + - Common Media Client Data + - CDN Logging \ No newline at end of file From 55148d3b3a97ddce8741f18d30b3a6080092a4b9 Mon Sep 17 00:00:00 2001 From: Daniel Weinberger Date: Tue, 21 Mar 2023 08:29:04 +0100 Subject: [PATCH 28/83] Update player/cmcd/js/script.js Co-authored-by: Stefan Krainer --- player/cmcd/js/script.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/player/cmcd/js/script.js b/player/cmcd/js/script.js index 0d158479..98391eb0 100644 --- a/player/cmcd/js/script.js +++ b/player/cmcd/js/script.js @@ -186,7 +186,7 @@ function beautifyCmcdHeaderData(data) { return cmcd; }); - return beautified.filter(cmcd => !!cmcd).join(', '); + return beautified.filter(Boolean).join(', '); } function getCmcdAndCdnLogFromS3() { From 480ec4a2aec82d157268e24d9db926afc11ad770 Mon Sep 17 00:00:00 2001 From: Daniel Weinberger Date: Tue, 21 Mar 2023 08:29:58 +0100 Subject: [PATCH 29/83] Update player/cmcd/js/script.js Co-authored-by: Stefan Krainer --- player/cmcd/js/script.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/player/cmcd/js/script.js b/player/cmcd/js/script.js index 98391eb0..44974c1e 100644 --- a/player/cmcd/js/script.js +++ b/player/cmcd/js/script.js @@ -231,9 +231,7 @@ function parseDataStreamLogFiles(responses) { return; } - let logs = ''; - responses.forEach(response => logs += gunzipLogFile(response)); - const allLogs = logs.split('\n'); + const allLogs = responses.map(response => gunzipLogFile(response)).join('').split('\n); const matchingLogs = allLogs.filter(line => line.includes(`sid=%22${cmcdSessionId}%22`)); const noOrOtherSessionId = allLogs.filter(line => !line.includes(`sid=%22${cmcdSessionId}%22`)); From 06009875552f7df2a2c444fb5a06bc13e6c08fad Mon Sep 17 00:00:00 2001 From: Daniel Weinberger Date: Tue, 21 Mar 2023 08:37:42 +0100 Subject: [PATCH 30/83] Update player/cmcd/js/script.js Co-authored-by: Stefan Krainer --- player/cmcd/js/script.js | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/player/cmcd/js/script.js b/player/cmcd/js/script.js index 44974c1e..636f32ac 100644 --- a/player/cmcd/js/script.js +++ b/player/cmcd/js/script.js @@ -42,6 +42,12 @@ let cmcdSessionId; function setupPlayerWithCmcd() { cmcdSessionId = uuidv4(); + const cmcdConfig = { + sessionId: cmcdSessionId, + contentId: '1111-111111-111111-11111', + }; + const cmcdPlugin = new window.bitmovin.player.integration.Cmcd.CmcdIntegration(cmcdConfig); + const playerConfig = { key: '29ba4a30-8b5e-4336-a7dd-c94ff3b25f30', analytics: { @@ -51,28 +57,15 @@ function setupPlayerWithCmcd() { playback: { muted: true, autoplay: true, - } - }; - - const cmcdConfig = { - sessionId: cmcdSessionId, - contentId: '1111-111111-111111-11111', - }; - - const cmcdPlugin = new window.bitmovin.player.integration.Cmcd.CmcdIntegration(cmcdConfig); - playerConfig.network = { - preprocessHttpRequest: cmcdPlugin.preprocessHttpRequest, - preprocessHttpResponse: cmcdPlugin.preprocessHttpResponse, - }; - playerConfig.adaptation = { - desktop: { - onVideoAdaptation: cmcdPlugin.onVideoAdaptation, - onAudioAdaptation: cmcdPlugin.onAudioAdaptation, }, - mobile: { + network: { + preprocessHttpRequest: cmcdPlugin.preprocessHttpRequest, + preprocessHttpResponse: cmcdPlugin.preprocessHttpResponse, + }, + adaptation: { onVideoAdaptation: cmcdPlugin.onVideoAdaptation, onAudioAdaptation: cmcdPlugin.onAudioAdaptation, - }, + } }; const playerContainer = document.getElementById('player-container'); From ced87fda9ef5daf9511c2658bda918db51be5862 Mon Sep 17 00:00:00 2001 From: dweinber Date: Tue, 21 Mar 2023 08:52:15 +0100 Subject: [PATCH 31/83] Clean up title and metadata --- player/cmcd/info.json | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/player/cmcd/info.json b/player/cmcd/info.json index cc556092..e7a50a62 100644 --- a/player/cmcd/info.json +++ b/player/cmcd/info.json @@ -1,6 +1,6 @@ { "title": "CMCD Support", - "description": "Send Common Media Client Data (CMCD) data from Player to CDN (experimental)", + "description": "Send CMCD data from Player to CDN", "long_description": "To be defined.", "executable": { "executable": true, @@ -12,11 +12,13 @@ "files": [] }, "metadata":{ - "title":"Enable Common Media Client Data (CMCD) » Video Player | Bitmovin", + "title":"Enable CMCD » Video Player | Bitmovin", "description": "Send Common Media Client Data (CMCD) data from Player to CDN" }, "tags": [ "CMCD", - "Common Media Client Data" + "Common Media Client Data", + "CDN Logging", + "experimental" ] } \ No newline at end of file From bd76687bcfe520b53fb188cfed115dbc387bc609 Mon Sep 17 00:00:00 2001 From: dweinber Date: Tue, 21 Mar 2023 08:52:31 +0100 Subject: [PATCH 32/83] Fix syntax error/typo --- player/cmcd/js/script.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/player/cmcd/js/script.js b/player/cmcd/js/script.js index 636f32ac..fa2ab69b 100644 --- a/player/cmcd/js/script.js +++ b/player/cmcd/js/script.js @@ -224,7 +224,7 @@ function parseDataStreamLogFiles(responses) { return; } - const allLogs = responses.map(response => gunzipLogFile(response)).join('').split('\n); + const allLogs = responses.map(response => gunzipLogFile(response)).join('').split('\n'); const matchingLogs = allLogs.filter(line => line.includes(`sid=%22${cmcdSessionId}%22`)); const noOrOtherSessionId = allLogs.filter(line => !line.includes(`sid=%22${cmcdSessionId}%22`)); From 2b3d306d349ec4778d2af3a2d0a2743689f2858a Mon Sep 17 00:00:00 2001 From: dweinber Date: Tue, 21 Mar 2023 09:35:03 +0100 Subject: [PATCH 33/83] Add Akamai logo --- player/cmcd/css/style.css | 4 ++++ player/cmcd/index.html | 12 ++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/player/cmcd/css/style.css b/player/cmcd/css/style.css index 175abaf4..087738ae 100644 --- a/player/cmcd/css/style.css +++ b/player/cmcd/css/style.css @@ -34,4 +34,8 @@ .cmcd-log { color: blue; +} + +.description > .col-lg-9 { + padding-left: 0; } \ No newline at end of file diff --git a/player/cmcd/index.html b/player/cmcd/index.html index e3a7e2bf..09e1ffb2 100644 --- a/player/cmcd/index.html +++ b/player/cmcd/index.html @@ -4,10 +4,14 @@ -
-

- This demo showcases how Common Media Client Data (CMCD) can be sent by the Player to a CDN. -

+
+
+

This demo showcases how Common Media Client Data (CMCD) can be sent by the Player to a CDN.

+
+
+
+ +
From 2f6ccee371977dd0f46a56b7e01d854a8dd5fb1b Mon Sep 17 00:00:00 2001 From: dweinber Date: Tue, 21 Mar 2023 09:35:36 +0100 Subject: [PATCH 34/83] Avoid blank logs if we get a new log file without any relevant data inside --- player/cmcd/js/script.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/player/cmcd/js/script.js b/player/cmcd/js/script.js index fa2ab69b..c5c6dd91 100644 --- a/player/cmcd/js/script.js +++ b/player/cmcd/js/script.js @@ -79,6 +79,10 @@ function setupPlayerWithCmcd() { } function log(data) { + if (!data || data.length < 1) { + return; + } + const sorted = data.sort((a, b) => a.timestamp > b.timestamp); $('#logContent').html(''); From 74ac22763a3bdbc1aa6a796cd88fa6a8f887a801 Mon Sep 17 00:00:00 2001 From: dweinber Date: Tue, 21 Mar 2023 17:57:28 +0100 Subject: [PATCH 35/83] Add units and reduce decimals to 2 digits --- player/cmcd/js/script.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/player/cmcd/js/script.js b/player/cmcd/js/script.js index c5c6dd91..ac5f95ae 100644 --- a/player/cmcd/js/script.js +++ b/player/cmcd/js/script.js @@ -119,11 +119,11 @@ function beautifyCmcdHeaderData(data) { } if (cmcd.startsWith(`${CMCD_KEYS.BufferLength}=`)) { const value = cmcd.split('=')[1]; - return `Buffer Length: ${Number.parseFloat(value)/1000}s`; + return `Buffer Length: ${(Number.parseFloat(value)/1000).toFixed(2)}s`; } if (cmcd.startsWith(`${CMCD_KEYS.EncodedBitrate}=`)) { const value = cmcd.split('=')[1]; - return `Encoded Bitrate: ${value}`; + return `Encoded Bitrate: ${value}kbps`; } if (cmcd.startsWith(`${CMCD_KEYS.ContentId}=`)) { const value = cmcd.split('=')[1]; @@ -131,7 +131,7 @@ function beautifyCmcdHeaderData(data) { } if (cmcd.startsWith(`${CMCD_KEYS.ObjectDuration}=`)) { const value = cmcd.split('=')[1]; - return `Object Duration: ${Number.parseFloat(value)/1000}s`; + return `Object Duration: ${(Number.parseFloat(value)/1000).toFixed(2)}s`; } if (cmcd.startsWith(`${CMCD_KEYS.Deadline}=`)) { const value = cmcd.split('=')[1]; @@ -139,7 +139,7 @@ function beautifyCmcdHeaderData(data) { } if (cmcd.startsWith(`${CMCD_KEYS.MeasuredThroughput}=`)) { const value = cmcd.split('=')[1]; - return `Measured Throughput: ${value}`; + return `Measured Throughput: ${value}kbps`; } if (cmcd.startsWith(`${CMCD_KEYS.NextObjectRequest}=`)) { const value = cmcd.split('=')[1]; @@ -151,11 +151,11 @@ function beautifyCmcdHeaderData(data) { } if (cmcd.startsWith(`${CMCD_KEYS.PlaybackRate}=`)) { const value = cmcd.split('=')[1]; - return `Playback Rate: ${value}`; + return `Playback Rate: ${value}x`; } if (cmcd.startsWith(`${CMCD_KEYS.RequestedMaximumThroughput}=`)) { const value = cmcd.split('=')[1]; - return `Requested Maximum Throughput: ${value}`; + return `Requested Maximum Throughput: ${value}kbps`; } if (cmcd.startsWith(`${CMCD_KEYS.StreamingFormat}=`)) { const value = cmcd.split('=')[1]; @@ -176,7 +176,7 @@ function beautifyCmcdHeaderData(data) { } if (cmcd.startsWith(`${CMCD_KEYS.TopBitrate}=`)) { const value = cmcd.split('=')[1]; - return `Top Bitrate: ${value}`; + return `Top Bitrate: ${value}kbps`; } // Version is usually omitted for version 1 From c0f54397e15bc0b1a4636a689c42f4c571e21c4e Mon Sep 17 00:00:00 2001 From: dweinber Date: Wed, 22 Mar 2023 16:20:12 +0100 Subject: [PATCH 36/83] Move Akamai logo down to the CDN logs --- player/cmcd/css/style.css | 9 +++++---- player/cmcd/index.html | 12 +++--------- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/player/cmcd/css/style.css b/player/cmcd/css/style.css index 087738ae..5b7786b2 100644 --- a/player/cmcd/css/style.css +++ b/player/cmcd/css/style.css @@ -10,6 +10,11 @@ padding-bottom: 23px; } +.demo-event-box img.partner-logo { + float: right; + width: 100px; +} + #logContent { height: 300px; width: 100%; @@ -35,7 +40,3 @@ .cmcd-log { color: blue; } - -.description > .col-lg-9 { - padding-left: 0; -} \ No newline at end of file diff --git a/player/cmcd/index.html b/player/cmcd/index.html index 09e1ffb2..4020d57a 100644 --- a/player/cmcd/index.html +++ b/player/cmcd/index.html @@ -4,14 +4,8 @@ -
-
-

This demo showcases how Common Media Client Data (CMCD) can be sent by the Player to a CDN.

-
-
-
- -
+
+

This demo showcases how Common Media Client Data (CMCD) can be sent by the Player to a CDN.

@@ -30,6 +24,6 @@
-
CDN logs including CMCD from the Player (CMCD data highlighted in blue)
+
CDN logs including CMCD from the Player (CMCD data highlighted in blue)
It can take approximately 30 seconds to receiver CDN logs from Akamai, please bear with us
From f783aad6169c4f968cb644423d1a84ba44ac35f3 Mon Sep 17 00:00:00 2001 From: dweinber Date: Wed, 22 Mar 2023 17:07:18 +0100 Subject: [PATCH 37/83] Update cmcd-integration with fixed mtp, dl, bl values to be rounded according to spec --- player/cmcd/js/cmcd-integration.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/player/cmcd/js/cmcd-integration.js b/player/cmcd/js/cmcd-integration.js index 95a08605..7397d153 100644 --- a/player/cmcd/js/cmcd-integration.js +++ b/player/cmcd/js/cmcd-integration.js @@ -1 +1 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.BitmovinPlayerIntegrationCmcd=e():(t.bitmovin=t.bitmovin||{},t.bitmovin.player=t.bitmovin.player||{},t.bitmovin.player.integration=t.bitmovin.player.integration||{},t.bitmovin.player.integration.Cmcd=e())}(self,(function(){return function(){"use strict";var t={247:function(t,e,n){n.d(e,{Ao:function(){return E},Dh:function(){return s},I3:function(){return R},J3:function(){return M},M:function(){return h},O5:function(){return b},Ph:function(){return I},QU:function(){return u},RE:function(){return a},RF:function(){return A},RZ:function(){return y},T8:function(){return m},TS:function(){return k},Vf:function(){return x},Vq:function(){return q},ZH:function(){return v},be:function(){return T},dg:function(){return O},gu:function(){return D},mP:function(){return g},mc:function(){return i},nf:function(){return o},oI:function(){return S},x9:function(){return V}});var r,i,u,o,a,s,c,p=(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)});function l(t){return t.sort((function(t,e){return t.key.localeCompare(e.key)})).filter((function(t){return t.keyValuePairToString()}))}function h(t){var e=l(t),n=e.filter((function(t){return t.type===c.Request})).map((function(t){return t.keyValuePairToString()})).join(","),r=e.filter((function(t){return t.type===c.Object})).map((function(t){return t.keyValuePairToString()})).join(","),i=e.filter((function(t){return t.type===c.Status})).map((function(t){return t.keyValuePairToString()})).join(","),u=e.filter((function(t){return t.type===c.Session})).map((function(t){return t.keyValuePairToString()})).join(","),o={};return n&&(o[c.Request]=n),r&&(o[c.Object]=r),i&&(o[c.Status]=i),u&&(o[c.Session]=u),o}function y(t){var e=l(t).map((function(t){return t.keyValuePairToString()})).join(",");return"CMCD=".concat(encodeURI(e))}!function(t){t.AudioOnly="a",t.VideoOnly="v",t.MuxedVideoAudio="av",t.ManifestOrPlaylistTextFile="m",t.InitSegment="i",t.CaptionOrSubtitle="c",t.TimedTextTrack="tt",t.CryptographicKeyOrLicenseOrCertificate="k",t.Other="o"}(i||(i={})),function(t){t.MpegDash="d",t.Hls="h",t.Smooth="s",t.Other="o"}(u||(u={})),function(t){t.Vod="v",t.Live="l"}(o||(o={})),function(t){t[t.v1=1]="v1"}(a||(a={})),function(t){t.EncodedBitrate="br",t.BufferLength="bl",t.BufferStarvation="bs",t.ContentId="cid",t.ObjectDuration="d",t.Deadline="dl",t.MeasuredThroughput="mtp",t.NextObjectRequest="nor",t.NextRangeRequest="nrr",t.ObjectType="ot",t.PlaybackRate="pr",t.RequestedMaximumThroughput="rtp",t.StreamingFormat="sf",t.SessionId="sid",t.StreamType="st",t.Startup="su",t.TopBitrate="tb",t.CmcdVersion="v"}(s||(s={})),function(t){t.Object="CMCD-Object",t.Request="CMCD-Request",t.Status="CMCD-Status",t.Session="CMCD-Session"}(c||(c={}));var f,d=function(){function t(t){this.value=t}return t.prototype.keyValuePairToString=function(){return"string"==typeof this.value?"".concat(this.key,"=").concat((t=this.value,e=/"/g,n=/\\/g,'"'.concat(t.replace(n,"\\").replace(e,'\\"'),'"'))):"boolean"==typeof this.value&&!0===this.value?"".concat(this.key):"".concat(this.key,"=").concat(this.value);var t,e,n},t}(),v=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.EncodedBitrate,n.type=c.Object,n}return p(e,t),e}(d),S=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.BufferLength,n.type=c.Request,n}return p(e,t),e}(d),g=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.BufferStarvation,n.type=c.Status,n}return p(e,t),e}(d),T=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.ContentId,n.type=c.Session,n}return p(e,t),e}(d),m=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.ObjectDuration,n.type=c.Object,n}return p(e,t),e}(d),b=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.Deadline,n.type=c.Request,n}return p(e,t),e}(d),O=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.MeasuredThroughput,n.type=c.Request,n}return p(e,t),e}(d),R=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.NextObjectRequest,n.type=c.Request,n}return p(e,t),e}(d),k=(p((function(t){var e=f.call(this,t)||this;return e.key=s.NextRangeRequest,e.type=c.Request,e}),f=d),function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.ObjectType,n.type=c.Object,n}return p(e,t),e.prototype.keyValuePairToString=function(){return"".concat(this.key,"=").concat(this.value)},e}(d)),A=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.PlaybackRate,n.type=c.Session,n}return p(e,t),e.prototype.keyValuePairToString=function(){return 1===this.value?"":"".concat(this.key,"=").concat(this.value)},e}(d),M=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.RequestedMaximumThroughput,n.type=c.Status,n}return p(e,t),e}(d),x=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.StreamingFormat,n.type=c.Session,n}return p(e,t),e.prototype.keyValuePairToString=function(){return"".concat(this.key,"=").concat(this.value)},e}(d),I=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.SessionId,n.type=c.Session,n}return p(e,t),e}(d),D=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.StreamType,n.type=c.Session,n}return p(e,t),e.prototype.keyValuePairToString=function(){return"".concat(this.key,"=").concat(this.value)},e}(d),E=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.Startup,n.type=c.Request,n}return p(e,t),e.prototype.keyValuePairToString=function(){return!0===this.value?"".concat(this.key):""},e}(d),q=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.TopBitrate,n.type=c.Object,n}return p(e,t),e}(d),V=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.CmcdVersion,n.type=c.Session,n}return p(e,t),e.prototype.keyValuePairToString=function(){return this.value===a.v1?"":"".concat(this.key,"=").concat(this.value)},e}(d)},498:function(t,e,n){n.r(e),n.d(e,{CmcdIntegration:function(){return u}});var r=n(247),i=function(){return i=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0){n.push(new r.oI(1e3*i.level));var u=i.level/(null===(e=this.player)||void 0===e?void 0:e.getPlaybackSpeed());n.push(new r.O5(1e3*u))}var o=this.player.getAvailableAudioQualities().reduce((function(t,e){return Math.max(t,e.bitrate)}),0)/1e3;if(o>0&&n.push(new r.Vq(o)),this.currentVideoQuality){var a=this.player.getAvailableSegments();for(var s in a)if(s.startsWith("video/")){var c=a[s][this.currentVideoQuality.id];n=n.concat(this.getNextObjectAndObjectDurationCmcdData(c,t.url))}}return n},t.prototype.getVideoSegmentRequestSpecificData=function(t){var e,n=[];if(this.currentVideoQuality&&this.currentVideoQuality.bandwidth&&n.push(new r.ZH(Math.round(this.currentVideoQuality.bandwidth/1e3))),this.lastMeasuredThroughputVideo&&n.push(new r.dg(this.lastMeasuredThroughputVideo)),!this.player)return n;var i=this.player.buffer.getLevel(this.player.exports.BufferType.ForwardDuration,this.player.exports.MediaType.Video);if(i.targetLevel>0){n.push(new r.oI(1e3*i.level));var u=i.level/(null===(e=this.player)||void 0===e?void 0:e.getPlaybackSpeed());n.push(new r.O5(1e3*u))}var o=this.player.getAvailableVideoQualities().reduce((function(t,e){return Math.max(t,e.bitrate)}),0)/1e3;if(o>0&&n.push(new r.Vq(o)),this.currentVideoQuality){var a=this.player.getAvailableSegments();for(var s in a)if(s.startsWith("video/")){var c=a[s][this.currentVideoQuality.id];n=n.concat(this.getNextObjectAndObjectDurationCmcdData(c,t.url))}}return n},t.prototype.getNextObjectAndObjectDurationCmcdData=function(t,e){var n=[],i=t.findIndex((function(t){return t.url===e}));if(i>-1){var u=t[i];if(Number.isNaN(u.duration)||n.push(new r.T8(1e3*Number(u.duration))),i+10){n.push(new r.oI(1e3*i.level));var u=i.level/(null===(e=this.player)||void 0===e?void 0:e.getPlaybackSpeed());n.push(new r.O5(1e3*u))}var o=this.player.getAvailableAudioQualities().reduce((function(t,e){return Math.max(t,e.bitrate)}),0)/1e3;if(o>0&&n.push(new r.Vq(o)),this.currentVideoQuality){var a=this.player.getAvailableSegments();for(var s in a)if(s.startsWith("video/")){var c=a[s][this.currentVideoQuality.id];n=n.concat(this.getNextObjectAndObjectDurationCmcdData(c,t.url))}}return n},t.prototype.getVideoSegmentRequestSpecificData=function(t){var e,n=[];if(this.currentVideoQuality&&this.currentVideoQuality.bandwidth&&n.push(new r.ZH(Math.round(this.currentVideoQuality.bandwidth/1e3))),this.lastMeasuredThroughputVideo&&n.push(new r.dg(this.lastMeasuredThroughputVideo)),!this.player)return n;var i=this.player.buffer.getLevel(this.player.exports.BufferType.ForwardDuration,this.player.exports.MediaType.Video);if(i.targetLevel>0){n.push(new r.oI(1e3*i.level));var u=i.level/(null===(e=this.player)||void 0===e?void 0:e.getPlaybackSpeed());n.push(new r.O5(1e3*u))}var o=this.player.getAvailableVideoQualities().reduce((function(t,e){return Math.max(t,e.bitrate)}),0)/1e3;if(o>0&&n.push(new r.Vq(o)),this.currentVideoQuality){var a=this.player.getAvailableSegments();for(var s in a)if(s.startsWith("video/")){var c=a[s][this.currentVideoQuality.id];n=n.concat(this.getNextObjectAndObjectDurationCmcdData(c,t.url))}}return n},t.prototype.getNextObjectAndObjectDurationCmcdData=function(t,e){var n=[],i=t.findIndex((function(t){return t.url===e}));if(i>-1){var u=t[i];if(Number.isNaN(u.duration)||n.push(new r.T8(1e3*Number(u.duration))),i+1 Date: Thu, 23 Mar 2023 10:56:33 +0100 Subject: [PATCH 38/83] Adapt code to changed log format (was space-separate lines, now JSON lines) --- player/cmcd/js/script.js | 38 +++++++++++++++----------------------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/player/cmcd/js/script.js b/player/cmcd/js/script.js index ac5f95ae..54ae1152 100644 --- a/player/cmcd/js/script.js +++ b/player/cmcd/js/script.js @@ -1,18 +1,5 @@ const LOG_PULL_INTERVALL_SECONDS = 10 * 1000; -const FIELD = { - TIMESTAMP: 4, - HTTP_STATUS: 6, - HTTP_VERSION: 7, - HOST: 8, - METHOD: 9, - PATH: 10, - PORT: 11, - MIME_TYPE: 14, - USER_AGENT: 15, - ENCRYPTION_VERSION: 16, - CMCD_DATA: 36, -}; const DELIMITER = ' ' const CMCD_KEYS = { EncodedBitrate: 'br', @@ -228,10 +215,15 @@ function parseDataStreamLogFiles(responses) { return; } - const allLogs = responses.map(response => gunzipLogFile(response)).join('').split('\n'); + const allLogs = responses + .map(response => gunzipLogFile(response)) + .join('') + .trim() + .split('\n') + .map(line => JSON.parse(line)); - const matchingLogs = allLogs.filter(line => line.includes(`sid=%22${cmcdSessionId}%22`)); - const noOrOtherSessionId = allLogs.filter(line => !line.includes(`sid=%22${cmcdSessionId}%22`)); + const matchingLogs = allLogs.filter(log => log.customField.includes(`sid=%22${cmcdSessionId}%22`)); + const noOrOtherSessionId = allLogs.filter(log => !log.customField.includes(`sid=%22${cmcdSessionId}%22`)); console.log(`No session ID or not ${cmcdSessionId}, ignoring those:`); console.log(noOrOtherSessionId); @@ -246,14 +238,14 @@ function gunzipLogFile(content) { } function convertLogLineToLoggingDataStructure(logLine) { - const data = logLine.split(' '); return { - timestamp: new Date(Number.parseFloat(data[FIELD.TIMESTAMP]) * 1000), - cdnLog: data[FIELD.HTTP_STATUS] + DELIMITER + - data[FIELD.METHOD] + DELIMITER + - data[FIELD.HTTP_VERSION] + DELIMITER + - data[FIELD.HOST] + '/' + data[FIELD.PATH] + DELIMITER, - cmcdLog: beautifyCmcdHeaderData(data[FIELD.CMCD_DATA]), + timestamp: new Date(Number.parseFloat(logLine.reqTimeSec) * 1000), + cdnLog: logLine.statusCode + DELIMITER + + logLine.reqMethod + DELIMITER + + logLine.proto + DELIMITER + + logLine.reqHost + '/' + logLine.reqPath + DELIMITER + + (parseInt(logLine.cacheStatus) ? 'Cache HIT' : 'Cache MISS'), + cmcdLog: beautifyCmcdHeaderData(logLine.customField), } } From 809efa4206836f827da99744ef545047583aec7e Mon Sep 17 00:00:00 2001 From: dweinber Date: Thu, 23 Mar 2023 10:56:51 +0100 Subject: [PATCH 39/83] Shorten pull intervall to 5 seconds --- player/cmcd/js/script.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/player/cmcd/js/script.js b/player/cmcd/js/script.js index 54ae1152..c240955f 100644 --- a/player/cmcd/js/script.js +++ b/player/cmcd/js/script.js @@ -1,4 +1,4 @@ -const LOG_PULL_INTERVALL_SECONDS = 10 * 1000; +const LOG_PULL_INTERVALL_SECONDS = 5 * 1000; const DELIMITER = ' ' const CMCD_KEYS = { From 8e1dcc017a04af138e9ed928c5716681eebd3fa1 Mon Sep 17 00:00:00 2001 From: dweinber Date: Thu, 23 Mar 2023 11:09:50 +0100 Subject: [PATCH 40/83] Fix typo --- player/cmcd/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/player/cmcd/index.html b/player/cmcd/index.html index 4020d57a..9cb74fbd 100644 --- a/player/cmcd/index.html +++ b/player/cmcd/index.html @@ -25,5 +25,5 @@
CDN logs including CMCD from the Player (CMCD data highlighted in blue)
-
It can take approximately 30 seconds to receiver CDN logs from Akamai, please bear with us
+
It can take approximately 30 seconds to receive CDN logs from Akamai, please bear with us
From 8a9a4bb9867b80a5be18a53f5da16055c2756a84 Mon Sep 17 00:00:00 2001 From: dweinber Date: Thu, 23 Mar 2023 13:21:21 +0100 Subject: [PATCH 41/83] Use analytics impression ID as CMCD Session ID if possible --- player/cmcd/js/cmcd-integration.js | 2 +- player/cmcd/js/script.js | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/player/cmcd/js/cmcd-integration.js b/player/cmcd/js/cmcd-integration.js index 7397d153..9b131ecf 100644 --- a/player/cmcd/js/cmcd-integration.js +++ b/player/cmcd/js/cmcd-integration.js @@ -1 +1 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.BitmovinPlayerIntegrationCmcd=e():(t.bitmovin=t.bitmovin||{},t.bitmovin.player=t.bitmovin.player||{},t.bitmovin.player.integration=t.bitmovin.player.integration||{},t.bitmovin.player.integration.Cmcd=e())}(self,(function(){return function(){"use strict";var t={247:function(t,e,n){n.d(e,{Ao:function(){return E},Dh:function(){return s},I3:function(){return R},J3:function(){return M},M:function(){return h},O5:function(){return b},Ph:function(){return I},QU:function(){return u},RE:function(){return a},RF:function(){return A},RZ:function(){return y},T8:function(){return m},TS:function(){return k},Vf:function(){return x},Vq:function(){return q},ZH:function(){return v},be:function(){return T},dg:function(){return O},gu:function(){return D},mP:function(){return g},mc:function(){return i},nf:function(){return o},oI:function(){return S},x9:function(){return V}});var r,i,u,o,a,s,c,p=(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)});function l(t){return t.sort((function(t,e){return t.key.localeCompare(e.key)})).filter((function(t){return t.keyValuePairToString()}))}function h(t){var e=l(t),n=e.filter((function(t){return t.type===c.Request})).map((function(t){return t.keyValuePairToString()})).join(","),r=e.filter((function(t){return t.type===c.Object})).map((function(t){return t.keyValuePairToString()})).join(","),i=e.filter((function(t){return t.type===c.Status})).map((function(t){return t.keyValuePairToString()})).join(","),u=e.filter((function(t){return t.type===c.Session})).map((function(t){return t.keyValuePairToString()})).join(","),o={};return n&&(o[c.Request]=n),r&&(o[c.Object]=r),i&&(o[c.Status]=i),u&&(o[c.Session]=u),o}function y(t){var e=l(t).map((function(t){return t.keyValuePairToString()})).join(",");return"CMCD=".concat(encodeURI(e))}!function(t){t.AudioOnly="a",t.VideoOnly="v",t.MuxedVideoAudio="av",t.ManifestOrPlaylistTextFile="m",t.InitSegment="i",t.CaptionOrSubtitle="c",t.TimedTextTrack="tt",t.CryptographicKeyOrLicenseOrCertificate="k",t.Other="o"}(i||(i={})),function(t){t.MpegDash="d",t.Hls="h",t.Smooth="s",t.Other="o"}(u||(u={})),function(t){t.Vod="v",t.Live="l"}(o||(o={})),function(t){t[t.v1=1]="v1"}(a||(a={})),function(t){t.EncodedBitrate="br",t.BufferLength="bl",t.BufferStarvation="bs",t.ContentId="cid",t.ObjectDuration="d",t.Deadline="dl",t.MeasuredThroughput="mtp",t.NextObjectRequest="nor",t.NextRangeRequest="nrr",t.ObjectType="ot",t.PlaybackRate="pr",t.RequestedMaximumThroughput="rtp",t.StreamingFormat="sf",t.SessionId="sid",t.StreamType="st",t.Startup="su",t.TopBitrate="tb",t.CmcdVersion="v"}(s||(s={})),function(t){t.Object="CMCD-Object",t.Request="CMCD-Request",t.Status="CMCD-Status",t.Session="CMCD-Session"}(c||(c={}));var f,d=function(){function t(t){this.value=t}return t.prototype.keyValuePairToString=function(){return"string"==typeof this.value?"".concat(this.key,"=").concat((t=this.value,e=/"/g,n=/\\/g,'"'.concat(t.replace(n,"\\").replace(e,'\\"'),'"'))):"boolean"==typeof this.value&&!0===this.value?"".concat(this.key):"".concat(this.key,"=").concat(this.value);var t,e,n},t}(),v=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.EncodedBitrate,n.type=c.Object,n}return p(e,t),e}(d),S=function(t){function e(e){var n=t.call(this,100*Math.round(e/100))||this;return n.key=s.BufferLength,n.type=c.Request,n}return p(e,t),e}(d),g=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.BufferStarvation,n.type=c.Status,n}return p(e,t),e}(d),T=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.ContentId,n.type=c.Session,n}return p(e,t),e}(d),m=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.ObjectDuration,n.type=c.Object,n}return p(e,t),e}(d),b=function(t){function e(e){var n=t.call(this,100*Math.round(e/100))||this;return n.key=s.Deadline,n.type=c.Request,n}return p(e,t),e}(d),O=function(t){function e(e){var n=t.call(this,100*Math.round(e/100))||this;return n.key=s.MeasuredThroughput,n.type=c.Request,n}return p(e,t),e}(d),R=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.NextObjectRequest,n.type=c.Request,n}return p(e,t),e}(d),k=(p((function(t){var e=f.call(this,t)||this;return e.key=s.NextRangeRequest,e.type=c.Request,e}),f=d),function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.ObjectType,n.type=c.Object,n}return p(e,t),e.prototype.keyValuePairToString=function(){return"".concat(this.key,"=").concat(this.value)},e}(d)),A=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.PlaybackRate,n.type=c.Session,n}return p(e,t),e.prototype.keyValuePairToString=function(){return 1===this.value?"":"".concat(this.key,"=").concat(this.value)},e}(d),M=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.RequestedMaximumThroughput,n.type=c.Status,n}return p(e,t),e}(d),x=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.StreamingFormat,n.type=c.Session,n}return p(e,t),e.prototype.keyValuePairToString=function(){return"".concat(this.key,"=").concat(this.value)},e}(d),I=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.SessionId,n.type=c.Session,n}return p(e,t),e}(d),D=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.StreamType,n.type=c.Session,n}return p(e,t),e.prototype.keyValuePairToString=function(){return"".concat(this.key,"=").concat(this.value)},e}(d),E=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.Startup,n.type=c.Request,n}return p(e,t),e.prototype.keyValuePairToString=function(){return!0===this.value?"".concat(this.key):""},e}(d),q=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.TopBitrate,n.type=c.Object,n}return p(e,t),e}(d),V=function(t){function e(e){var n=t.call(this,e)||this;return n.key=s.CmcdVersion,n.type=c.Session,n}return p(e,t),e.prototype.keyValuePairToString=function(){return this.value===a.v1?"":"".concat(this.key,"=").concat(this.value)},e}(d)},498:function(t,e,n){n.r(e),n.d(e,{CmcdIntegration:function(){return u}});var r=n(247),i=function(){return i=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0){n.push(new r.oI(1e3*i.level));var u=i.level/(null===(e=this.player)||void 0===e?void 0:e.getPlaybackSpeed());n.push(new r.O5(1e3*u))}var o=this.player.getAvailableAudioQualities().reduce((function(t,e){return Math.max(t,e.bitrate)}),0)/1e3;if(o>0&&n.push(new r.Vq(o)),this.currentVideoQuality){var a=this.player.getAvailableSegments();for(var s in a)if(s.startsWith("video/")){var c=a[s][this.currentVideoQuality.id];n=n.concat(this.getNextObjectAndObjectDurationCmcdData(c,t.url))}}return n},t.prototype.getVideoSegmentRequestSpecificData=function(t){var e,n=[];if(this.currentVideoQuality&&this.currentVideoQuality.bandwidth&&n.push(new r.ZH(Math.round(this.currentVideoQuality.bandwidth/1e3))),this.lastMeasuredThroughputVideo&&n.push(new r.dg(this.lastMeasuredThroughputVideo)),!this.player)return n;var i=this.player.buffer.getLevel(this.player.exports.BufferType.ForwardDuration,this.player.exports.MediaType.Video);if(i.targetLevel>0){n.push(new r.oI(1e3*i.level));var u=i.level/(null===(e=this.player)||void 0===e?void 0:e.getPlaybackSpeed());n.push(new r.O5(1e3*u))}var o=this.player.getAvailableVideoQualities().reduce((function(t,e){return Math.max(t,e.bitrate)}),0)/1e3;if(o>0&&n.push(new r.Vq(o)),this.currentVideoQuality){var a=this.player.getAvailableSegments();for(var s in a)if(s.startsWith("video/")){var c=a[s][this.currentVideoQuality.id];n=n.concat(this.getNextObjectAndObjectDurationCmcdData(c,t.url))}}return n},t.prototype.getNextObjectAndObjectDurationCmcdData=function(t,e){var n=[],i=t.findIndex((function(t){return t.url===e}));if(i>-1){var u=t[i];if(Number.isNaN(u.duration)||n.push(new r.T8(1e3*Number(u.duration))),i+10){n.push(new r.oI(1e3*i.level));var u=i.level/(null===(e=this.player)||void 0===e?void 0:e.getPlaybackSpeed());n.push(new r.O5(1e3*u))}var o=this.player.getAvailableAudioQualities().reduce((function(t,e){return Math.max(t,e.bitrate)}),0)/1e3;if(o>0&&n.push(new r.Vq(o)),this.currentVideoQuality){var a=this.player.getAvailableSegments();for(var s in a)if(s.startsWith("video/")){var c=a[s][this.currentVideoQuality.id];n=n.concat(this.getNextObjectAndObjectDurationCmcdData(c,t.url))}}return n},t.prototype.getVideoSegmentRequestSpecificData=function(t){var e,n=[];if(this.currentVideoQuality&&this.currentVideoQuality.bandwidth&&n.push(new r.ZH(Math.round(this.currentVideoQuality.bandwidth/1e3))),this.lastMeasuredThroughputVideo&&n.push(new r.dg(this.lastMeasuredThroughputVideo)),!this.player)return n;var i=this.player.buffer.getLevel(this.player.exports.BufferType.ForwardDuration,this.player.exports.MediaType.Video);if(i.targetLevel>0){n.push(new r.oI(1e3*i.level));var u=i.level/(null===(e=this.player)||void 0===e?void 0:e.getPlaybackSpeed());n.push(new r.O5(1e3*u))}var o=this.player.getAvailableVideoQualities().reduce((function(t,e){return Math.max(t,e.bitrate)}),0)/1e3;if(o>0&&n.push(new r.Vq(o)),this.currentVideoQuality){var a=this.player.getAvailableSegments();for(var s in a)if(s.startsWith("video/")){var c=a[s][this.currentVideoQuality.id];n=n.concat(this.getNextObjectAndObjectDurationCmcdData(c,t.url))}}return n},t.prototype.getNextObjectAndObjectDurationCmcdData=function(t,e){var n=[],i=t.findIndex((function(t){return t.url===e}));if(i>-1){var u=t[i];if(Number.isNaN(u.duration)||n.push(new r.T8(1e3*Number(u.duration))),i+1 Date: Thu, 23 Mar 2023 13:21:55 +0100 Subject: [PATCH 42/83] Rename variable name --- player/cmcd/js/script.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/player/cmcd/js/script.js b/player/cmcd/js/script.js index 1f237ddc..8fc72a93 100644 --- a/player/cmcd/js/script.js +++ b/player/cmcd/js/script.js @@ -33,7 +33,7 @@ function setupPlayerWithCmcd() { sessionId: cmcdSessionId, contentId: '1111-111111-111111-11111', }; - const cmcdPlugin = new window.bitmovin.player.integration.Cmcd.CmcdIntegration(cmcdConfig); + const cmcdIntegration = new window.bitmovin.player.integration.Cmcd.CmcdIntegration(cmcdConfig); const playerConfig = { key: '29ba4a30-8b5e-4336-a7dd-c94ff3b25f30', @@ -46,12 +46,12 @@ function setupPlayerWithCmcd() { autoplay: true, }, network: { - preprocessHttpRequest: cmcdPlugin.preprocessHttpRequest, - preprocessHttpResponse: cmcdPlugin.preprocessHttpResponse, + preprocessHttpRequest: cmcdIntegration.preprocessHttpRequest, + preprocessHttpResponse: cmcdIntegration.preprocessHttpResponse, }, adaptation: { - onVideoAdaptation: cmcdPlugin.onVideoAdaptation, - onAudioAdaptation: cmcdPlugin.onAudioAdaptation, + onVideoAdaptation: cmcdIntegration.onVideoAdaptation, + onAudioAdaptation: cmcdIntegration.onAudioAdaptation, } }; @@ -62,12 +62,12 @@ function setupPlayerWithCmcd() { const analyticsImpressionId = player.analytics.getCurrentImpressionId(); if (analyticsImpressionId) { cmcdSessionId = analyticsImpressionId; - cmcdPlugin.setSessionId(cmcdSessionId); + cmcdIntegration.setSessionId(cmcdSessionId); console.log(`Updated CMCD session ID to match Analytics Impression ID ${cmcdSessionId}`); } } - cmcdPlugin.setPlayer(player); + cmcdIntegration.setPlayer(player); player.load({ hls: 'https://bitmovindemocmcd-a.akamaihd.net/content/MI201109210084_1/m3u8s-fmp4-rel/main.m3u8', From ee6da3d29c4e5eb1e9d8c4c5e68f2f4ebc4d3846 Mon Sep 17 00:00:00 2001 From: dweinber Date: Thu, 23 Mar 2023 13:41:06 +0100 Subject: [PATCH 43/83] Add bullet point for common Session ID --- player/cmcd/index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/player/cmcd/index.html b/player/cmcd/index.html index 9cb74fbd..9abf9a5a 100644 --- a/player/cmcd/index.html +++ b/player/cmcd/index.html @@ -19,6 +19,7 @@
  • Combine CDN and Player logs to improve operational monitoring
  • Faster troubleshooting by seeing Player sessions in CDN logs
  • Optimize performance through pre-fetching and measure impact through Analytics
  • +
  • Easily find logs for specific sessions using common Analytics Session ID
  • From 5ef7ab43093376b95a43480be2e0da07579e9ea9 Mon Sep 17 00:00:00 2001 From: dweinber Date: Fri, 24 Mar 2023 09:28:08 +0100 Subject: [PATCH 44/83] Switch to queryString mode for CMCD data per Akamai's recommendation --- player/cmcd/js/script.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/player/cmcd/js/script.js b/player/cmcd/js/script.js index 8fc72a93..d32e9279 100644 --- a/player/cmcd/js/script.js +++ b/player/cmcd/js/script.js @@ -30,6 +30,7 @@ function setupPlayerWithCmcd() { cmcdSessionId = uuidv4(); const cmcdConfig = { + useQueryArgs: true, sessionId: cmcdSessionId, contentId: '1111-111111-111111-11111', }; @@ -96,7 +97,7 @@ function log(data) { } function beautifyCmcdHeaderData(data) { - const cmcdFields = data.replace('CMCD-HEADER:', '').split(','); + const cmcdFields = data.replace('CMCD-HEADER:', '').replace('CMCD-QST:', '').split(','); const beautified = cmcdFields.map(cmcd => { if (cmcd === CMCD_KEYS.Startup) { From f218df870f5e7f5137cff496ba4b604b98da6505 Mon Sep 17 00:00:00 2001 From: dweinber Date: Thu, 30 Mar 2023 15:57:13 +0200 Subject: [PATCH 45/83] Update texts on the demo page --- player/cmcd/index.html | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/player/cmcd/index.html b/player/cmcd/index.html index 9abf9a5a..a7fca9e4 100644 --- a/player/cmcd/index.html +++ b/player/cmcd/index.html @@ -16,10 +16,12 @@
      -
    • Combine CDN and Player logs to improve operational monitoring
    • -
    • Faster troubleshooting by seeing Player sessions in CDN logs
    • -
    • Optimize performance through pre-fetching and measure impact through Analytics
    • -
    • Easily find logs for specific sessions using common Analytics Session ID
    • +
    • Troubleshoot errors and find root causes faster. CMCD makes Player sessions visible in CDN logs so you can trace error sessions through the Player and CDN to find the root cause. Faster issue resolution reduces the cost of streaming errors for your business.
    • +
        +
      • Add Bitmovin Analytics to turbocharge your customer support. Pinpoint error sessions rapidly and use the common Analytics Session ID with CMCD to trace the session through your infrastructure, from Analytics to Player to CDN.
      • +
      +
    • Combine Player and CDN logs with common session & content identifiers. Improve your operational monitoring by giving a clearer view of content requests from Player and how those are handled by the CDN.
    • +
    • Improve quality of experience and reduce rebuffering by enabling pre-fetching. Through CMCD the CDN is aware of the Player’s current state and the content it most likely needs next, this allows the CDN to prepare and deliver data the Player needs faster, reducing the time your viewers are waiting.
    From b0dd8778d208b546017b3c2e54cda895c079b377 Mon Sep 17 00:00:00 2001 From: James Varndell <78730971+jamesbitmovin@users.noreply.github.com> Date: Thu, 30 Mar 2023 16:03:47 +0100 Subject: [PATCH 46/83] Update index.html Highlighted some text in bold --- player/cmcd/index.html | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/player/cmcd/index.html b/player/cmcd/index.html index a7fca9e4..aa175312 100644 --- a/player/cmcd/index.html +++ b/player/cmcd/index.html @@ -16,12 +16,20 @@
      -
    • Troubleshoot errors and find root causes faster. CMCD makes Player sessions visible in CDN logs so you can trace error sessions through the Player and CDN to find the root cause. Faster issue resolution reduces the cost of streaming errors for your business.
    • +
    • + Troubleshoot errors and find root causes faster. CMCD makes Player sessions visible in CDN logs so you can trace error sessions through the Player and CDN to find the root cause. Faster issue resolution reduces the cost of streaming errors for your business. +
      • -
      • Add Bitmovin Analytics to turbocharge your customer support. Pinpoint error sessions rapidly and use the common Analytics Session ID with CMCD to trace the session through your infrastructure, from Analytics to Player to CDN.
      • +
      • + Add Bitmovin Analytics to turbocharge your customer support. Pinpoint error sessions rapidly and use the common Analytics Session ID with CMCD to trace the session through your infrastructure, from Analytics to Player to CDN. +
      -
    • Combine Player and CDN logs with common session & content identifiers. Improve your operational monitoring by giving a clearer view of content requests from Player and how those are handled by the CDN.
    • -
    • Improve quality of experience and reduce rebuffering by enabling pre-fetching. Through CMCD the CDN is aware of the Player’s current state and the content it most likely needs next, this allows the CDN to prepare and deliver data the Player needs faster, reducing the time your viewers are waiting.
    • +
    • + Combine Player and CDN logs with common session & content identifiers. Improve your operational monitoring by giving a clearer view of content requests from Player and how those are handled by the CDN. +
    • +
    • + Improve quality of experience and reduce rebuffering by enabling pre-fetching. Through CMCD the CDN is aware of the Player’s current state and the content it most likely needs next, this allows the CDN to prepare and deliver data the Player needs faster, reducing the time your viewers are waiting. +
    From 6e58843e3b924a027bb65c57aef93d5bec2085ca Mon Sep 17 00:00:00 2001 From: dweinber Date: Fri, 31 Mar 2023 09:45:35 +0200 Subject: [PATCH 47/83] Increase font size for description slightly --- player/cmcd/css/style.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/player/cmcd/css/style.css b/player/cmcd/css/style.css index 5b7786b2..190e84fd 100644 --- a/player/cmcd/css/style.css +++ b/player/cmcd/css/style.css @@ -1,3 +1,7 @@ +span, b { + font-size: medium; +} + .demo-event-box { padding: 23px; border: solid 1px #CBE0ED; From aa1c948bb865dd6fc007b17e81ac607a15ce878b Mon Sep 17 00:00:00 2001 From: dweinber Date: Thu, 6 Apr 2023 17:25:45 +0200 Subject: [PATCH 48/83] Add prefetch diagram --- player/cmcd/index.html | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/player/cmcd/index.html b/player/cmcd/index.html index aa175312..54fd686a 100644 --- a/player/cmcd/index.html +++ b/player/cmcd/index.html @@ -34,7 +34,16 @@
    -
    -
    CDN logs including CMCD from the Player (CMCD data highlighted in blue)
    -
    It can take approximately 30 seconds to receive CDN logs from Akamai, please bear with us
    +
    +
    +
    CDN logs including CMCD from the Player (CMCD data highlighted in blue)
    +
    It can take approximately 30 seconds to receive CDN logs from Akamai, please bear with us
    +
    +
    + + + +
    From 49ea515ecfcf73162934a0c7ff551feaaf85f9d9 Mon Sep 17 00:00:00 2001 From: dweinber Date: Thu, 6 Apr 2023 17:28:13 +0200 Subject: [PATCH 49/83] Fix path to image --- player/cmcd/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/player/cmcd/index.html b/player/cmcd/index.html index 54fd686a..65d72fe6 100644 --- a/player/cmcd/index.html +++ b/player/cmcd/index.html @@ -40,10 +40,10 @@
    It can take approximately 30 seconds to receive CDN logs from Akamai, please bear with us
    From eaa071dc2ce026fc9c7abd36fc83fb3f74d94930 Mon Sep 17 00:00:00 2001 From: James Varndell Date: Thu, 6 Apr 2023 16:49:37 +0100 Subject: [PATCH 50/83] Added pre-fetching text & moved Akamai logo --- player/cmcd/css/style.css | 10 ++++++++-- player/cmcd/index.html | 4 +++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/player/cmcd/css/style.css b/player/cmcd/css/style.css index 190e84fd..8ca846c1 100644 --- a/player/cmcd/css/style.css +++ b/player/cmcd/css/style.css @@ -14,9 +14,15 @@ span, b { padding-bottom: 23px; } -.demo-event-box img.partner-logo { +.cmcd-prefetch-diagram > div { + font-size: 20px; + font-weight: 500; + padding-top: 23px; +} + +.cmcd-prefetch-diagram img.partner-logo { float: right; - width: 100px; + width: 130px; } #logContent { diff --git a/player/cmcd/index.html b/player/cmcd/index.html index 65d72fe6..2d53eeb6 100644 --- a/player/cmcd/index.html +++ b/player/cmcd/index.html @@ -36,10 +36,12 @@
    -
    CDN logs including CMCD from the Player (CMCD data highlighted in blue)
    +
    CDN logs including CMCD from the Player (CMCD data highlighted in blue)
    It can take approximately 30 seconds to receive CDN logs from Akamai, please bear with us
    -
    Intelligent pre-fetching
    +
    Intelligent pre-fetching
    From 5db8a389f213853cfabcaf20b36226d371a3bf02 Mon Sep 17 00:00:00 2001 From: Felix Hochgruber Date: Mon, 24 Jul 2023 16:22:01 +0200 Subject: [PATCH 52/83] Update bitmovin player and analytics --- player/low-latency-streaming/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/player/low-latency-streaming/index.html b/player/low-latency-streaming/index.html index 40146a5d..c097b962 100644 --- a/player/low-latency-streaming/index.html +++ b/player/low-latency-streaming/index.html @@ -1,7 +1,7 @@ + src="https://cdn.jsdelivr.net/npm/bitmovin-player@latest/bitmovinplayer.js"> + src="https://cdn.jsdelivr.net/npm/bitmovin-analytics@latest/bitmovinanalytics.min.js">
    From fa4b80c43e059aeeebc83f221186e9c826280e33 Mon Sep 17 00:00:00 2001 From: Felix Hochgruber Date: Mon, 24 Jul 2023 16:36:03 +0200 Subject: [PATCH 53/83] Switch to multi-bitrate stream --- player/low-latency-streaming/js/script.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/player/low-latency-streaming/js/script.js b/player/low-latency-streaming/js/script.js index acb32c54..30f93e49 100644 --- a/player/low-latency-streaming/js/script.js +++ b/player/low-latency-streaming/js/script.js @@ -10,7 +10,7 @@ var targetLatencyDisplay = document.querySelector('#targetLatency'); var targetLatency = 3; var videoOnly = false; -var dashUrl = 'https://akamaibroadcasteruseast.akamaized.net/cmaf/live/657078/akasource/out.mpd'; +var dashUrl = 'https://cmafref.akamaized.net/cmaf/live-ull/2006350/akambr/out.mpd'; var queryString = getQueryParams(); From 8f68e9abf54266c702be5660532e173632fa7bd4 Mon Sep 17 00:00:00 2001 From: Felix Hochgruber Date: Mon, 24 Jul 2023 16:39:31 +0200 Subject: [PATCH 54/83] Use low-latency v1 ABR --- player/low-latency-streaming/js/script.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/player/low-latency-streaming/js/script.js b/player/low-latency-streaming/js/script.js index 30f93e49..fecd7b2c 100644 --- a/player/low-latency-streaming/js/script.js +++ b/player/low-latency-streaming/js/script.js @@ -50,6 +50,7 @@ var conf = { muted: true, }, adaptation: { + logic: 'low-latency-v1', preload: false, }, logs: { @@ -116,8 +117,6 @@ function printBufferLevels() { function loadPlayer() { player = new bitmovin.player.Player(document.getElementById('player-container'), conf); player.load(source).then(function() { - // ABR is not supported yet for low latency - player.setVideoQuality(player.getAvailableVideoQualities()[0].id); updateTargetLatency(); if (isFirefox) { From 0545ad045428edca0d9fbd4d43d531bc4148bff7 Mon Sep 17 00:00:00 2001 From: Felix Hochgruber Date: Mon, 24 Jul 2023 17:12:13 +0200 Subject: [PATCH 55/83] Adjust target latency --- player/low-latency-streaming/index.html | 2 +- player/low-latency-streaming/js/script.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/player/low-latency-streaming/index.html b/player/low-latency-streaming/index.html index c097b962..dc847584 100644 --- a/player/low-latency-streaming/index.html +++ b/player/low-latency-streaming/index.html @@ -65,7 +65,7 @@ Target Latency: 2
    - +
    Low
    High
    diff --git a/player/low-latency-streaming/js/script.js b/player/low-latency-streaming/js/script.js index fecd7b2c..380b24d2 100644 --- a/player/low-latency-streaming/js/script.js +++ b/player/low-latency-streaming/js/script.js @@ -8,7 +8,7 @@ var latencyDisplay = document.querySelector('#latency'); var slider = document.querySelector('#targetLatencySlider'); var targetLatencyDisplay = document.querySelector('#targetLatency'); -var targetLatency = 3; +var targetLatency = 5; var videoOnly = false; var dashUrl = 'https://cmafref.akamaized.net/cmaf/live-ull/2006350/akambr/out.mpd'; From af2813ee77fbb034d9287d04853275011bce71b5 Mon Sep 17 00:00:00 2001 From: Felix Hochgruber Date: Tue, 25 Jul 2023 09:22:36 +0200 Subject: [PATCH 56/83] Remove analytics script Analytics comes with the player --- player/low-latency-streaming/index.html | 2 -- 1 file changed, 2 deletions(-) diff --git a/player/low-latency-streaming/index.html b/player/low-latency-streaming/index.html index dc847584..a9724169 100644 --- a/player/low-latency-streaming/index.html +++ b/player/low-latency-streaming/index.html @@ -1,7 +1,5 @@ -
    From ec5102a6e1104e5b5de4d94df4ea5919120b5e9f Mon Sep 17 00:00:00 2001 From: Felix Hochgruber Date: Tue, 25 Jul 2023 10:40:43 +0200 Subject: [PATCH 57/83] Configure ABR to focus more on quality --- player/low-latency-streaming/js/script.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/player/low-latency-streaming/js/script.js b/player/low-latency-streaming/js/script.js index 380b24d2..13e12b4c 100644 --- a/player/low-latency-streaming/js/script.js +++ b/player/low-latency-streaming/js/script.js @@ -52,6 +52,8 @@ var conf = { adaptation: { logic: 'low-latency-v1', preload: false, + // Encourage switching to a higher quality sooner + qualityStabilityBalance: 0.3, }, logs: { //level: 'debug' From 15d57c063f0caa9cc201f4b11cbb7f08c74dd148 Mon Sep 17 00:00:00 2001 From: Felix Hochgruber Date: Tue, 25 Jul 2023 10:46:31 +0200 Subject: [PATCH 58/83] Use latency variable in config --- player/low-latency-streaming/js/script.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/player/low-latency-streaming/js/script.js b/player/low-latency-streaming/js/script.js index 13e12b4c..08eaf02d 100644 --- a/player/low-latency-streaming/js/script.js +++ b/player/low-latency-streaming/js/script.js @@ -76,7 +76,7 @@ var conf = { }, live: { lowLatency: { - targetLatency: 3, + targetLatency: targetLatency, catchup: { playbackRateThreshold: 0.075, seekThreshold: 5, From 976de09fab69586b9cde6f03148bb477e7c50cbd Mon Sep 17 00:00:00 2001 From: Felix Hochgruber Date: Tue, 25 Jul 2023 10:50:44 +0200 Subject: [PATCH 59/83] Add server time sync config To compensate for client clock drift --- player/low-latency-streaming/js/script.js | 26 +++++++++++++---------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/player/low-latency-streaming/js/script.js b/player/low-latency-streaming/js/script.js index 08eaf02d..7d072b63 100644 --- a/player/low-latency-streaming/js/script.js +++ b/player/low-latency-streaming/js/script.js @@ -76,18 +76,22 @@ var conf = { }, live: { lowLatency: { - targetLatency: targetLatency, - catchup: { - playbackRateThreshold: 0.075, - seekThreshold: 5, - playbackRate: 1.2, - }, - fallback: { - playbackRateThreshold: 0.075, - seekThreshold: 5, - playbackRate: 0.95, - }, + targetLatency: targetLatency, + catchup: { + playbackRateThreshold: 0.075, + seekThreshold: 5, + playbackRate: 1.2, + }, + fallback: { + playbackRateThreshold: 0.075, + seekThreshold: 5, + playbackRate: 0.95, + }, }, + synchronization: [{ + method: 'httphead', + serverUrl: 'https://time.akamai.com', + }], }, nonetwork: { preprocessHttpResponse: function(type, response) { From fca66d9f36fed6ce51858e3fa0f4b1a43708c2c8 Mon Sep 17 00:00:00 2001 From: Kenny Date: Thu, 5 Oct 2023 13:27:43 +0200 Subject: [PATCH 60/83] add quality stability control --- player/low-latency-streaming/index.html | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/player/low-latency-streaming/index.html b/player/low-latency-streaming/index.html index a9724169..6737390b 100644 --- a/player/low-latency-streaming/index.html +++ b/player/low-latency-streaming/index.html @@ -70,6 +70,18 @@
    +
    +
    + Quality-Stability Tradeoff: 0.5 +
    +
    + +
    +
    Quality
    +
    Stability
    +
    +
    +
    From 22234899598450246141aa2752f7c89e15f5c323 Mon Sep 17 00:00:00 2001 From: Kenny Date: Thu, 5 Oct 2023 13:28:15 +0200 Subject: [PATCH 61/83] update the quality stability balance --- player/low-latency-streaming/js/script.js | 27 ++++++++++++++++------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/player/low-latency-streaming/js/script.js b/player/low-latency-streaming/js/script.js index 7d072b63..ccbc3dd6 100644 --- a/player/low-latency-streaming/js/script.js +++ b/player/low-latency-streaming/js/script.js @@ -5,7 +5,9 @@ var audioBufferDisplay = document.querySelector('#audioBufferLength'); var playbackSpeedDisplay = document.querySelector('#playbackSpeed'); var timeDisplay = document.querySelector('#time'); var latencyDisplay = document.querySelector('#latency'); -var slider = document.querySelector('#targetLatencySlider'); +var latencySlider = document.querySelector('#targetLatencySlider'); +var qualityStabilityDisplay = document.querySelector('#qualityStability'); +var qualityStabilitySlider = document.querySelector('#qualtyStabilitySlider'); var targetLatencyDisplay = document.querySelector('#targetLatency'); var targetLatency = 5; @@ -31,13 +33,25 @@ if (queryString.dashUrl) { } var updateTargetLatency = function() { - targetLatencyDisplay.innerText = slider.value + 's'; - targetLatency = Number(slider.value); + targetLatencyDisplay.innerText = latencySlider.value + 's'; + targetLatency = Number(latencySlider.value); player.lowlatency.setTargetLatency(targetLatency); }; -slider.oninput = updateTargetLatency; -slider.value = String(targetLatency); +latencySlider.oninput = updateTargetLatency; +latencySlider.value = String(targetLatency); + +var updateQualityStability = function() { + var targetValue = Number(qualityStabilitySlider.value); + if (isNaN(targetValue) || targetValue < 0 || targetValue > 1) { + console.warn('Invalid value for qualityStabilityBalance: ', targetValue); + return; + } + console.log('Setting qualityStabilityBalence to', targetValue); + player.adaptation.setConfig({qualityStabilityBalance: targetValue}); + qualityStabilityDisplay.innerText = targetValue; +} +qualityStabilitySlider.oninput = updateQualityStability; var conf = { key: '29ba4a30-8b5e-4336-a7dd-c94ff3b25f30', @@ -50,10 +64,7 @@ var conf = { muted: true, }, adaptation: { - logic: 'low-latency-v1', preload: false, - // Encourage switching to a higher quality sooner - qualityStabilityBalance: 0.3, }, logs: { //level: 'debug' From b34f47968d2ee6d8bcda1503bf6e379b176b61dc Mon Sep 17 00:00:00 2001 From: Kenny Date: Thu, 5 Oct 2023 13:28:23 +0200 Subject: [PATCH 62/83] style quality stability controls --- player/low-latency-streaming/css/style.css | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/player/low-latency-streaming/css/style.css b/player/low-latency-streaming/css/style.css index 16a2d0a4..f5bcd691 100644 --- a/player/low-latency-streaming/css/style.css +++ b/player/low-latency-streaming/css/style.css @@ -142,14 +142,18 @@ border: 3px solid #1FAAE2; } -.latency-control { +.latency-control, .quality-control { padding: 35px 20px 10px 20px; margin: 7px; font-size: 15px; width: 100%; } +.quality-control { + padding-top: 0px; +} + #firefoxWarning { text-align: center; color: red; -} \ No newline at end of file +} From fced3c7e01d86115249c7c245d085ac562a9254b Mon Sep 17 00:00:00 2001 From: Kenny Date: Thu, 5 Oct 2023 14:46:27 +0200 Subject: [PATCH 63/83] don't spam the console --- player/low-latency-streaming/js/script.js | 1 - 1 file changed, 1 deletion(-) diff --git a/player/low-latency-streaming/js/script.js b/player/low-latency-streaming/js/script.js index ccbc3dd6..65e7355d 100644 --- a/player/low-latency-streaming/js/script.js +++ b/player/low-latency-streaming/js/script.js @@ -47,7 +47,6 @@ var updateQualityStability = function() { console.warn('Invalid value for qualityStabilityBalance: ', targetValue); return; } - console.log('Setting qualityStabilityBalence to', targetValue); player.adaptation.setConfig({qualityStabilityBalance: targetValue}); qualityStabilityDisplay.innerText = targetValue; } From 6e1980135824e8fed27982c61596ce6ca1091643 Mon Sep 17 00:00:00 2001 From: Kenny Date: Fri, 6 Oct 2023 10:03:23 +0200 Subject: [PATCH 64/83] set the default to 0.3 --- player/low-latency-streaming/index.html | 2 +- player/low-latency-streaming/js/script.js | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/player/low-latency-streaming/index.html b/player/low-latency-streaming/index.html index 6737390b..785d5589 100644 --- a/player/low-latency-streaming/index.html +++ b/player/low-latency-streaming/index.html @@ -75,7 +75,7 @@ Quality-Stability Tradeoff: 0.5
    - +
    Quality
    Stability
    diff --git a/player/low-latency-streaming/js/script.js b/player/low-latency-streaming/js/script.js index 65e7355d..f4d7922f 100644 --- a/player/low-latency-streaming/js/script.js +++ b/player/low-latency-streaming/js/script.js @@ -64,6 +64,8 @@ var conf = { }, adaptation: { preload: false, + // Encourage switching to a higher quality sooner + qualityStabilityBalance: 0.3, }, logs: { //level: 'debug' From ea5e5c3080270de3229341759fb385c6a445d030 Mon Sep 17 00:00:00 2001 From: Kenny Date: Fri, 6 Oct 2023 10:03:33 +0200 Subject: [PATCH 65/83] use correct ABR --- player/low-latency-streaming/js/script.js | 1 + 1 file changed, 1 insertion(+) diff --git a/player/low-latency-streaming/js/script.js b/player/low-latency-streaming/js/script.js index f4d7922f..ba284701 100644 --- a/player/low-latency-streaming/js/script.js +++ b/player/low-latency-streaming/js/script.js @@ -63,6 +63,7 @@ var conf = { muted: true, }, adaptation: { + logic: 'low-latency-v1', preload: false, // Encourage switching to a higher quality sooner qualityStabilityBalance: 0.3, From b7d0f2679f9e525743f4c4c6efbdf0cb2e3546a7 Mon Sep 17 00:00:00 2001 From: Kenny Date: Fri, 6 Oct 2023 10:09:03 +0200 Subject: [PATCH 66/83] update initial display value too --- player/low-latency-streaming/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/player/low-latency-streaming/index.html b/player/low-latency-streaming/index.html index 785d5589..6e78d69f 100644 --- a/player/low-latency-streaming/index.html +++ b/player/low-latency-streaming/index.html @@ -72,7 +72,7 @@
    - Quality-Stability Tradeoff: 0.5 + Quality-Stability Tradeoff: 0.3
    From 7b5e63084495d023b96ce81ba3837716bc87e76f Mon Sep 17 00:00:00 2001 From: Kenny Date: Fri, 6 Oct 2023 10:21:54 +0200 Subject: [PATCH 67/83] add hover text --- player/low-latency-streaming/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/player/low-latency-streaming/index.html b/player/low-latency-streaming/index.html index 6e78d69f..d1d90877 100644 --- a/player/low-latency-streaming/index.html +++ b/player/low-latency-streaming/index.html @@ -71,7 +71,7 @@
    -
    +
    Quality-Stability Tradeoff: 0.3
    From dd9890491a56a4cac391cca52bd128e5713f5cf9 Mon Sep 17 00:00:00 2001 From: Daniel Weinberger Date: Wed, 11 Oct 2023 17:16:25 +0200 Subject: [PATCH 68/83] Use explicit version of fflate using the latest URL resulted in fflate not being defined in the browser --- player/cmcd/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/player/cmcd/index.html b/player/cmcd/index.html index 66e37c92..dbcbc94c 100644 --- a/player/cmcd/index.html +++ b/player/cmcd/index.html @@ -2,7 +2,7 @@ - +

    This demo showcases how Common Media Client Data (CMCD) can be sent by the Player to a CDN.

    From 93752d60c080f4105716d90b409c504308e48a3c Mon Sep 17 00:00:00 2001 From: moesslerm Date: Fri, 13 Oct 2023 13:04:19 +0200 Subject: [PATCH 69/83] Add bitrate and buffer level charts --- player/low-latency-streaming/index.html | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/player/low-latency-streaming/index.html b/player/low-latency-streaming/index.html index d1d90877..9ba15084 100644 --- a/player/low-latency-streaming/index.html +++ b/player/low-latency-streaming/index.html @@ -87,3 +87,12 @@
    + +
    +
    +
    +
    +
    +
    +
    +
    From 84740a65a72bf341e7f33868db0451376d90f80b Mon Sep 17 00:00:00 2001 From: moesslerm Date: Fri, 13 Oct 2023 13:05:37 +0200 Subject: [PATCH 70/83] add css --- player/low-latency-streaming/css/style.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/player/low-latency-streaming/css/style.css b/player/low-latency-streaming/css/style.css index f5bcd691..f53ec9e1 100644 --- a/player/low-latency-streaming/css/style.css +++ b/player/low-latency-streaming/css/style.css @@ -157,3 +157,8 @@ text-align: center; color: red; } + +.demo-row { + display: flex; + align-items: flex-start; +} \ No newline at end of file From ed8d55f4a87cecfe344a82497d48e308ed248d3c Mon Sep 17 00:00:00 2001 From: moesslerm Date: Fri, 13 Oct 2023 13:07:15 +0200 Subject: [PATCH 71/83] Add chart manipulation functions --- player/low-latency-streaming/js/script.js | 155 ++++++++++++++++++++++ 1 file changed, 155 insertions(+) diff --git a/player/low-latency-streaming/js/script.js b/player/low-latency-streaming/js/script.js index ba284701..d0f19393 100644 --- a/player/low-latency-streaming/js/script.js +++ b/player/low-latency-streaming/js/script.js @@ -20,6 +20,9 @@ var targetLatencyFromUrl = queryString.latency; var isFirefox = typeof InstallTrigger !== 'undefined'; +var initialTimestamp, bufferChart, bitrateChart; +var updateCount = 0; + if (targetLatencyFromUrl && !isNaN(Number(targetLatencyFromUrl))) { targetLatency = targetLatencyFromUrl; } @@ -170,4 +173,156 @@ function getQueryParams() { return queryParams; } +function clearChart() { + bufferChart.destroy(); + bitrateChart.destroy(); +} + +function addNewData(videoBuffer, audioBuffer, bitrate) { + var currentTimeDiff = (Date.now() - initialTimestamp) / 1000; + + addChartData(bufferChart, 0, currentTimeDiff, videoBuffer); + addChartData(bufferChart, 1, currentTimeDiff, audioBuffer); + addChartData(bitrateChart, 0, currentTimeDiff, bitrate / 1000000); +} + +function updateCharts(player) { + addNewData(player.getVideoBufferLength(), player.getAudioBufferLength(), player.getDownloadedVideoData().bitrate); +} + +function addChartData(chart, seriesIndex, xAxis, yAxis) { + chart.series[seriesIndex].addPoint([xAxis, yAxis], true, false); +} + +function setupChart() { + initialTimestamp = Date.now(); + bufferChart = Highcharts.chart(document.getElementById("buffer-chart"), { + + chart: { + type: 'spline', + zoomType: 'x' + }, + credits: { + enabled: false + }, + title: { + text: 'Buffer Levels' + }, + xAxis: { + title: { + text: 'time', + align: 'low' + }, + min: 0 + }, + yAxis: { + title: { + text: 'sec', + align: 'high' + }, + min: 0 + }, + legend: { + align: 'center', + verticalAlign: 'bottom' + }, + series: [{ + name: 'Video', + data: [[0, 0]], + marker: { + enabled: true, + fillColor: '#ffffff', + lineWidth: 2, + lineColor: null, + symbol: 'circle' + }, + color: '#1FAAE2' + }, { + name: 'Audio', + data: [[0, 0]], + marker: { + enabled: true, + fillColor: '#ffffff', + lineWidth: 2, + lineColor: null, + symbol: 'circle' + }, + color: '#F49D1D' + }], + + responsive: { + rules: [{ + condition: { + maxWidth: 500 + }, + chartOptions: { + legend: { + layout: 'horizontal', + align: 'center', + verticalAlign: 'bottom' + } + } + }] + } + }); + + bitrateChart = Highcharts.chart(document.getElementById("bitrate-chart"), { + chart: { + type: 'spline', + zoomType: 'x' + }, + credits: { + enabled: false + }, + title: { + text: 'Bitrate' + }, + xAxis: { + title: { + text: 'time', + align: 'low' + }, + min: 0 + }, + yAxis: { + title: { + text: 'Mbps', + align: 'high' + }, + min: 0 + }, + legend: { + align: 'center', + verticalAlign: 'bottom' + }, + series: [{ + name: 'Video', + data: [[0, 0]], + marker: { + enabled: true, + fillColor: '#ffffff', + lineWidth: 2, + lineColor: null, + symbol: 'circle' + }, + color: '#1FAAE2' + }], + responsive: { + rules: [{ + condition: { + maxWidth: 500 + }, + chartOptions: { + legend: { + layout: 'horizontal', + align: 'center', + verticalAlign: 'bottom' + } + } + }] + } + }); +} + +setupChart(); $(document).ready(loadPlayer); From 8052831f48444e1bdbcf8ecf63eab5f47b6abafd Mon Sep 17 00:00:00 2001 From: moesslerm Date: Fri, 13 Oct 2023 13:08:41 +0200 Subject: [PATCH 72/83] Add event listeners to update graphs --- player/low-latency-streaming/js/script.js | 81 +++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/player/low-latency-streaming/js/script.js b/player/low-latency-streaming/js/script.js index d0f19393..0686e5ec 100644 --- a/player/low-latency-streaming/js/script.js +++ b/player/low-latency-streaming/js/script.js @@ -138,6 +138,9 @@ function printBufferLevels() { function loadPlayer() { player = new bitmovin.player.Player(document.getElementById('player-container'), conf); + + setPlayerEvents(player); + player.load(source).then(function() { updateTargetLatency(); @@ -323,6 +326,84 @@ function setupChart() { } }); } + +function setPlayerEvents(player) { + player.on(bitmovin.player.PlayerEvent.AudioPlaybackQualityChanged, function (data) { + log("On Audio Playback Quality Changed: " + JSON.stringify(data)); + updateCharts(player); + }); + + player.on(bitmovin.player.PlayerEvent.VideoPlaybackQualityChanged, function (data) { + log("On Video Playback Quality Changed: " + JSON.stringify(data)); + updateCharts(player); + }); + + player.on(bitmovin.player.PlayerEvent.StallStarted, function (data) { + log("On Buffering Started: " + JSON.stringify(data)); + updateCharts(player); + }); + + player.on(bitmovin.player.PlayerEvent.StallEnded, function (data) { + log("On Buffering Ended: " + JSON.stringify(data)); + updateCharts(player); + }); + + player.on(bitmovin.player.PlayerEvent.Playing, function (data) { + log("On Playing: " + JSON.stringify(data)) + updateCharts(player); + }); + + player.on(bitmovin.player.PlayerEvent.Paused, function (data) { + log("On Paused: " + JSON.stringify(data)); + updateCharts(player); + }); + + player.on(bitmovin.player.PlayerEvent.Play, function (data) { + log("On Play: " + JSON.stringify(data)) + }); + + player.on(bitmovin.player.PlayerEvent.MetadataParsed, function (data) { + log("On Metadata Parsed: " + JSON.stringify(data)) + }); + + player.on(bitmovin.player.PlayerEvent.Ready, function (data) { + log("On Ready: " + JSON.stringify(data)); + updateCharts(player); + }); + + player.on(bitmovin.player.PlayerEvent.SourceLoaded, function (data) { + log("On Loaded: " + JSON.stringify(data)); + updateCharts(player); + }); + + player.on(bitmovin.player.PlayerEvent.Error, function (data) { + log("On Error: " + JSON.stringify(data)); + updateCharts(player); + }); + + player.on(bitmovin.player.PlayerEvent.AdError, function (data) { + log("On Ad Error: " + JSON.stringify(data)); + updateCharts(player); + }); + + player.on(bitmovin.player.PlayerEvent.Seek, function (data) { + log("On Seek Started: " + JSON.stringify(data)); + updateCharts(player); + }); + + player.on(bitmovin.player.PlayerEvent.Seeked, function (data) { + log("On Seek Finished: " + JSON.stringify(data)); + updateCharts(player); + }); + + player.on(bitmovin.player.PlayerEvent.TimeChanged, function () { + updateCount++; + + if (updateCount % 4 == 1) { + updateCharts(player); + } + }); + } setupChart(); $(document).ready(loadPlayer); From 2a42534b7aef58b09b04a6625b1df0c13517ba1f Mon Sep 17 00:00:00 2001 From: moesslerm Date: Fri, 13 Oct 2023 13:12:01 +0200 Subject: [PATCH 73/83] Add eof --- player/low-latency-streaming/css/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/player/low-latency-streaming/css/style.css b/player/low-latency-streaming/css/style.css index f53ec9e1..a654930a 100644 --- a/player/low-latency-streaming/css/style.css +++ b/player/low-latency-streaming/css/style.css @@ -161,4 +161,4 @@ .demo-row { display: flex; align-items: flex-start; -} \ No newline at end of file +} From e63676fb3ee0aae252a6a51780969757042cc0dd Mon Sep 17 00:00:00 2001 From: Stefan Krainer Date: Mon, 16 Oct 2023 12:31:08 +0200 Subject: [PATCH 74/83] Adjust media break points --- player/low-latency-streaming/index.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/player/low-latency-streaming/index.html b/player/low-latency-streaming/index.html index 9ba15084..b237d42f 100644 --- a/player/low-latency-streaming/index.html +++ b/player/low-latency-streaming/index.html @@ -88,11 +88,11 @@
    -
    -
    +
    +
    -
    +
    From 7082d7d720f6de5d91d9ce75229b478536dd6c5b Mon Sep 17 00:00:00 2001 From: Kenny Date: Mon, 16 Oct 2023 12:33:23 +0200 Subject: [PATCH 75/83] add log function --- player/low-latency-streaming/js/script.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/player/low-latency-streaming/js/script.js b/player/low-latency-streaming/js/script.js index 0686e5ec..0d012df2 100644 --- a/player/low-latency-streaming/js/script.js +++ b/player/low-latency-streaming/js/script.js @@ -327,6 +327,10 @@ function setupChart() { }); } +function log(text) { + console.debug(text); +} + function setPlayerEvents(player) { player.on(bitmovin.player.PlayerEvent.AudioPlaybackQualityChanged, function (data) { log("On Audio Playback Quality Changed: " + JSON.stringify(data)); From 8a893725cabe77fb7eebf0b6ef507d357e05f4e5 Mon Sep 17 00:00:00 2001 From: Kenny Date: Mon, 16 Oct 2023 12:35:08 +0200 Subject: [PATCH 76/83] unify chart config --- player/low-latency-streaming/js/script.js | 88 ++++++++--------------- 1 file changed, 31 insertions(+), 57 deletions(-) diff --git a/player/low-latency-streaming/js/script.js b/player/low-latency-streaming/js/script.js index 0d012df2..8e9e1ebc 100644 --- a/player/low-latency-streaming/js/script.js +++ b/player/low-latency-streaming/js/script.js @@ -197,10 +197,8 @@ function addChartData(chart, seriesIndex, xAxis, yAxis) { chart.series[seriesIndex].addPoint([xAxis, yAxis], true, false); } -function setupChart() { - initialTimestamp = Date.now(); - bufferChart = Highcharts.chart(document.getElementById("buffer-chart"), { - +function getBaseChartConfig() { + return { chart: { type: 'spline', zoomType: 'x' @@ -208,8 +206,9 @@ function setupChart() { credits: { enabled: false }, - title: { - text: 'Buffer Levels' + legend: { + align: 'center', + verticalAlign: 'bottom' }, xAxis: { title: { @@ -218,6 +217,30 @@ function setupChart() { }, min: 0 }, + responsive: { + rules: [{ + condition: { + maxWidth: 500 + }, + chartOptions: { + legend: { + layout: 'horizontal', + align: 'center', + verticalAlign: 'bottom' + } + } + }] + } + } +} + +function setupChart() { + initialTimestamp = Date.now(); + bufferChart = Highcharts.chart(document.getElementById("buffer-chart"), { + ...getBaseChartConfig(), + title: { + text: 'Buffer Levels' + }, yAxis: { title: { text: 'sec', @@ -225,10 +248,6 @@ function setupChart() { }, min: 0 }, - legend: { - align: 'center', - verticalAlign: 'bottom' - }, series: [{ name: 'Video', data: [[0, 0]], @@ -252,41 +271,14 @@ function setupChart() { }, color: '#F49D1D' }], - - responsive: { - rules: [{ - condition: { - maxWidth: 500 - }, - chartOptions: { - legend: { - layout: 'horizontal', - align: 'center', - verticalAlign: 'bottom' - } - } - }] - } + }); bitrateChart = Highcharts.chart(document.getElementById("bitrate-chart"), { - chart: { - type: 'spline', - zoomType: 'x' - }, - credits: { - enabled: false - }, + ... getBaseChartConfig(), title: { text: 'Bitrate' }, - xAxis: { - title: { - text: 'time', - align: 'low' - }, - min: 0 - }, yAxis: { title: { text: 'Mbps', @@ -294,10 +286,6 @@ function setupChart() { }, min: 0 }, - legend: { - align: 'center', - verticalAlign: 'bottom' - }, series: [{ name: 'Video', data: [[0, 0]], @@ -310,20 +298,6 @@ function setupChart() { }, color: '#1FAAE2' }], - responsive: { - rules: [{ - condition: { - maxWidth: 500 - }, - chartOptions: { - legend: { - layout: 'horizontal', - align: 'center', - verticalAlign: 'bottom' - } - } - }] - } }); } From 938966e178860f80f55176b5216317e7f3a8a0cc Mon Sep 17 00:00:00 2001 From: Kenny Date: Mon, 16 Oct 2023 12:37:21 +0200 Subject: [PATCH 77/83] remove useless event handlers --- player/low-latency-streaming/js/script.js | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/player/low-latency-streaming/js/script.js b/player/low-latency-streaming/js/script.js index 8e9e1ebc..86faf0b8 100644 --- a/player/low-latency-streaming/js/script.js +++ b/player/low-latency-streaming/js/script.js @@ -336,14 +336,6 @@ function setPlayerEvents(player) { updateCharts(player); }); - player.on(bitmovin.player.PlayerEvent.Play, function (data) { - log("On Play: " + JSON.stringify(data)) - }); - - player.on(bitmovin.player.PlayerEvent.MetadataParsed, function (data) { - log("On Metadata Parsed: " + JSON.stringify(data)) - }); - player.on(bitmovin.player.PlayerEvent.Ready, function (data) { log("On Ready: " + JSON.stringify(data)); updateCharts(player); @@ -359,21 +351,6 @@ function setPlayerEvents(player) { updateCharts(player); }); - player.on(bitmovin.player.PlayerEvent.AdError, function (data) { - log("On Ad Error: " + JSON.stringify(data)); - updateCharts(player); - }); - - player.on(bitmovin.player.PlayerEvent.Seek, function (data) { - log("On Seek Started: " + JSON.stringify(data)); - updateCharts(player); - }); - - player.on(bitmovin.player.PlayerEvent.Seeked, function (data) { - log("On Seek Finished: " + JSON.stringify(data)); - updateCharts(player); - }); - player.on(bitmovin.player.PlayerEvent.TimeChanged, function () { updateCount++; From 603319041744a0fd99cdc979a7a8ef8ab8303fba Mon Sep 17 00:00:00 2001 From: Kenny Date: Mon, 16 Oct 2023 14:20:37 +0200 Subject: [PATCH 78/83] actually display the latency mode --- player/low-latency-streaming/js/script.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/player/low-latency-streaming/js/script.js b/player/low-latency-streaming/js/script.js index 86faf0b8..b0971ff8 100644 --- a/player/low-latency-streaming/js/script.js +++ b/player/low-latency-streaming/js/script.js @@ -76,8 +76,8 @@ var conf = { }, style: {}, events: { - playbackspeedchanged: function(e) { - playbackSpeedDisplay.innerText = e.to; + [bitmovin.player.PlayerEvent.LatencyModeChanged]: function(e) { + playbackSpeedDisplay.innerText = e.to; }, }, tweaks: { From 462cbf45167ce91704f029f3acd5c482d8df29c3 Mon Sep 17 00:00:00 2001 From: Kenny Date: Mon, 16 Oct 2023 14:55:04 +0200 Subject: [PATCH 79/83] fix initial value --- player/low-latency-streaming/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/player/low-latency-streaming/index.html b/player/low-latency-streaming/index.html index b237d42f..e2bac7c3 100644 --- a/player/low-latency-streaming/index.html +++ b/player/low-latency-streaming/index.html @@ -54,7 +54,7 @@
    Latency Mode
    - 1 + suspended
    From a87dfba1e937595118c616572d0578a794af1de5 Mon Sep 17 00:00:00 2001 From: Felix Hochgruber Date: Mon, 4 Dec 2023 13:20:19 +0100 Subject: [PATCH 80/83] Update VPAID ad URL (#113) --- player/ad-scheduling/js/script.js | 2 +- player/stream-test/js/script.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/player/ad-scheduling/js/script.js b/player/ad-scheduling/js/script.js index 5a938237..6bdfafc0 100644 --- a/player/ad-scheduling/js/script.js +++ b/player/ad-scheduling/js/script.js @@ -58,7 +58,7 @@ function loadConfig() { break; } case 'vpaid': { - manifestUrl = '//pubads.g.doubleclick.net/gampad/ads?sz=640x480&iu=/124319096/external/single_ad_samples&ciu_szs=300x250&impl=s&gdfp_req=1&env=vp&output=vast&unviewed_position_start=1&cust_params=deployment%3Ddevsite%26sample_ct%3Dlinearvpaid2js&correlator=[random]'; + manifestUrl = '//pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/single_ad_samples&sz=640x480&cust_params=sample_ct%3Dlinearvpaid2js&ciu_szs=300x250%2C728x90&gdfp_req=1&output=vast&unviewed_position_start=1&env=vp&impl=s&correlator=[random]'; adTagType = 'vast'; break; } diff --git a/player/stream-test/js/script.js b/player/stream-test/js/script.js index 35800e10..9cf828eb 100644 --- a/player/stream-test/js/script.js +++ b/player/stream-test/js/script.js @@ -78,7 +78,7 @@ var drmSource = { var defaultAdUrl = { vast: '//pubads.g.doubleclick.net/gampad/ads?sz=640x480&iu=/124319096/external/single_ad_samples&ciu_szs=300x250&impl=s&gdfp_req=1&env=vp&output=vast&unviewed_position_start=1&cust_params=deployment%3Ddevsite%26sample_ct%3Dlinear&correlator=[random]', - vpaid: '//pubads.g.doubleclick.net/gampad/ads?sz=640x480&iu=/124319096/external/single_ad_samples&ciu_szs=300x250&impl=s&gdfp_req=1&env=vp&output=vast&unviewed_position_start=1&cust_params=deployment%3Ddevsite%26sample_ct%3Dlinearvpaid2js&correlator=[random]', + vpaid: '//pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/single_ad_samples&sz=640x480&cust_params=sample_ct%3Dlinearvpaid2js&ciu_szs=300x250%2C728x90&gdfp_req=1&output=vast&unviewed_position_start=1&env=vp&impl=s&correlator=[random]', vmap: '//pubads.g.doubleclick.net/gampad/ads?sz=640x480&iu=/124319096/external/ad_rule_samples&ciu_szs=300x250&ad_rule=1&impl=s&gdfp_req=1&env=vp&output=vmap&unviewed_position_start=1&cust_params=deployment%3Ddevsite%26sample_ar%3Dpreonly&cmsid=496&vid=short_onecue&correlator=[random]', }; From 5e7d63663f2cdfd04ccf50b48916b853e4361135 Mon Sep 17 00:00:00 2001 From: mukulmishra18 Date: Wed, 10 Jan 2024 11:17:34 +0530 Subject: [PATCH 81/83] Default hls source on safari --- player/drm/js/script.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/player/drm/js/script.js b/player/drm/js/script.js index c2f20c6b..69b94377 100644 --- a/player/drm/js/script.js +++ b/player/drm/js/script.js @@ -308,6 +308,9 @@ if (browser === BROWSER.IE || browser === BROWSER.EDGE) { document.querySelector('#available-manifest-type').selectedIndex = 2; } + if (browser === BROWSER.SAFARI) { + document.querySelector('#available-manifest-type').selectedIndex = 1; + } } getSupportedDRMSystem(true).then(function () { From ecc2051f988fc13806a58e9e4e297118079099a6 Mon Sep 17 00:00:00 2001 From: mukulmishra18 Date: Wed, 10 Jan 2024 20:23:55 +0530 Subject: [PATCH 82/83] Default hls source in stream test demo --- player/stream-test/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/player/stream-test/index.html b/player/stream-test/index.html index b1df14e9..ecf965a9 100644 --- a/player/stream-test/index.html +++ b/player/stream-test/index.html @@ -22,10 +22,10 @@
    Stream type
    - +
    - +
    From 9c71be2c3eb06d079180a5dc2a292506f005cb75 Mon Sep 17 00:00:00 2001 From: Robert Date: Mon, 8 Apr 2024 15:56:26 +0200 Subject: [PATCH 83/83] Update AV1 factor from 10 to 4 --- encoding/av1-break-even-calculator/index.html | 2 +- .../av1-break-even-calculator/js/av1-break-even-calculator.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/encoding/av1-break-even-calculator/index.html b/encoding/av1-break-even-calculator/index.html index 93ed179f..085c13ed 100644 --- a/encoding/av1-break-even-calculator/index.html +++ b/encoding/av1-break-even-calculator/index.html @@ -152,7 +152,7 @@

    Calculation multipliers

    1 2 - 10 + 4 Efficiency improvements diff --git a/encoding/av1-break-even-calculator/js/av1-break-even-calculator.js b/encoding/av1-break-even-calculator/js/av1-break-even-calculator.js index c22c0a7f..755ef9c0 100644 --- a/encoding/av1-break-even-calculator/js/av1-break-even-calculator.js +++ b/encoding/av1-break-even-calculator/js/av1-break-even-calculator.js @@ -58,7 +58,7 @@ $(function() { const multiplierStreamHd = 2; const multiplierStreamSd = 1; const multiplierTech3Pass = 2; // Multipass - const multiplierCodecAv1 = 10; + const multiplierCodecAv1 = 4; // streams/renditions const ingressCostPerGb = 0.00;