Playlist:
").appendTo(controls); mbOptions = $("#multiBandwidthOptions"); createMultiBandwithAnchors(currentVideoHeight); multiBandwidth.hover(function () { mbOptions.show(); }, function () { mbOptions.hide(); }); }; // BUILD MULTI-BANDWIDTH PLAYER TOOL function createMultiBandwithAnchors(videoHeight) { videoHeight = checkVideoHeight(videoHeight); updateMultiBandwithAnchors(videoFilesObj, videoHeight); } // CHECK IF CURRENT VIDEO HEIGHT EXISTS function checkVideoHeight(heightToCheck) { var index = videoFilesObj.length - 1; tempHeight = videoFilesObj[index].height; for (var i = 0; i < videoFilesObj.length; i++) { if (videoFilesObj[i].height == heightToCheck) { tempHeight = videoFilesObj[i].height; break; } } return tempHeight; } // SET PLAYER SOURCE AND PLAY VIDEO function setPlayerSource(src) { videoHasPlayed = false; // INIT createMultiBandwithAnchors(currentVideoHeight); // RECREATE THE ANCHORS var time = myPlayer.getCurrentTime(); // GET THE CURRENT TIME myPlayer.setSrc(src); myPlayer.load(); playVideo(); // SET THE TIMER TO THE CURRENT TIME SO IT WILL BE AVAILABLE WHEN THE PLAYER IS RELOADED if (time > 0) { restartTimer = time; } } // The container element is relatively positioned. MediaElement js creates an absolutely // positioned element within. Absolutely positioned items do not respect the containment // of parent relatively positioned elements. This ensures the heights are constrained. function calculateVideoHeight() { if (debug) console.log('DVIDSPlayer() > calculateVideoHeight()'); var playerHeight = $('.DVIDSVideoPlayerItem video').height(); if (debug) console.log('DVIDSPlayer() > calculateVideoHeight', playerHeight); if (playerHeight) { $('.DVIDSVideoPlayer .video-column, .DVIDSVideoPlayerItem, .DVIDSVideoPlayerItemPlaceHolder').css("min-height", playerHeight + 20); $('.DVIDSVideoPlayerItem .mejs__video, .DVIDSVideoPlayerItem video').css('height', playerHeight); } } function debounce(func, wait, immediate) { var timeout; return function () { var context = this, args = arguments; var later = function () { timeout = null; if (!immediate) func.apply(context, args); }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) func.apply(context, args); }; }; function setAspectRatio() { if (debug) console.log('DVIDSPlayer() > setAspectRatio()'); // for portrait aspect ratio, need to wait till video is playing, then redetect height var loopCount = 0; var mainLoopId = setInterval(function () { loopCount++; calculateVideoHeight(); if (loopCount > 10) { clearInterval(mainLoopId); } if (debug) console.log('DVIDSPlayer() > setAspectRatio() > setInterval Running'); }, 500); } function playVideo() { document.getElementById('videoPlayer28724').play(); setAspectRatio(); //var playButton = $(".mejs-overlay-play"); //if (playButton.size() != 0) { // playButton.trigger("click"); //} } myPlayer = new MediaElementPlayer('videoPlayer28724', { videoWidth: '100%', videoHeight: '100%', //enableAutosize: true, pluginPath: "/DesktopModules/SharedLibrary/Plugins/MediaElement4.2.9/", hls: { debug: false, capLevelToPlayerSize: true, capLevelOnFPSDrop: true, startLevel: -1, abrMaxWithRealBitrate: true }, features: ["playpause", "progress", "current", "duration", "tracks", "volume", "fullscreen"], success: function (mediaElement, domObject) { $(".DVPPlayerBackground .mejs__poster-img").attr("alt", "U.S. Marines and Sailors with 3d Reconnaissance Battalion, 3d Marine Division, and Philippine Marines with Force Reconnaissance Group, conduct an amphibious insertion during Balikatan 23 at Marine Base Gregorio Lim, Philippines, April 18, 2023. Balikatan 2023 is the 38th iteration of the annual bilateral exercise between the Armed Forces of the Philippines and the U.S. military. The exercise includes three weeks of training focused on amphibious operations, command and control, humanitarian assistance, urban operations and counterterrorism skills throughout northern and western Luzon. Coastal defense training figures prominently in the Balikatan 23 training schedule."); mediaElement.addEventListener('playing', function (e) { if (defaultButton.length) { if (playEventButtonTriggered === false) { defaultButton.hide(); hoverButton.hide(); playEventButtonTriggered = true; } } if (playEventAlreadyTriggered === false) { DVIDSVideoAnalytics.track('play', analyticsParams); if(debug) { console.debug('DVIDSVideoAnalytics PLAY EVENT'); } playEventAlreadyTriggered = true; } }); mediaElement.addEventListener('play', function (e) { if ($(".mejs__controls").is(":hidden") ) $(".mejs__controls").show(); // if overlay exists, hide it if ($(".mejs__layer.video-overlay").length) $(".mejs__layer.video-overlay").hide(); setAspectRatio(); }); mediaElement.addEventListener('ended', function (e) { DVIDSVideoAnalytics.track('ended', analyticsParams); if(debug) { console.debug('DVIDSVideoAnalytics ENDED EVENT'); } //play next media var nextURL = "javascript:GetCCURL('https://www.hqmc.marines.mil/News/MarinesTV/?videoid=922871&dvpTag=Balikatan#DVIDSVideoPlayer28724')"; if (nextURL != "") { document.location = nextURL; } }); //$('#videoPlayer28724').css({'width': '100%', 'height':'100%'}); // EVENT LISTENER FOR WHEN VIDEO TIME HAS BEEN UPDATED mediaElement.addEventListener('timeupdate', function (e) { // IF VIDEO HAS NOT BEEN PLAYED AND SAVED POSITION IS GREATER THAN 0 if (!videoHasPlayed && restartTimer > 0) { // SET THE START TIME FROM THE RELATION IN SECONDS myPlayer.setCurrentTime(restartTimer); // SET THE VIDEO HAS PLAYED FLAG AND CLEAR THE TIMER // OTHERWISE KEEP CONTINUAL LOOP GOING BACK TO THIS TIME // THIS EVENT GETS CALLED AROUND EVERY 250MS videoHasPlayed = true; restartTimer = 0; } }, false); mediaElement.addEventListener('canplay', function (e) { CheckCaptions(); }, false); mediaElement.addEventListener('pause', function (e) { if (defaultButton.length) { defaultButton.removeAttr("style"); hoverButton.removeAttr("style"); playEventButtonTriggered = false; } }, false); mbOptions.delegate("a", "click", function () { var obj = $(this); if (obj.hasClass("chosenMBLink")) { return false; } else { mbOptions.find("a.chosenMBLink").removeClass("chosenMBLink"); obj.addClass("chosenMBLink"); currentVideoHeight = obj.html().substring(0, obj.html().length - 1); setPlayerSource(obj.attr("fileurl")); } mbOptions.hide(); return false; }); // ASSIGN CAPTIONS SELECTOR TO JQUERY OBJECT, SET CLICK DELEGATE AND TURN ON CAPTIONS IF PREVIOUSLY ENABLED captionsSelector = $("div.mejs-captions-selector"); captionsSelector.delegate("input:radio", "click", function () { var lang = this.value; if (lang == "none") { dvpCCEnabled = false; } else { dvpCCEnabled = true; } }); turnOnCaptionsIfEnabled(); } }); $window.on("resize", function () { if ($(".mejs__time-total.mejs__time-slider").attr("aria-valuemax") == "NaN") { $(".mejs__time-total.mejs__time-slider").attr("aria-valuemax",49); } var debouncedFn = debounce(calculateVideoHeight, 250); debouncedFn(); }); // AUTOMATICALLY PLAY VIDEO IF ID PASSED OR VIDEO CLICKED if (true) { playVideo(); //document.getElementById('videoPlayer28724').play(); } }); function updateMultiBandwithAnchors(files, videoHeight) { var mbOptions = $("#multiBandwidthOptions"); var multiBandwidthHTML = []; for (var i = 0; i < files.length; i++) { if (i == files.length - 1) { multiBandwidthHTML.unshift("" + files[i].height + "p"); } else { if (files[i].height != files[i+1].height) { multiBandwidthHTML.unshift("" + files[i].height + "p"); } } } multiBandwidthHTML.push("
"); mbOptions.html(multiBandwidthHTML.join("")); var mbAnchors = mbOptions.children("a"); for (i = 0; i < mbAnchors.length; i++) { if (mbAnchors.eq(i).html() == videoHeight + "p") { mbAnchors.eq(i).addClass("chosenMBLink"); } } mbOptions.css("height", 20 * mbAnchors.length); } function PlayAssetAJAX(id) { var baseUrl = $.ServicesFramework().getServiceRoot('DVIDSVideoPlayer'); $.ajax({ type: "GET", url: baseUrl + "Public/GetAsset?id=" + id, headers: { "ModuleId": 28724, "TabId": 13626, "RequestVerificationToken": $("input[name='__requestverificationtoken']").val() }, success: function (data) { // remove the poster so the initial poster doesn't display while switching videos. $(".DVPPlayerBackground .mejs__poster").css("background-image", ""); $(".DVPPlayerBackground .mejs__poster-img").removeAttr("src"); $(".DVPPlayerBackground video").removeAttr("poster"); // analytics playEventAlreadyTriggered = false; gaUrl = data.AnalyticsUrl; gaTitle = data.AnalyticsTitle; gaID = data.ID; // play through mediaelementjs $("#MediaCaption" + id).attr('src', data.CaptionsUrl); myPlayer.rebuildtracks(); myPlayer.setSrc(data.Video.HlsSrc); myPlayer.play(); updateMultiBandwithAnchors(data.Bandwidth, 700); }, error: function () { if(debug) { console.log("error loading asset"); } } }); } Video by Cpl. Scott Aubuchon, Cpl. Scott Aubuchon
Balikatan 23 | 3d Reconnaissance Battalion, PMC Force Reconnaissance Group Conduct amphibious insertion
Exercise Balikatan
April 18, 2023 | 0:49
U.S. Marines and Sailors with 3d Reconnaissance Battalion, 3d Marine Division, and Philippine Marines with Force Reconnaissance Group, conduct an amphibious insertion during Balikatan 23 at Marine Base Gregorio Lim, Philippines, April 18, 2023. Balikatan 2023 is the 38th iteration of the annual bilateral exercise between the Armed Forces of the Philippines and the U.S. military. The exercise includes three weeks of training focused on amphibious operations, command and control, humanitarian assistance, urban operations and counterterrorism skills throughout northern and western Luzon. Coastal defense training figures prominently in the Balikatan 23 training schedule. (U.S. Marine Corps video by Cpl. Scott Aubuchon)
More
Tags
BalikatanFriendsPartnersAlliesBK23Balikatan 23
More
Up Next
More Videos