Changeset 29877 for main/trunk/model-sites-dev/respooled/collect/popup-video-respooled/js/media-player.js
- Timestamp:
- 2015-05-14T13:56:53+12:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/model-sites-dev/respooled/collect/popup-video-respooled/js/media-player.js
r29867 r29877 1 // Sample Media Player using HTML5's Media API 1 "use strict"; 2 3 // Based on: 4 // Sample Media Player using HTML5's Media API 2 5 // 3 6 // Ian Devlin (c) 2012 … … 16 19 var progressBar; 17 20 21 var mediaPlaybackMode = null; 22 18 23 var mediaStartPlayTime; 19 24 var mediaStartPauseTime; 20 25 var mediaPlayedNotes; 21 26 27 var recordedNotesArray = null; 28 22 29 function initialiseMediaPlayer() { 30 31 setPlaybackMode(); 23 32 24 33 mediaStartPlayTime = null; … … 54 63 }); 55 64 56 57 58 59 60 61 62 63 64 65 // Add a listener for the play and pause events so the buttons state can be updated 66 mediaPlayer.addEventListener('play', function() { 67 // Change the button to be a pause button 68 changeButtonType(playPauseBtn, 'buttonx2 pause'); 69 }, false); 70 mediaPlayer.addEventListener('pause', function() { 71 // Change the button to be a play button 72 changeButtonType(playPauseBtn, 'buttonx2 play'); 73 }, false); 65 74 66 // need to work on this one more...how to know it's muted? 67 mediaPlayer.addEventListener('volumechange', function(e) { 68 // Update the button to be mute/unmute 69 if (mediaPlayer.muted) changeButtonType(muteBtn, 'button unmute'); 70 else changeButtonType(muteBtn, 'button mute'); 71 }, false); 72 mediaPlayer.addEventListener('ended', function() { this.pause(); }, false); 75 // need to work on this one more...how to know it's muted? 76 mediaPlayer.addEventListener('volumechange', function(e) { 77 // Update the button to be mute/unmute 78 if (mediaPlayer.muted) changeButtonType(muteBtn, 'button unmute'); 79 else changeButtonType(muteBtn, 'button mute'); 80 }, false); 81 82 mediaPlayer.addEventListener('ended', stopPlayer, false); 73 83 } 74 84 75 85 function togglePlayPause() { 76 // If the mediaPlayer is currently paused or has ended 86 // If the mediaPlayer is currently paused or has ended 87 console.log("togglePlayPause()"); 88 //console.log("*** mediaPlayer (paused,ended): (" + mediaPlayer.paused + "," + mediaPlayer.ended + ")"); 89 //console.log("*** currentTime = " + mediaPlayer.currentTime); 90 77 91 if (mediaPlayer.paused || mediaPlayer.ended) { 78 92 if (mediaStartPlayTime == null) { 93 // Fresh play start 94 console.log("**** mediaPlaybackMode = " + mediaPlaybackMode); 95 79 96 mediaStartPlayTime = Date.now(); 80 97 //console.log("*** mediaStartPlayTime=" + mediaStartPlayTime); … … 83 100 } 84 101 else { 102 // Resume playing 85 103 var mediaPauseBuildup = mediaStartPauseTime - Date.now(); 86 104 … … 98 116 // Otherwise it must currently be playing 99 117 else { 100 mediaPauseTime = Date.now(); 118 // put into pause state 119 120 mediaStartPauseTime = Date.now(); 101 121 102 122 // Change the button to be a play button … … 109 129 } 110 130 111 function pad(n, width, z) {131 function _pad(n, width, z) { 112 132 z = z || '0'; 113 133 n = n + ''; … … 118 138 { 119 139 var int_mins = Math.floor(time / 60); 120 121 140 var float_secs = time % 60; 122 //var int_secs = Math.floor(float_secs); 123 124 //var float_sub_sec = float_secs - int_secs; 125 //var int_sub_sec = float_sub_sec.toFixed(2) 126 127 var padded_secs = pad(float_secs.toFixed(1),4); // (2), 5 for 2 dec place 141 142 var padded_secs = _pad(float_secs.toFixed(1),4); // (2), 5 for 2 dec place 128 143 return int_mins + ":" + padded_secs 129 144 } … … 145 160 146 161 // Stop the current media from playing, and return it to the start position 162 147 163 function stopPlayer() 148 164 { 165 console.log("stopPlayer()"); 149 166 mediaPlayer.pause(); 167 168 if (mediaPlaybackMode == "record") { 169 recordedNotesArray = mediaPlayedNotes[String(mediaStartPlayTime)]; 170 if (recordedNotesArray.length>0) { 171 // non-trival data recorded 172 $('#save-recording-popup').dialog('open'); 173 } 174 } 175 176 mediaStartPlayTime = null; 177 mediaStartPauseTime = null; 178 150 179 mediaPlayer.currentTime = 0; 151 180 displayCurrentTime(); 181 152 182 } 153 183 … … 180 210 mediaPlayer.play(); 181 211 } 212 213 214 182 215 183 216 // Update the progress bar … … 235 268 } 236 269 270 237 271 // Resets the media player 238 272 function resetPlayer() { … … 246 280 displayCurrentTime(); 247 281 // Ensure that the play pause button is set as 'play' 248 changeButtonType(playPauseBtn, 'play'); 249 } 282 changeButtonType(playPauseBtn, 'buttonx2 play'); 283 } 284 285 286 function setPlaybackMode() 287 { 288 //console.log("setPlaybackMode()"); 289 mediaPlaybackMode = $('input[name=mpm-radio]:checked', '#mpmForm').val(); 290 } 291 292 293 294 function saveRecording() 295 { 296 var valid = true; 297 298 var $save_name_input = $("#save-recording-name"); 299 var save_name = $save_name_input.val(); 300 301 if (save_name.match(/^\s*$/)) { 302 valid = false; 303 $save_name_input.addClass( "ui-state-error" ); 304 } 305 else { 306 console.log("**** Saving under name '" + save_name +"': " + JSON.stringify(recordedNotesArray)); 307 308 var $dialog = $('#save-recording-popup'); 309 310 $dialog.dialog( "close" ); 311 } 312 313 return valid; 314 } 315 316 317 $(document).ready(function() { 318 // Setup dialog 319 320 var dialog = $('#save-recording-popup').dialog({ 321 width : 500, 322 height: 350, 323 autoOpen: false, // Do not open on page load 324 modal: true, // Freeze the background behind the overlay 325 326 show: { 327 effect: "blind", 328 duration: 1000 329 }, 330 hide: { 331 effect: "blind", 332 duration: 500 333 }, 334 335 buttons: { 336 "Save Recording": saveRecording, 337 Cancel: function() { 338 dialog.dialog("close"); 339 } 340 }, 341 close: function() { 342 form[0].reset(); 343 $( "#save-recording-name" ).removeClass( "ui-state-error" ); 344 } 345 }); 346 347 var form = dialog.find( "form" ).on( "submit", function( event ) { 348 event.preventDefault(); 349 }); 350 351 352 }); 353
Note:
See TracChangeset
for help on using the changeset viewer.