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; 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..6bdfafc0 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); @@ -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; } @@ -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..eb634123 100644 --- a/player/audio-api/js/script.js +++ b/player/audio-api/js/script.js @@ -22,13 +22,12 @@ 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 = { - 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..a580d4e1 100644 --- a/player/audio-api/setup.js +++ b/player/audio-api/setup.js @@ -4,13 +4,12 @@ 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 = { - 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/caption-styling/demo.js b/player/caption-styling/demo.js index 0f5e19f8..5f3e2ba6 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/playlist.m3u8', + poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png' }; var playerContainer = document.getElementById('player-container'); 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/caption-styling/js/script.js b/player/caption-styling/js/script.js index 14e19429..38204c6d 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/playlist.m3u8', + 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 b357e936..6326dba8 100644 --- a/player/channel-switching/js/script.js +++ b/player/channel-switching/js/script.js @@ -121,22 +121,23 @@ 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 = { 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/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 24abd2d3..bfe38489 100644 --- a/player/channel-switching/switchChannel.js +++ b/player/channel-switching/switchChannel.js @@ -4,22 +4,23 @@ 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 = { 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/playlist.m3u8', + poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png' } } 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/cmcd/README.md b/player/cmcd/README.md new file mode 100644 index 00000000..379c8c69 --- /dev/null +++ b/player/cmcd/README.md @@ -0,0 +1,9 @@ +# CMCD Support + +Send Common Media Client Data (CMCD) data from Player to CDN + +### Tags + + - CMCD + - Common Media Client Data + - CDN Logging \ 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..0ad04c40 --- /dev/null +++ b/player/cmcd/css/style.css @@ -0,0 +1,56 @@ +span, b { + font-size: medium; +} + +.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; +} + +.cmcd-prefetch-diagram > div { + font-size: 20px; + font-weight: 500; + padding-top: 23px; +} + +.cmcd-prefetch-diagram img.partner-logo { + float: right; + width: 130px; +} + +.diagram-title { + display: inline; +} + +#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; +} + +.cmcd-log { + color: blue; +} 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..dbcbc94c --- /dev/null +++ b/player/cmcd/index.html @@ -0,0 +1,51 @@ + + + + + + +
+

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

+
+ +
+
+
+
+
+
+
+
    +
  • + 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. +
  • +
+
+
+ +
+
+
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
+ + + + +
+
diff --git a/player/cmcd/info.json b/player/cmcd/info.json new file mode 100644 index 00000000..e7a50a62 --- /dev/null +++ b/player/cmcd/info.json @@ -0,0 +1,24 @@ +{ + "title": "CMCD Support", + "description": "Send CMCD data from Player to CDN", + "long_description": "To be defined.", + "executable": { + "executable": true, + "indexfile": "index.html" + }, + "code": { + "show_code": false, + "language": "js", + "files": [] + }, + "metadata":{ + "title":"Enable CMCD » Video Player | Bitmovin", + "description": "Send Common Media Client Data (CMCD) data from Player to CDN" + }, + "tags": [ + "CMCD", + "Common Media Client Data", + "CDN Logging", + "experimental" + ] +} \ No newline at end of file diff --git a/player/cmcd/js/cmcd-integration.js b/player/cmcd/js/cmcd-integration.js new file mode 100644 index 00000000..9b131ecf --- /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 x},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 I},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),I=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),x=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 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:', '').replace('CMCD-QST:', '').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).toFixed(2)}s`; + } + if (cmcd.startsWith(`${CMCD_KEYS.EncodedBitrate}=`)) { + const value = cmcd.split('=')[1]; + return `Encoded Bitrate: ${value}kbps`; + } + 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).toFixed(2)}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}kbps`; + } + 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}x`; + } + if (cmcd.startsWith(`${CMCD_KEYS.RequestedMaximumThroughput}=`)) { + const value = cmcd.split('=')[1]; + return `Requested Maximum Throughput: ${value}kbps`; + } + 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}kbps`; + } + // Version is usually omitted for version 1 + + return cmcd; + }); + + return beautified.filter(Boolean).join(', '); +} + +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()) + .then(response => (new X2JS()).xml2js(response)) + .then(response => parseS3ObjectListingAndFetchDataStreamLogFiles(response, newRequestTimestamp)) + .then(responses => parseDataStreamLogFiles(responses)) +} + +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; + 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 parseDataStreamLogFiles(responses) { + if (!responses || responses.length < 1) { + return; + } + + const allLogs = responses + .map(response => gunzipLogFile(response)) + .join('') + .trim() + .split('\n') + .map(line => JSON.parse(line)); + + 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); + + 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) { + return { + 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), + } +} + +$(function() { + setupPlayerWithCmcd(); + setInterval(getCmcdAndCdnLogFromS3, LOG_PULL_INTERVALL_SECONDS); +}); 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..46de5b81 100644 --- a/player/custom-adaptation/js/script.js +++ b/player/custom-adaptation/js/script.js @@ -132,14 +132,14 @@ }; 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'); - player = new bitmovin.player.Player(playerContainer, conf); + var player = new bitmovin.player.Player(playerContainer, conf); player.load(source).then(function () { availableRepresentations = player.getAvailableVideoQualities(); diff --git a/player/custom-quality-labels/setup.js b/player/custom-quality-labels/setup.js index c46561bc..b0f00e87 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/playlist.m3u8', + poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png', labeling: { dash: { qualities: getQualityLabels diff --git a/player/drm/demo.js b/player/drm/demo.js index 731bbde8..61a44875 100644 --- a/player/drm/demo.js +++ b/player/drm/demo.js @@ -6,15 +6,15 @@ 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_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: { 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 9ac60c43..69b94377 100644 --- a/player/drm/js/script.js +++ b/player/drm/js/script.js @@ -1,21 +1,21 @@ (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_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': { '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==' } } }; @@ -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 () { 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/low-latency-streaming/css/style.css b/player/low-latency-streaming/css/style.css index 16a2d0a4..a654930a 100644 --- a/player/low-latency-streaming/css/style.css +++ b/player/low-latency-streaming/css/style.css @@ -142,14 +142,23 @@ 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 +} + +.demo-row { + display: flex; + align-items: flex-start; +} diff --git a/player/low-latency-streaming/index.html b/player/low-latency-streaming/index.html index 40146a5d..e2bac7c3 100644 --- a/player/low-latency-streaming/index.html +++ b/player/low-latency-streaming/index.html @@ -1,7 +1,5 @@ - + src="https://cdn.jsdelivr.net/npm/bitmovin-player@latest/bitmovinplayer.js">
@@ -56,7 +54,7 @@
Latency Mode
- 1 + suspended
@@ -65,15 +63,36 @@ Target Latency: 2
- +
Low
High
+
+
+ Quality-Stability Tradeoff: 0.3 +
+
+ +
+
Quality
+
Stability
+
+
+
+ +
+
+
+
+
+
+
+
diff --git a/player/low-latency-streaming/js/script.js b/player/low-latency-streaming/js/script.js index acb32c54..b0971ff8 100644 --- a/player/low-latency-streaming/js/script.js +++ b/player/low-latency-streaming/js/script.js @@ -5,12 +5,14 @@ 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 = 3; +var targetLatency = 5; 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(); @@ -18,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; } @@ -31,13 +36,24 @@ 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; + } + player.adaptation.setConfig({qualityStabilityBalance: targetValue}); + qualityStabilityDisplay.innerText = targetValue; +} +qualityStabilitySlider.oninput = updateQualityStability; var conf = { key: '29ba4a30-8b5e-4336-a7dd-c94ff3b25f30', @@ -50,15 +66,18 @@ var conf = { muted: true, }, adaptation: { + logic: 'low-latency-v1', preload: false, + // Encourage switching to a higher quality sooner + qualityStabilityBalance: 0.3, }, logs: { //level: 'debug' }, style: {}, events: { - playbackspeedchanged: function(e) { - playbackSpeedDisplay.innerText = e.to; + [bitmovin.player.PlayerEvent.LatencyModeChanged]: function(e) { + playbackSpeedDisplay.innerText = e.to; }, }, tweaks: { @@ -73,18 +92,22 @@ var conf = { }, live: { lowLatency: { - targetLatency: 3, - 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) { @@ -115,9 +138,10 @@ function printBufferLevels() { function loadPlayer() { player = new bitmovin.player.Player(document.getElementById('player-container'), conf); + + setPlayerEvents(player); + player.load(source).then(function() { - // ABR is not supported yet for low latency - player.setVideoQuality(player.getAvailableVideoQualities()[0].id); updateTargetLatency(); if (isFirefox) { @@ -152,4 +176,189 @@ 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 getBaseChartConfig() { + return { + chart: { + type: 'spline', + zoomType: 'x' + }, + credits: { + enabled: false + }, + legend: { + align: 'center', + verticalAlign: 'bottom' + }, + xAxis: { + title: { + text: 'time', + align: 'low' + }, + 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', + align: 'high' + }, + min: 0 + }, + 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' + }], + + }); + + bitrateChart = Highcharts.chart(document.getElementById("bitrate-chart"), { + ... getBaseChartConfig(), + title: { + text: 'Bitrate' + }, + yAxis: { + title: { + text: 'Mbps', + align: 'high' + }, + min: 0 + }, + series: [{ + name: 'Video', + data: [[0, 0]], + marker: { + enabled: true, + fillColor: '#ffffff', + lineWidth: 2, + lineColor: null, + symbol: 'circle' + }, + color: '#1FAAE2' + }], + }); +} + +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)); + 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.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.TimeChanged, function () { + updateCount++; + + if (updateCount % 4 == 1) { + updateCharts(player); + } + }); + } + +setupChart(); $(document).ready(loadPlayer); diff --git a/player/multi-audio-tracks/js/script.js b/player/multi-audio-tracks/js/script.js index a091674e..f8a4f292 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/playlist.m3u8', + 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..9069dc50 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/playlist.m3u8', + poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png', }; var playerContainer = document.getElementById('player-container'); 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 @@
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/overlay-ad/js/script.js b/player/overlay-ad/js/script.js index 38119aee..f1f33421 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/playlist.m3u8', + 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..603d2690 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/playlist.m3u8', + poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png', }; 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/player-ui-styling/demo.js b/player/player-ui-styling/demo.js index 201b32d3..3afe4d29 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/playlist.m3u8', + 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..5298a9fd 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/playlist.m3u8', + poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png' }; var currentUiManager, isSmallscreen = false; @@ -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 +} 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/player-ui-styling/js/script.js b/player/player-ui-styling/js/script.js index 3ee6ad93..4f4ba517 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/playlist.m3u8', + 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..6730ae94 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/playlist.m3u8', + poster: 'https://cdn.bitmovin.com/content/assets/sintel/poster.png' }; var playerPreloadContainer = document.getElementById('player-container-preload'); diff --git a/player/stream-test/css/style.css b/player/stream-test/css/style.css index c975963d..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 { @@ -334,3 +335,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..ecf965a9 100644 --- a/player/stream-test/index.html +++ b/player/stream-test/index.html @@ -22,10 +22,10 @@

Stream type
- +
- +
@@ -59,6 +59,32 @@
+
+
+
Test your stream on real devices with Stream Lab
+
+
+ + + Open dashboard + +
+
diff --git a/player/stream-test/js/script.js b/player/stream-test/js/script.js index de9fdbd5..9cf828eb 100644 --- a/player/stream-test/js/script.js +++ b/player/stream-test/js/script.js @@ -57,28 +57,28 @@ 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_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: { 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==' } }; 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]', }; 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/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'); diff --git a/player/vr-360/demo.js b/player/vr-360/demo.js index 23d71026..aba090cf 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, 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 + 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