2012-07-11 1 views
2

mediaelement.js을 사용하여 mp3/mp4/wmv를 재생하는 페이지에서 작업하고 있습니다 (예, 우리는 wmv가 많습니다). 링크 목록이있어 링크가 플레이어를 변경해야합니다. 내 노력은 페이지를 새로 고치지 않도록 자바 스크립트를 통해 플레이어를 변경하는 것입니다.MediaElement.js setSrc() 파일을로드하지만 플러그인 유형을 변경하지 않습니다.

이 코드는 작동하지만 항상 새로 고침됩니다.

<?php 
$file = null; 
$file = $_GET["file"]; 
$format = null; 
if (preg_match("/mp4/i", $file)) $format = "mp4"; 
if (preg_match("/webm/i", $file)) $format = "webm"; 
if (preg_match("/wmv/i", $file)) $format = "wmv"; 
if (preg_match("/mp3/i", $file)) $format = "mp3"; 
if (preg_match("/ogg/i", $file)) $format = "ogg"; 
$mime = null; 
if ($format == "mp4") $mime = "video/mp4"; 
if ($format == "webm") $mime = "video/webm"; 
if ($format == "wmv") $mime = "video/wmv"; 
if ($format == "mp3") $mime = "audio/mp3"; 
if ($format == "ogg") $mime = "audio/ogg"; 
$element = "video"; 
if ($format == "mp3" || $format == "ogg") $element = "audio"; 
// you have to escape (\) the escape (\) character (hehehe...) 
$poster = "media\\120701Video.jpg"; 
$height = "360"; 
if ($format == "mp3") $height = "30"; 
?> 
<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Embed</title> 
<link rel="stylesheet" href="include/johndyer-mediaelement-b090320/build/mediaelementplayer.min.css"> 
<style> 
audio {width:640px; height:30px;} 
video {width:640px; height:360px;} 
</style> 
<script src="include/johndyer-mediaelement-b090320/build/jquery.js"></script> 
<script src="include/johndyer-mediaelement-b090320/build/mediaelement-and-player.js"></script> 
</head> 
<body> 
<ul> 
    <li><a href="embed.php">Reset</a></li> 
    <li><a href="?file=media/120701Video-AnyVideoConverter.mp4">Alternative (mp4)</a></li> 
    <li><a href="?file=media/120701Video-Ffmpeg-Defaults.webm">Alternative (webm)</a></li> 
    <li><a href="?file=media/AreYouHurting-Death.wmv">Alternative (wmv)</a><li> 
    <li><a href="?file=media/AreYouHurting-Death.mp3">Alternative (mp3)</a></li> 
</ul> 
<?php if ($file) { ?> 
<video src="<?php echo $file; ?>" controls poster="<?php echo $poster; ?>" width="640" height="360"></video> 
<div id="type"></div> 
<script> 
var video = document.getElementsByTagName("video")[0]; 
var player = new MediaElementPlayer(video, { 
    success: function(player) { 
     $('#type').html(player.pluginType); 
    } 
}); 
<?php } ?> 
</script> 
</body> 
</html> 

이 코드는 플레이어 모드 (pluginType)이 설정되도록 <video>가 처음과 파일을로드 할 것을 요구 (링크 제거). 그러면 사전 설정된 모드가 지원하는 형식 만 재생됩니다 (기본 모드의 firefox는 mp4를 재생하지 않습니다). live demo of the ajax version을 참조하십시오. 내가 setType() 같은 뭔가가 필요 같은

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Embed</title> 
<link rel="stylesheet" href="http://www.mediaelementjs.com/js/mejs-2.9.2/mediaelementplayer.min.css"> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
<script src="http://www.mediaelementjs.com/js/mejs-2.9.2/mediaelement-and-player.js"></script> 
</head> 
<body> 
<ul> 
    <li><a href="javascript:player.pause(); player.setSrc('media/120701Video-AnyVideoConverter.mp4'); player.load(); player.play();">Alternative (mp4)</a></li> 
    <li><a href="javascript:player.pause(); player.setSrc('media/120701Video-Ffmpeg-Defaults.webm'); player.load(); player.play();">Alternative (webm)</a></li> 
    <li><a href="javascript:player.pause(); player.setSrc('media/AreYouHurting-Death.wmv'); player.load(); player.play();">Alternative (wmv)</a></li> 
    <li><a href="javascript:player.pause(); player.setSrc('media/AreYouHurting-Death.mp3'); player.load(); player.play();">Alternative (mp3)</a></li> 
</ul> 
<video controls src="media/WordProductionCenter.mp4"></video> 
<div id="type"></div> 
<script> 
var video = document.getElementsByTagName("video")[0]; 
var player = new MediaElementPlayer(video, { 
    success: function(player) { 
     $('#type').html(player.pluginType); 
    } 
}); 
</script> 
</body> 
</html> 

이 보인다,하지만 난 그런 옵션이 표시되지 않습니다. 나는 JavaScript를 실행 한 후 DOM을 새로 고치는 참조 된 몇 페이지를 읽었지만, 성공적으로 할 수 없었습니다. (자바 스크립트를 충분히 해킹하여 물건을 작동시키고 완전히 새로운 것을 만들 수는 없습니다. 소지품).

Silverlight는 Internet Explorer 8 또는 Safari (내 코드, mejs 또는 브라우저인지 확실하지 않음)에서 작동하지 않습니다. 또한 Silverlight와 Flash는 mp3 또는 webm을 재생하지 않습니다 (다시 말하지만 문제가있는 곳은 확실하지 않음).

다른 유형의 파일을 미디어 요소에 동적으로로드하는 방법이 있습니까?

+0

글쎄, 나는 이것을 포기했다. 나는 그것이 내가 기대했던대로 작동하도록 할 수 없다. 다른 프로젝트에서 ... – doubleJ

답변

8

값 배열을 허용하는 setSrc을 사용하여 MediaElement 플레이어의 소스를 변경할 수 있습니다. 예 :

player.setSrc([ 
    { src:'newfile.mp4', type:'video/mp4' }, 
    { src:'newfile.webm', type:'video/webm' } 
]); 
+0

.setSrc를 사용했지만 유형을 추가하지 않았습니다. 그게 어떤 변화가 있는지 알게 될 것입니다. – doubleJ

+2

감사합니다. 감사합니다. Mac을 창밖으로 던져서이 솔루션을 몇 시간 동안 사냥했습니다. – NightMICU

+2

당시 나는 그랬다! –

1

나를 위해 작동합니다!

if (video == undefined) 
     video = new MediaElementPlayer('#playerVideo'); 

    video.pause(); 
    video.setSrc($("#linkVideo").val()); 
    video.media.load(); 
    video.play();