Я обнаружил, что проще всего использовать swf-файлы для показа фильмов в браузере по двум причинам: простой в использовании javascript для управления ими, и они работают в старых браузерах.
(Любой формат фильма легко конвертировать в SWF).
Также есть упрощенная свобода swf, я довольно интенсивно смотрел на это время и не смог найти ни одного флеш-плеера, который позволил бы мне контролировать его на 100%, даже если бы я хотел потратить время на исследования и программирование.
И, к счастью для вас, у меня есть простая структура JS, которую я сделал для встраивания и управления фильмами на веб-странице (должен работать во всех браузерах) [Примечание: я тогда понимал классы JS даже меньше, чем сейчас, поэтому].
//http://www.adobe.com/support/flash/publishexport/scriptingwithflash/scriptingwithflash_03.html
function FlashController(name)
{
this.flashMovie = this.getFlashMovieObject(name);
this.getXPos = function()
{
return (this.flashMovie.TGetPropertyAsNumber("/", 0));
};
this.getYPos = function()
{
return (this.flashMovie.TGetPropertyAsNumber("/", 1));
};
this.getXScale = function()
{
return (this.flashMovie.TGetPropertyAsNumber("/", 2));
};
this.getYScale = function()
{
return (this.flashMovie.TGetPropertyAsNumber("/", 3));
};
this.getNextFrame = function()
{
return (this.flashMovie.TGetPropertyAsNumber("/", 4));
};
this.getCurrentFrame = function()
{
return (this.flashMovie.TGetPropertyAsNumber("/", 4) - 1);
};
this.getTotalFrames = function()
{
return (this.flashMovie.TGetPropertyAsNumber("/", 5));
};
this.getAlpha = function()
{
return (this.flashMovie.TGetPropertyAsNumber("/", 6));
};
this.getVisibility = function()
{
return (this.flashMovie.TGetPropertyAsNumber("/", 7));
};
this.getWidth = function()
{
return (this.flashMovie.TGetPropertyAsNumber("/", 8));
};
this.getHeight = function()
{
return (this.flashMovie.TGetPropertyAsNumber("/", 9));
};
this.getRotation = function()
{
return (this.flashMovie.TGetPropertyAsNumber("/", 10));
};
this.getTarget = function()
{
return (this.flashMovie.TGetProperty("/", 11));
}
this.getFramesLoaded = function()
{
return (this.flashMovie.TGetPropertyAsNumber("/", 12));
};
this.getName = function()
{
return (this.flashMovie.TGetProperty("/", 13));
};
this.getDropTarget = function()
{
return (this.flashMovie.TGetProperty("/", 14));
};
this.getURL = function()
{
return (this.flashMovie.TGetProperty("/", 15));
};
this.getHighQuality = function()
{
return (this.flashMovie.TGetProperty("/", 16));
};
this.getFocusRect = function()
{
return (this.flashMovie.TGetProperty("/", 17));
};
this.getSoundBufTime = function()
{
return (this.flashMovie.TGetProperty("/", 18));
};
this.setXPos = function(value)
{
this.flashMovie.TSetProperty("/", 0, value);
};
this.setYPos = function(value)
{
this.flashMovie.TSetProperty("/", 1, value);
};
this.setXScale = function(value)
{
this.flashMovie.TSetProperty("/", 2, value);
};
this.setYScale = function(value)
{
this.flashMovie.TSetProperty("/", 3, value);
};
this.setAlpha = function(value)
{
this.flashMovie.TSetProperty("/", 6, value);
};
this.setVisibility = function(value)
{
this.flashMovie.TSetProperty("/", 7, value);
};
this.setRotation = function(value)
{
this.flashMovie.TSetProperty("/", 10, value);
};
this.setName = function(value)
{
this.flashMovie.TSetProperty("/", 13, value);
};
this.setHighQuality = function(value)
{
this.flashMovie.TSetProperty("/", 16, value);
};
this.setFocusRect = function(value)
{
this.flashMovie.TSetProperty("/", 17, value);
};
this.setSoundBufTime = function(value)
{
this.flashMovie.TSetProperty("/", 18, value);
};
this.getVariable = function(path)
{
return (this.flashMovie.GetVariable(path));
};
this.gotoFrame = function(num)
{
var loaded = getFramesLoaded();
if(num > loaded)
{
return (this.flashMovie.GoToFrame(loaded));
}
return (this.flashMovie.GoToFrame(num));
};
this.isPlaying = function()
{
return (this.flashMovie.IsPlaying());
};
this.loadMovie = function(layerNum, url)
{
return (this.flashMovie.loadMovie(layerNum, url));
};
this.panPixels = function(hPx, vPx)
{
this.flashMovie.Pan(hPx, vPx, 0);
};
this.panPercent = function(hP, vP)
{
this.flashMovie.Pan(hP, vP, 1);
};
this.getPercentLoaded = function()
{
var value = Math.round(movieControls.getFramesLoaded()/movieControls.getTotalFrames() * 100);
if(isNaN(value))
{
value = 0;
}
return (value);
};
this.play = function()
{
this.flashMovie.Play();
};
this.rewind = function()
{
this.flashMovie.Rewind();
};
this.setVariable = function(path, value)
{
this.flashMovie.setVariable(path, value);
};
this.zoomRect = function(left, top, right, bottom)
{
this.flashMovie.SetZoomRect(left, top, right, bottom);
};
this.stop = function()
{
this.flashMovie.StopPlay();
};
this.zoom = function(percent)
{
this.flashMovie.Zoom(percent);
};
this.zoomReset = function()
{
this.flashMovie.Zoom(0);
};
this.callFrame = function(frame)
{
this.flashMovie.TCallFrame("/", frame);
};
this.callLabel = function(label)
{
this.flashMovie.TCallLabel("/", label);
};
this.currentLabel = function()
{
return (this.flashMovie.TCallLabel("/"));
};
this.goToFrame = function(num)
{
this.flashMovie.TGotoFrame("/", num);
};
this.goToLabel = function(label)
{
this.flashMovie.TGotoLabel("/", label);
};
/*
//Description: Generated as the Flash movie is downloading. The argument type is integer.
this.OnProgress = function(percent)
{
};
//Description: Generated when the ready state of the control changes.
//The possible states are:
//0=Loading, 1=Uninitialized, 2=Loaded, 3=Interactive, 4=Complete.
this.OnReadyStateChange = function(state)
{
};
//Description: Generated when an FSCommand action is performed in the movie with a URL
//and the URL starts with FSCommand :
//Use this to create a response to a frame or button action in the Flash movie.
//The argument type is string.
this.FSCommand = function(command, args)
{
};*/
this.nextFrame = function()
{
var nextFrame = getNextFrame();
if(nextFrame >= getTotalFrames())
{
nextFrame = 0;
}
goToFrame(nextFrame);
};
}
FlashController.prototype.getFlashMovieObject = function(movieName)
{
if (window.document[movieName])
{
return (window.document[movieName]);
}
if (navigator.appName.indexOf("Microsoft Internet")==-1)
{
if (document.embeds && document.embeds[movieName])
{
return (document.embeds[movieName]);
}
}
else // if (navigator.appName.indexOf("Microsoft Internet")!=-1)
{
return (document.getElementById(movieName));
}
}
FlashController.embedVideo = function(location, name, filePath, bgColor, width, height)
{
location.innerHTML += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" '
+ 'codebase="" id="' + name + '" width=' + width + ' height=' + height + '>'
+ '<param name="movie" value="' + filePath + '">'
+ '<embed play=false swliveconnect=true name="' + name + '" '
+ 'src="' + filePath + '" quality="high" '
+ 'bgcolor=' + bgColor + ' width=' + width + ' height=' + height + ' type="application/x-shockwave-flash">'
+ '</embed></object>';
}
Чтобы использовать (я думаю, это было некоторое время):
FlashController.embedVideo(nodeToPutItIn, "movie.swf", fullPathToSWF, backGroundColor, width, height); //Or simply hard code into the webpage.
var myMovie = new FlashController("movie.swf");
nodeToPutItIn.onMouseOver = "myMovie.play();"; //never actually done this command before so syntax might be off.
//Note: you have to wait for the movie to load if it is over a slow connection or it is big.
Если у вас есть более конкретные вопросы, не стесняйтесь спрашивать.