Как сделать сглаживание воспроизводимого видео в нашем flash-плеере

Полдня убил пытаясь разобраться отчего в созданном мной flash видео плеере страшная пикселизация - пиксели в режиме fullscreen настолько огромные, что глазам становилось больно, и ни о каком комфортном просмотре речи быть не может. При этом сторонние плееры эти же видео-файлы воспроизводили без этой самой пикселизации.

Думал проблема в компоненте FLVPlayBack. Обновил свой Adobe Flash - безрезультатно, пикселизация видео осталась. Скомпилировал видео-плеер из сорцов взятых с форума - та же проблема!

А потом меня озарило - видео-плееры просто используют сглаживание, стирая грани между пикселями. Долго искал решение по сглаживанию в FLVPlayBack - вопрос плохо освещён, спасибо какому-то немецкому блогу.

Итак, лезем в первый слой первый кадр и редактируем там действия. Строки кода, которые включают сглаживание воспроизведения видео для компоненты FLVPlayBack выделены жирным (остальное код моего нехитрого видео-плеера):

import fl.video.VideoPlayer;
stop();

var my_flv:String = loaderInfo.parameters[”myflv”];
this.bbb.source=my_flv;

var videoplayer:VideoPlayer = this.bbb.getVideoPlayer(0);
videoplayer.smoothing = true;

Вуаля! Теперь наш flas видео плеер стал по-человечески делать сглаживание воспроизводимого видео!

Где? Где старый добрый собутыльник и балагур? К чему эти сопли “видеосъемка свадьбы“? Даёш больше сайтов с татушками на гениталиях ;)

Как передать нашему Flash плееру ссылки на видео-файлы

Первый момент который меня заставил задуматься после создания flash видео плеера - это как же мой плеер будет принимать ссылки на видео. Компонента FLVPlayBack позволяет через свойства в зашить ссылку на один flv-файл. А нас понятное дело это не устраивает, нам нужен один единственный flash-плеер которому мы могли бы передавать ссылки на множество разных flv-видео-файлов.

Собственно для этих целей в Flash-е служат FlashVars

<script language=”javascript”>
if (AC_FL_RunContent == 0) {
alert(”This page requires AC_RunActiveContent.js.”);
} else {
AC_FL_RunContent(
‘codebase’, ‘http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0′,
‘width’, ‘550′,
‘height’, ‘400′,
’src’, ‘вЕЪЩНСООЩК-1′,
‘quality’, ‘high’,
‘pluginspage’, ‘http://www.macromedia.com/go/getflashplayer’,
‘align’, ‘middle’,
‘play’, ‘true’,
‘flashvars’, ‘myflv=40.flv’,
‘loop’, ‘true’,
’scale’, ’showall’,
‘wmode’, ‘window’,
‘devicefont’, ‘false’,
‘id’, ‘вЕЪЩНСООЩК-1′,
‘bgcolor’, ‘#ffffff’,
‘name’, ‘вЕЪЩНСООЩК-1′,
‘menu’, ‘true’,
‘allowFullScreen’, ‘true’,
‘allowScriptAccess’,’sameDomain’,
‘movie’, ‘вЕЪЩНСООЩК-1′,
’salign’, ”
); //end AC code
}
</script>
<noscript>
<object classid=”clsid:d27cdb6e-ae6d-11cf-96b8-444553540000″ codebase=”http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0″ width=”550″ height=”400″ id=”вЕЪЩНСООЩК-1″ align=”middle”>
<param name=”allowScriptAccess” value=”sameDomain” />
<param name=”allowFullScreen” value=”true” />
<param name=”FlashVars” value=”myflv=40.flv” />
<param name=”movie” value=”вЕЪЩНСООЩК-1.swf” /><param name=”quality” value=”high” /><param name=”bgcolor” value=”#ffffff” /> <embed src=”вЕЪЩНСООЩК-1.swf” mce_src=”вЕЪЩНСООЩК-1.swf” quality=”high” bgcolor=”#ffffff” width=”550″ height=”400″ name=”вЕЪЩНСООЩК-1″ align=”middle” allowScriptAccess=”sameDomain” allowFullScreen=”true” flashvars=”myflv=40.flv” type=”application/x-shockwave-flash” pluginspage=”http://www.macromedia.com/go/getflashplayer” />
</object>
</noscript>

В этом коде (который мы будем вставлять в свою страницу для отображения плеера) flashvars установлены в трех местах - по одному на каждый случай жизни :) Внимание! Если FlashVars будут указаны некорректны хотя бы в одном месте или противоречить друг другу, то Ваш плеер рискует просто не принять их. Я потерял полдня ломая голову отчего у меня не работал плеер, пока случайно не заметил лишний один-единственный символ в одном месте размещения.

Думаю объяснять не надо что во FlashVars в моем случае передается адрес видио которое надо воспроизвести 40.flv, видео-файл расположен в одной локальной папке с плеером.

Но это пол дела - теперь нам надо принять скриптом адрес видео-файла и пустить его на воспроизведение. Для этого в первом слое в первом кадре создаем действие и  пишем туда код:

var my_flv:String = loaderInfo.parameters[”myflv”];
this.bbb.source=my_flv;

Дело в шляпе теперь наш flash-видео-плеер умеет принимать ссылки на видео-файлы из вне, т.е. из FlashVars.

P.S. Андрей, какая свадьба? К чему все эти сентименты? Только двери и Могилёв, Могилёв и двери!

Создать свой собственный flash видео плеер легко

Казалось бы как это должно быть все сложно. Ан нет, господа - Adobe Flash имеет в своем составе компоненту FLVPlayBack, с которой создание собственного flash видео плеера займет всего пару минут.

Создать можно flash-плеер своей мечты тремя способами:

1. Использовать пошаговый мастер
2. Просто перетянуть компоненту FLVPlayBack в рабочую область из панели компонентов
3. Вызвать компоненту FLVPlayBack програмно с помощью ActionScript

Для заметки этого хватит - верное направление есть, а далее самостоятельно разберетесь в интерфейсе Adobe Flash. Успехов Вам в создании собственного Flash видео плеера.

P.S. Равно как успехов и Андрону, у которого Вы можете заказать создание сайта любой сложности.