Создание веб-приложения для потоковой передачи флэш-видео с использованием внешнего API-интерфейса Actionscript 3. Я нахожусь на очень элементарной фазе проекта, где мы просто экспериментируем с внешним интерфейсом. Прямо сейчас у меня есть только флэш-объект и 3 кнопки для воспроизведения паузы и загрузки видео. Единственная кнопка, которая в данный момент настроена на что-либо, - кнопка загрузки. Мой swf и мой html-файл находятся в одной файловой системе, а мои видеофайлы - на другом сервере, трафик перенаправляется через медиа-сервер.
Когда я нажимаю кнопку загрузки, которая должна просто дать ему путь к видеофайлу на его сервере. Вместо этого он выдает ошибку, которая гласит «Ошибка: Ошибка вызова метода в NPObject».
Без лишних слов, здесь приведены фрагменты кода:
ACTIONSCRIPT:
function loadVideo(newVideo){
clearInterval(progressInterval);
videoFile = newVideo;
stream.play(videoFile, 0, 0);
videoPositions = "0,0";
};
ExternalInterface.addCallback( "loadVideo", loadVideo );
JAVSCRIPT: (в заголовке моего HTML-документа)
<head>
<title> External API Test</title>
<script type="text/javascript">
var player = getFlashMovie();
if (typeof MY == 'undefined')
{
MY = {};
}
MY.load = function()
{
console.log('load called');
getFlashMovie().loadVideo("/media/preview/09/04/38833_2_720X405.mp4");
};
function getFlashMovie()
{
var isIE = navigator.appName.indexOf('Microsoft') != -1;
return (isIE) ? window['MYVID'] : document['MYVID'];
}
</script>
</head>
HTML: (в том же документе, что и JavaScript)
<body>
<div> This is a test</div>
<div class='my-media-player'>
<object width="720" height="405" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,16,0" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id='MYVID'>
<param value="as3VideoPlayer.swf" name="movie">
<param value="high" name="quality">
<param value="true" name="play">
<param value="false" name="LOOP">
<param value="transparent" name="wmode">
<param value="always" name="allowScriptAccess">
<embed width="720" height="405" name='MYVID' allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" loop="false" play="true" src="as3VideoPlayer.swf" wmode="transparent">
</object>
<div>
<button type="button" class='play'>Play</button>
<button type='button' class='pause'>Pause</button>
<button type='button' class='load' onclick='MY.load()'>Load</button>
</div>
</div>
</body>
Где моя ошибка? Я читал во многих местах, что это проблема с безопасностью, но мои swf и html находятся в одной папке на моей локальной машине. Только файлы приходят извне, и в любом случае я думаю, что правильно установил настройки безопасности, когда объявляю свой флэш-плеер в теге объекта, но, возможно, я что-то там упускаю.
если вы не можете решить мой вопрос напрямую, может кто-нибудь объяснить, что означает «метод вызова ошибки в NPObject»? Я уверен, что он специфичен для общения по flash-js, потому что я никогда не видел его раньше, и это то, что я понял из моего поиска в Google.
Спасибо заранее.