MIDSIZE BUSINESS SOLUTIONS

Speed, scale and cybersecurity to help your business grow.

MIDSIZE BUSINESS SOLUTIONS

Speed, scale and cybersecurity to help your business grow.

Special offer: Go big. You are covered.

We are so confident we can help you that if your results don’t meet your eligible service agreement goal, you will receve up to 3 months of service credits within a 36‑month term.* The results are proven. Lumen® Networking Solutions customers reported benefits valued at:

$1.5M

in average annual cost benefits1

$1.5M

in average annual cost benefits1

229%

projected average three-year ROI1

229%

projected average three-year ROI1

35%

reduction in annual network costs1 

35%

reduction in annual network costs1 

Customer stories

Tampa Bay logo

Helping score a world‑class fan experience with top‑tier technology

Delivering an exceptional experience for over 70,000 fans arriving to Raymond James Stadium on game day is mission critical for the Tampa Bay Buccaneers. That experience is shaped by connected devices, live streaming and up‑to‑the‑minute player stats. The team partnered with Lumen to deliver dedicated, secure connectivity to support high bandwidth periods with expanded capacity and the ability to prioritise network traffic as needed. 

Helping score a world‑class fan experience with top‑tier technology

Delivering an exceptional experience for over 70,000 fans arriving to Raymond James Stadium on game day is mission critical for the Tampa Bay Buccaneers. That experience is shaped by connected devices, live streaming and up‑to‑the‑minute player stats. The team partnered with Lumen to deliver dedicated, secure connectivity to support high bandwidth periods with expanded capacity and the ability to prioritise network traffic as needed. 

Tampa Bay Bucs fans cheering in the stadium
Tampa Bay Bucs fans cheering in the stadium PlayButton

See how Lumen helps power game day for the Bucs (1:47)

Explore secure connectivity for your midsize enterprise

Support fast-paced business demand and next-level innovation with Lumen® Networking and Security Solutions.

Resources

VIDEO

Securely meet your growing business demands with Lumen® Dedicated Internet Access.

VIDEO

Securely meet your growing business demands with Lumen® Dedicated Internet Access.

A person in business attire looks at a tablet device while standing in a hallway

INFOGRAPHIC

IDC: The State of Digital and Network Transformation in U.S. Enterprises


View Infographic

INFOGRAPHIC

IDC: The State of Digital and Network Transformation in U.S. Enterprises


View Infographic

Two people meeting at a conference table
5 MIN READ
"); var playerHolderId = 'thisPlayer-' + videoID; addPlayer(videoID, playerHolderId); }); $("[href='#modal-6303382731001']").click(function(){ $("#6303382731001 .infomodal-modal").addClass("show"); var videoID = 6303382731001; var newID = "playerHolder-" + videoID; $("#" + newID).append("
"); var playerHolderId = 'thisPlayer-' + videoID; addPlayer(videoID, playerHolderId); }); $('.infomodal-modal-close').click(function(){ $(".thisplayer").remove(); }); $('.vjs-share-control').click(function(){ $('.vjs-social-share-links').appendTo(''); }); var queryString = window.location.search; var urlParams = new URLSearchParams(queryString); var videoID = urlParams.get('video_id'); if (videoID && videoID.length > 0) { var playerHolderId = 'playerHolder-undefined'; addPlayer(videoID, playerHolderId); } });
' + '
' + '
' + '

' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '

' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
'; // Inject the player code into the DOM document.getElementById(playerHolderId).innerHTML = playerHTML; // Add and execute the player script tag var s = document.createElement("script"); s.src = "https://players.brightcove.net/" + playerData.accountId + "/" + playerData.playerId + "_default/index.min.js"; // Add the script tag to the document document.body.appendChild(s); // Call a function to play the video once player's JavaScropt loaded s.onload = () => callback(videoID); } // +++ Initialize the player and start the video +++ function callback(videoID) { var thisPlayer = "brightcove-player-" + videoID; // myPlayer = bc(thisPlayer); // Can also use the following to assign a player instance to the variable if you choose not to use IDs for elements directly myPlayer = bc(document.getElementById(thisPlayer)); myPlayer.on("loadedmetadata", function() { // Mute the audio track, if there is one, so video will autoplay on button click myPlayer.muted(false); myPlayer.play(); $(".vjs-dock-title").each(function(i) { var videoID = $(this).closest('.video-js').attr('data-video-id'); $(this).attr('id', "vjs-dock-title-" + videoID); }); $(".vjs-dock-description").each(function(i) { var videoID = $(this).closest('.video-js').attr('data-video-id'); $(this).attr('id', "vjs-dock-description-" + videoID); }); $(".backButton").remove(); $(".forwardButton").remove(); $('div.vjs-volume-panel').attr('id', 'vjs-volume-panel'); $('div.vjs-playback-rate').attr('id', 'vjs-playback-rate'); $("#vjs-volume-panel").insertAfter("#vjs-playback-rate"); $('#vjs-dock-title-' + videoID).appendTo('#video-title-' + videoID); $('#vjs-dock-description-' + videoID).appendTo('#video-description-' + videoID); var firstVolume = document.querySelector(".vjs-volume-panel"); // +++ Create divs for buttons +++ var jumpAmount = 10, controlBar, insertBeforeNode, tenSecBackButton = document.createElement("div"), tenSecForwardButton = document.createElement("div"), backButtonImage = document.createElement("img"), forwardButtonImage = document.createElement("img"), volumeHolder = document.createElement("div"); // +++ Assign IDs for later element manipulation +++ tenSecBackButton.id = "backButton"; tenSecForwardButton.id = "forwardButton"; volumeHolder.id = "newVolumeHolder"; // +++ Assign properties to elements and assign to parents +++ backButtonImage.setAttribute("src","/content/dam/larry/images/icons/back10.png"); tenSecBackButton.appendChild(backButtonImage); tenSecBackButton.setAttribute("class","backButton"); forwardButtonImage.setAttribute("src","/content/dam/larry/images/icons/forward10.png"); tenSecForwardButton.appendChild(forwardButtonImage); tenSecForwardButton.setAttribute("class","forwardButton"); // +++ Get controlbar and insert elements +++ controlBar = myPlayer.$(".vjs-control-bar"); // Get the element to insert buttons in front of in conrolbar insertBackBeforeNode = myPlayer.$(".vjs-play-control"); insertForwardBeforeNode = myPlayer.$(".vjs-current-time"); insertNewVolumeHolder = myPlayer.$(".vjs-fullscreen-control"); // Insert the button div in proper location controlBar.insertBefore(tenSecBackButton, insertBackBeforeNode); controlBar.insertBefore(tenSecForwardButton, insertForwardBeforeNode); controlBar.insertBefore(volumeHolder, insertNewVolumeHolder); // +++ Add event handlers to jump back or forward +++ // Back button logic, don't jump to negative times tenSecBackButton.addEventListener("click", function() { var newTime, rewindAmt = jumpAmount, videoTime = myPlayer.currentTime(); if (videoTime >= rewindAmt) { newTime = videoTime - rewindAmt; } else { newTime = 0; } myPlayer.currentTime(newTime); }); // Forward button logic, don't jump past the duration tenSecForwardButton.addEventListener("click", function() { var newTime, forwardAmt = jumpAmount, videoTime = myPlayer.currentTime(), videoDuration = myPlayer.duration(); if (videoTime + forwardAmt <= videoDuration) { newTime = videoTime + forwardAmt; } else { newTime = videoDuration; } myPlayer.currentTime(newTime); }); }); }

BLOG

Dedicated Internet Access Vs Broadband: Speed And Security Win The Day


Read Blog

BLOG

Dedicated Internet Access Vs Broadband: Speed And Security Win The Day


Read Blog

A person in glasses sits and talks to another person who is standing
4 MIN READ
"); var playerHolderId = 'thisPlayer-' + videoID; addPlayer(videoID, playerHolderId); }); $("[href='#modal-6303382731001']").click(function(){ $("#6303382731001 .infomodal-modal").addClass("show"); var videoID = 6303382731001; var newID = "playerHolder-" + videoID; $("#" + newID).append("
"); var playerHolderId = 'thisPlayer-' + videoID; addPlayer(videoID, playerHolderId); }); $('.infomodal-modal-close').click(function(){ $(".thisplayer").remove(); }); $('.vjs-share-control').click(function(){ $('.vjs-social-share-links').appendTo(''); }); var queryString = window.location.search; var urlParams = new URLSearchParams(queryString); var videoID = urlParams.get('video_id'); if (videoID && videoID.length > 0) { var playerHolderId = 'playerHolder-undefined'; addPlayer(videoID, playerHolderId); } });
' + '
' + '
' + '

' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '

' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
'; // Inject the player code into the DOM document.getElementById(playerHolderId).innerHTML = playerHTML; // Add and execute the player script tag var s = document.createElement("script"); s.src = "https://players.brightcove.net/" + playerData.accountId + "/" + playerData.playerId + "_default/index.min.js"; // Add the script tag to the document document.body.appendChild(s); // Call a function to play the video once player's JavaScropt loaded s.onload = () => callback(videoID); } // +++ Initialize the player and start the video +++ function callback(videoID) { var thisPlayer = "brightcove-player-" + videoID; // myPlayer = bc(thisPlayer); // Can also use the following to assign a player instance to the variable if you choose not to use IDs for elements directly myPlayer = bc(document.getElementById(thisPlayer)); myPlayer.on("loadedmetadata", function() { // Mute the audio track, if there is one, so video will autoplay on button click myPlayer.muted(false); myPlayer.play(); $(".vjs-dock-title").each(function(i) { var videoID = $(this).closest('.video-js').attr('data-video-id'); $(this).attr('id', "vjs-dock-title-" + videoID); }); $(".vjs-dock-description").each(function(i) { var videoID = $(this).closest('.video-js').attr('data-video-id'); $(this).attr('id', "vjs-dock-description-" + videoID); }); $(".backButton").remove(); $(".forwardButton").remove(); $('div.vjs-volume-panel').attr('id', 'vjs-volume-panel'); $('div.vjs-playback-rate').attr('id', 'vjs-playback-rate'); $("#vjs-volume-panel").insertAfter("#vjs-playback-rate"); $('#vjs-dock-title-' + videoID).appendTo('#video-title-' + videoID); $('#vjs-dock-description-' + videoID).appendTo('#video-description-' + videoID); var firstVolume = document.querySelector(".vjs-volume-panel"); // +++ Create divs for buttons +++ var jumpAmount = 10, controlBar, insertBeforeNode, tenSecBackButton = document.createElement("div"), tenSecForwardButton = document.createElement("div"), backButtonImage = document.createElement("img"), forwardButtonImage = document.createElement("img"), volumeHolder = document.createElement("div"); // +++ Assign IDs for later element manipulation +++ tenSecBackButton.id = "backButton"; tenSecForwardButton.id = "forwardButton"; volumeHolder.id = "newVolumeHolder"; // +++ Assign properties to elements and assign to parents +++ backButtonImage.setAttribute("src","/content/dam/larry/images/icons/back10.png"); tenSecBackButton.appendChild(backButtonImage); tenSecBackButton.setAttribute("class","backButton"); forwardButtonImage.setAttribute("src","/content/dam/larry/images/icons/forward10.png"); tenSecForwardButton.appendChild(forwardButtonImage); tenSecForwardButton.setAttribute("class","forwardButton"); // +++ Get controlbar and insert elements +++ controlBar = myPlayer.$(".vjs-control-bar"); // Get the element to insert buttons in front of in conrolbar insertBackBeforeNode = myPlayer.$(".vjs-play-control"); insertForwardBeforeNode = myPlayer.$(".vjs-current-time"); insertNewVolumeHolder = myPlayer.$(".vjs-fullscreen-control"); // Insert the button div in proper location controlBar.insertBefore(tenSecBackButton, insertBackBeforeNode); controlBar.insertBefore(tenSecForwardButton, insertForwardBeforeNode); controlBar.insertBefore(volumeHolder, insertNewVolumeHolder); // +++ Add event handlers to jump back or forward +++ // Back button logic, don't jump to negative times tenSecBackButton.addEventListener("click", function() { var newTime, rewindAmt = jumpAmount, videoTime = myPlayer.currentTime(); if (videoTime >= rewindAmt) { newTime = videoTime - rewindAmt; } else { newTime = 0; } myPlayer.currentTime(newTime); }); // Forward button logic, don't jump past the duration tenSecForwardButton.addEventListener("click", function() { var newTime, forwardAmt = jumpAmount, videoTime = myPlayer.currentTime(), videoDuration = myPlayer.duration(); if (videoTime + forwardAmt <= videoDuration) { newTime = videoTime + forwardAmt; } else { newTime = videoDuration; } myPlayer.currentTime(newTime); }); }); }

BLOG

What Does Your Path To SASE Look Like?


Read Blog

BLOG

What Does Your Path To SASE Look Like?


Read Blog

Two people walk through a warehouse and talk while one is holding a tablet device
"); var playerHolderId = 'thisPlayer-' + videoID; addPlayer(videoID, playerHolderId); }); $("[href='#modal-6303382731001']").click(function(){ $("#6303382731001 .infomodal-modal").addClass("show"); var videoID = 6303382731001; var newID = "playerHolder-" + videoID; $("#" + newID).append("
"); var playerHolderId = 'thisPlayer-' + videoID; addPlayer(videoID, playerHolderId); }); $('.infomodal-modal-close').click(function(){ $(".thisplayer").remove(); }); $('.vjs-share-control').click(function(){ $('.vjs-social-share-links').appendTo(''); }); var queryString = window.location.search; var urlParams = new URLSearchParams(queryString); var videoID = urlParams.get('video_id'); if (videoID && videoID.length > 0) { var playerHolderId = 'playerHolder-undefined'; addPlayer(videoID, playerHolderId); } });
' + '
' + '
' + '

' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '

' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
'; // Inject the player code into the DOM document.getElementById(playerHolderId).innerHTML = playerHTML; // Add and execute the player script tag var s = document.createElement("script"); s.src = "https://players.brightcove.net/" + playerData.accountId + "/" + playerData.playerId + "_default/index.min.js"; // Add the script tag to the document document.body.appendChild(s); // Call a function to play the video once player's JavaScropt loaded s.onload = () => callback(videoID); } // +++ Initialize the player and start the video +++ function callback(videoID) { var thisPlayer = "brightcove-player-" + videoID; // myPlayer = bc(thisPlayer); // Can also use the following to assign a player instance to the variable if you choose not to use IDs for elements directly myPlayer = bc(document.getElementById(thisPlayer)); myPlayer.on("loadedmetadata", function() { // Mute the audio track, if there is one, so video will autoplay on button click myPlayer.muted(false); myPlayer.play(); $(".vjs-dock-title").each(function(i) { var videoID = $(this).closest('.video-js').attr('data-video-id'); $(this).attr('id', "vjs-dock-title-" + videoID); }); $(".vjs-dock-description").each(function(i) { var videoID = $(this).closest('.video-js').attr('data-video-id'); $(this).attr('id', "vjs-dock-description-" + videoID); }); $(".backButton").remove(); $(".forwardButton").remove(); $('div.vjs-volume-panel').attr('id', 'vjs-volume-panel'); $('div.vjs-playback-rate').attr('id', 'vjs-playback-rate'); $("#vjs-volume-panel").insertAfter("#vjs-playback-rate"); $('#vjs-dock-title-' + videoID).appendTo('#video-title-' + videoID); $('#vjs-dock-description-' + videoID).appendTo('#video-description-' + videoID); var firstVolume = document.querySelector(".vjs-volume-panel"); // +++ Create divs for buttons +++ var jumpAmount = 10, controlBar, insertBeforeNode, tenSecBackButton = document.createElement("div"), tenSecForwardButton = document.createElement("div"), backButtonImage = document.createElement("img"), forwardButtonImage = document.createElement("img"), volumeHolder = document.createElement("div"); // +++ Assign IDs for later element manipulation +++ tenSecBackButton.id = "backButton"; tenSecForwardButton.id = "forwardButton"; volumeHolder.id = "newVolumeHolder"; // +++ Assign properties to elements and assign to parents +++ backButtonImage.setAttribute("src","/content/dam/larry/images/icons/back10.png"); tenSecBackButton.appendChild(backButtonImage); tenSecBackButton.setAttribute("class","backButton"); forwardButtonImage.setAttribute("src","/content/dam/larry/images/icons/forward10.png"); tenSecForwardButton.appendChild(forwardButtonImage); tenSecForwardButton.setAttribute("class","forwardButton"); // +++ Get controlbar and insert elements +++ controlBar = myPlayer.$(".vjs-control-bar"); // Get the element to insert buttons in front of in conrolbar insertBackBeforeNode = myPlayer.$(".vjs-play-control"); insertForwardBeforeNode = myPlayer.$(".vjs-current-time"); insertNewVolumeHolder = myPlayer.$(".vjs-fullscreen-control"); // Insert the button div in proper location controlBar.insertBefore(tenSecBackButton, insertBackBeforeNode); controlBar.insertBefore(tenSecForwardButton, insertForwardBeforeNode); controlBar.insertBefore(volumeHolder, insertNewVolumeHolder); // +++ Add event handlers to jump back or forward +++ // Back button logic, don't jump to negative times tenSecBackButton.addEventListener("click", function() { var newTime, rewindAmt = jumpAmount, videoTime = myPlayer.currentTime(); if (videoTime >= rewindAmt) { newTime = videoTime - rewindAmt; } else { newTime = 0; } myPlayer.currentTime(newTime); }); // Forward button logic, don't jump past the duration tenSecForwardButton.addEventListener("click", function() { var newTime, forwardAmt = jumpAmount, videoTime = myPlayer.currentTime(), videoDuration = myPlayer.duration(); if (videoTime + forwardAmt <= videoDuration) { newTime = videoTime + forwardAmt; } else { newTime = videoDuration; } myPlayer.currentTime(newTime); }); }); }

CHECKLIST

How to Evaluate Your Technology Needs


View Checklist

CHECKLIST

How to Evaluate Your Technology Needs


View Checklist

A person in a red shirt talks to another person who is out of the frame
"); var playerHolderId = 'thisPlayer-' + videoID; addPlayer(videoID, playerHolderId); }); $("[href='#modal-6303382731001']").click(function(){ $("#6303382731001 .infomodal-modal").addClass("show"); var videoID = 6303382731001; var newID = "playerHolder-" + videoID; $("#" + newID).append("
"); var playerHolderId = 'thisPlayer-' + videoID; addPlayer(videoID, playerHolderId); }); $('.infomodal-modal-close').click(function(){ $(".thisplayer").remove(); }); $('.vjs-share-control').click(function(){ $('.vjs-social-share-links').appendTo(''); }); var queryString = window.location.search; var urlParams = new URLSearchParams(queryString); var videoID = urlParams.get('video_id'); if (videoID && videoID.length > 0) { var playerHolderId = 'playerHolder-undefined'; addPlayer(videoID, playerHolderId); } });
' + '
' + '
' + '

' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '

' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
'; // Inject the player code into the DOM document.getElementById(playerHolderId).innerHTML = playerHTML; // Add and execute the player script tag var s = document.createElement("script"); s.src = "https://players.brightcove.net/" + playerData.accountId + "/" + playerData.playerId + "_default/index.min.js"; // Add the script tag to the document document.body.appendChild(s); // Call a function to play the video once player's JavaScropt loaded s.onload = () => callback(videoID); } // +++ Initialize the player and start the video +++ function callback(videoID) { var thisPlayer = "brightcove-player-" + videoID; // myPlayer = bc(thisPlayer); // Can also use the following to assign a player instance to the variable if you choose not to use IDs for elements directly myPlayer = bc(document.getElementById(thisPlayer)); myPlayer.on("loadedmetadata", function() { // Mute the audio track, if there is one, so video will autoplay on button click myPlayer.muted(false); myPlayer.play(); $(".vjs-dock-title").each(function(i) { var videoID = $(this).closest('.video-js').attr('data-video-id'); $(this).attr('id', "vjs-dock-title-" + videoID); }); $(".vjs-dock-description").each(function(i) { var videoID = $(this).closest('.video-js').attr('data-video-id'); $(this).attr('id', "vjs-dock-description-" + videoID); }); $(".backButton").remove(); $(".forwardButton").remove(); $('div.vjs-volume-panel').attr('id', 'vjs-volume-panel'); $('div.vjs-playback-rate').attr('id', 'vjs-playback-rate'); $("#vjs-volume-panel").insertAfter("#vjs-playback-rate"); $('#vjs-dock-title-' + videoID).appendTo('#video-title-' + videoID); $('#vjs-dock-description-' + videoID).appendTo('#video-description-' + videoID); var firstVolume = document.querySelector(".vjs-volume-panel"); // +++ Create divs for buttons +++ var jumpAmount = 10, controlBar, insertBeforeNode, tenSecBackButton = document.createElement("div"), tenSecForwardButton = document.createElement("div"), backButtonImage = document.createElement("img"), forwardButtonImage = document.createElement("img"), volumeHolder = document.createElement("div"); // +++ Assign IDs for later element manipulation +++ tenSecBackButton.id = "backButton"; tenSecForwardButton.id = "forwardButton"; volumeHolder.id = "newVolumeHolder"; // +++ Assign properties to elements and assign to parents +++ backButtonImage.setAttribute("src","/content/dam/larry/images/icons/back10.png"); tenSecBackButton.appendChild(backButtonImage); tenSecBackButton.setAttribute("class","backButton"); forwardButtonImage.setAttribute("src","/content/dam/larry/images/icons/forward10.png"); tenSecForwardButton.appendChild(forwardButtonImage); tenSecForwardButton.setAttribute("class","forwardButton"); // +++ Get controlbar and insert elements +++ controlBar = myPlayer.$(".vjs-control-bar"); // Get the element to insert buttons in front of in conrolbar insertBackBeforeNode = myPlayer.$(".vjs-play-control"); insertForwardBeforeNode = myPlayer.$(".vjs-current-time"); insertNewVolumeHolder = myPlayer.$(".vjs-fullscreen-control"); // Insert the button div in proper location controlBar.insertBefore(tenSecBackButton, insertBackBeforeNode); controlBar.insertBefore(tenSecForwardButton, insertForwardBeforeNode); controlBar.insertBefore(volumeHolder, insertNewVolumeHolder); // +++ Add event handlers to jump back or forward +++ // Back button logic, don't jump to negative times tenSecBackButton.addEventListener("click", function() { var newTime, rewindAmt = jumpAmount, videoTime = myPlayer.currentTime(); if (videoTime >= rewindAmt) { newTime = videoTime - rewindAmt; } else { newTime = 0; } myPlayer.currentTime(newTime); }); // Forward button logic, don't jump past the duration tenSecForwardButton.addEventListener("click", function() { var newTime, forwardAmt = jumpAmount, videoTime = myPlayer.currentTime(), videoDuration = myPlayer.duration(); if (videoTime + forwardAmt <= videoDuration) { newTime = videoTime + forwardAmt; } else { newTime = videoDuration; } myPlayer.currentTime(newTime); }); }); }

CHECKLIST

5 Ways to Supercharge Your Strategy to Accelerate Growth


View Checklist

CHECKLIST

5 Ways to Supercharge Your Strategy to Accelerate Growth


View Checklist

A person holding a pen talks to another person
"); var playerHolderId = 'thisPlayer-' + videoID; addPlayer(videoID, playerHolderId); }); $("[href='#modal-6303382731001']").click(function(){ $("#6303382731001 .infomodal-modal").addClass("show"); var videoID = 6303382731001; var newID = "playerHolder-" + videoID; $("#" + newID).append("
"); var playerHolderId = 'thisPlayer-' + videoID; addPlayer(videoID, playerHolderId); }); $('.infomodal-modal-close').click(function(){ $(".thisplayer").remove(); }); $('.vjs-share-control').click(function(){ $('.vjs-social-share-links').appendTo(''); }); var queryString = window.location.search; var urlParams = new URLSearchParams(queryString); var videoID = urlParams.get('video_id'); if (videoID && videoID.length > 0) { var playerHolderId = 'playerHolder-undefined'; addPlayer(videoID, playerHolderId); } });
' + '
' + '
' + '

' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '

' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
'; // Inject the player code into the DOM document.getElementById(playerHolderId).innerHTML = playerHTML; // Add and execute the player script tag var s = document.createElement("script"); s.src = "https://players.brightcove.net/" + playerData.accountId + "/" + playerData.playerId + "_default/index.min.js"; // Add the script tag to the document document.body.appendChild(s); // Call a function to play the video once player's JavaScropt loaded s.onload = () => callback(videoID); } // +++ Initialize the player and start the video +++ function callback(videoID) { var thisPlayer = "brightcove-player-" + videoID; // myPlayer = bc(thisPlayer); // Can also use the following to assign a player instance to the variable if you choose not to use IDs for elements directly myPlayer = bc(document.getElementById(thisPlayer)); myPlayer.on("loadedmetadata", function() { // Mute the audio track, if there is one, so video will autoplay on button click myPlayer.muted(false); myPlayer.play(); $(".vjs-dock-title").each(function(i) { var videoID = $(this).closest('.video-js').attr('data-video-id'); $(this).attr('id', "vjs-dock-title-" + videoID); }); $(".vjs-dock-description").each(function(i) { var videoID = $(this).closest('.video-js').attr('data-video-id'); $(this).attr('id', "vjs-dock-description-" + videoID); }); $(".backButton").remove(); $(".forwardButton").remove(); $('div.vjs-volume-panel').attr('id', 'vjs-volume-panel'); $('div.vjs-playback-rate').attr('id', 'vjs-playback-rate'); $("#vjs-volume-panel").insertAfter("#vjs-playback-rate"); $('#vjs-dock-title-' + videoID).appendTo('#video-title-' + videoID); $('#vjs-dock-description-' + videoID).appendTo('#video-description-' + videoID); var firstVolume = document.querySelector(".vjs-volume-panel"); // +++ Create divs for buttons +++ var jumpAmount = 10, controlBar, insertBeforeNode, tenSecBackButton = document.createElement("div"), tenSecForwardButton = document.createElement("div"), backButtonImage = document.createElement("img"), forwardButtonImage = document.createElement("img"), volumeHolder = document.createElement("div"); // +++ Assign IDs for later element manipulation +++ tenSecBackButton.id = "backButton"; tenSecForwardButton.id = "forwardButton"; volumeHolder.id = "newVolumeHolder"; // +++ Assign properties to elements and assign to parents +++ backButtonImage.setAttribute("src","/content/dam/larry/images/icons/back10.png"); tenSecBackButton.appendChild(backButtonImage); tenSecBackButton.setAttribute("class","backButton"); forwardButtonImage.setAttribute("src","/content/dam/larry/images/icons/forward10.png"); tenSecForwardButton.appendChild(forwardButtonImage); tenSecForwardButton.setAttribute("class","forwardButton"); // +++ Get controlbar and insert elements +++ controlBar = myPlayer.$(".vjs-control-bar"); // Get the element to insert buttons in front of in conrolbar insertBackBeforeNode = myPlayer.$(".vjs-play-control"); insertForwardBeforeNode = myPlayer.$(".vjs-current-time"); insertNewVolumeHolder = myPlayer.$(".vjs-fullscreen-control"); // Insert the button div in proper location controlBar.insertBefore(tenSecBackButton, insertBackBeforeNode); controlBar.insertBefore(tenSecForwardButton, insertForwardBeforeNode); controlBar.insertBefore(volumeHolder, insertNewVolumeHolder); // +++ Add event handlers to jump back or forward +++ // Back button logic, don't jump to negative times tenSecBackButton.addEventListener("click", function() { var newTime, rewindAmt = jumpAmount, videoTime = myPlayer.currentTime(); if (videoTime >= rewindAmt) { newTime = videoTime - rewindAmt; } else { newTime = 0; } myPlayer.currentTime(newTime); }); // Forward button logic, don't jump past the duration tenSecForwardButton.addEventListener("click", function() { var newTime, forwardAmt = jumpAmount, videoTime = myPlayer.currentTime(), videoDuration = myPlayer.duration(); if (videoTime + forwardAmt <= videoDuration) { newTime = videoTime + forwardAmt; } else { newTime = videoDuration; } myPlayer.currentTime(newTime); }); }); }

WEBINAR

On and Off the Field: Reimagining Customer Experiences


Watch Webinar

WEBINAR

On and Off the Field: Reimagining Customer Experiences


Watch Webinar

Questions? Let’s talk.

Contact our team to get the assistance and answers you are looking for.

Questions? Let’s talk.

Contact our team to get the assistance and answers you are looking for.

Start chat

Request a
sales callback

Call Sales
800‑871‑9244

*Positive Business Outcome Programme available for a limited time to qualifying customers purchasing eligible new services with a 36‑month term agreement. Service credits will be issued in the amount of the Monthly Recurring Charges (MRC) for a single month associated with the eligible installed service. Taxes, fees, surcharges, non‑recurring charges, and/or usage charges are not included. Customer is eligible for MRC credits issued over the term of the agreement if the eligible installed service does not improve customer’s business in a measurable way, subject to certain time frames as defined in the Programme terms. Customer must contact Customer Service and provide a written request with sufficient detail to identify the business outcome measurement(s). If customer terminates or downgrades service early, customer will pay early termination fees as set forth in customer’s agreement plus an amount equal to any service credits received under this programme. Service and offer may not be available everywhere. Lumen may change, cancel or substitute offers and services, or vary them by service area at its sole discretion without notice. Credit approval and deposit may be required. Offer may not be combined with other offers. Additional restrictions, terms and conditions apply.

1IDC, The Business Value of Lumen IP Solutions, March 2024.

Powered by Translations.com GlobalLink Web SoftwarePowered by GlobalLink Web