Adobe flash 9.0.115.0 que ya se encuentra disponible para descargar trae como novedad el soporte de video en alta resolución bajo el estándar h.264 o MPEG-4 parte 10. Este formato de compresión está diseñado para mejorar notablemente la calidad del video y su compresión con relación a la calidad / peso, logrando una excelente imagen, sea a modo ventana como fullscreen. En versiones anteriores de Flash Player cuando usábamos un componente de video o la clase netStream estábamos limitados a solo poder llamar archivos FLV, pero ya en esta nueva versión podremos llamar y cargar archivos FLV, MOV, MP4 y 3GP.
Lamentablemente el Flash Video Encoder no codifica en h.264 y por lo tanto lo deberemos hacer desde otros programas como por ejemplo Adobe Premier.
A continuación les dejo un ejemplo como siempre para que puedan verlo funcionar y puedan descargárselo. Recuerda que si no ves el video es porque tu Flash Player es antiguo.
IMPORTANTE: Cuando usen video h.264 en sus proyectos recuerden que para pre visualizarlos lo deben hacer desde su navegador web.
Action:
-
//url del video, en este caso lo levantamos de apple
-
var URLvideo:String = "http://movies.apple.com/movies/disney/wall-e/wall-e-vignette_h480p.mov";
-
//definimos variables
-
var duracion:Number = 0;
-
var ancho:Number = 0;
-
var alto:Number = 0;
-
var anchoInicial:Number = Stage.width;
-
var anchoMax:Number = System.capabilities.screenResolutionX;
-
//escuchador para nuestro Stage
-
var escuchador:Object = new Object();
-
var escala:Number = 100;
-
//nuestro campo de texto y posicion
-
datos_txt.html = true;
-
datos_txt.wordWrap = true;
-
datos_txt._x = datos_txt._y=10;
-
//creamos un objeto para la recepcion del flujo de video
-
var mi_nc:NetConnection = new NetConnection();
-
mi_nc.connect(null);
-
//creamos un controlador para el video
-
var stream_ns:NetStream = new NetStream(mi_nc);
-
stream_ns.setBufferTime(10);
-
//
-
mi_video.attachVideo(stream_ns);
-
//suavizamos el video
-
mi_video.smoothing = true;
-
//posicionamos al centro de la pantalla el video
-
mi_video._x = (Stage.width/2)-(mi_video._width/2);
-
mi_video._y = (Stage.height/2)-(mi_video._height/2);
-
stream_ns.play(URLvideo);
-
//leemos la duracion del video, ancho y alto del video
-
stream_ns.onMetaData = function(infoObject:Object) {
-
duracion = Number(Math.floor(infoObject.duration));
-
ancho = Number(Math.floor(infoObject.width));
-
alto = Number(Math.floor(infoObject.height));
-
};
-
//calculamos buffer, tiempo, fps y segundos reproducidos
-
var bufferInterval:Number = setInterval(checkBufferTime, 100, stream_ns);
-
function checkBufferTime(stream_ns:NetStream):Void {
-
var bufferPorc:Number = Math.min(Math.round(stream_ns.bufferLength/stream_ns.bufferTime*100), 100);
-
datos_txt.htmlText = "<span style="color: #ff0000;"><strong><span style="text-decoration: underline;">ESTADISTICAS</span></strong></span>";
-
datos_txt.htmlText += "<strong>Tiempo de buffer: </strong>"+stream_ns.bufferTime+"''";
-
datos_txt.htmlText += "<strong>Porcentaje en buffer: </strong> "+bufferPorc+"%";
-
datos_txt.htmlText += "<strong>FPS: </strong>"+Math.floor(stream_ns.currentFps);
-
datos_txt.htmlText += "<strong>Segundos transcurridos: </strong>"+Math.floor(stream_ns.time)+"'' de "+duracion+"''";
-
datos_txt.htmlText += "<strong>Ancho: </strong>"+ancho+"px | <strong>Alto: </strong>"+alto+"px";
-
}
-
//accion para el boton pantalla completa
-
full_btn._x = Stage.width-(full_btn._width+10);
-
full_btn._y = 10;
-
full_btn.onRelease = function() {
-
Stage.displayState = Stage.displayState == "normal" ? "fullScreen" : "normal";
-
};
-
//acciones si se cambio el estado de la pantalla
-
escuchador.onResize = function() {
-
//porcentaje de escala para el video
-
escala = Math.floor((Stage.width/848)*100);
-
//
-
if (Stage.displayState == "normal") {
-
mi_video._width = ancho;
-
mi_video._height = alto;
-
} else {
-
mi_video._width = (ancho*escala)/100;
-
mi_video._height = (alto*escala)/100;
-
}
-
reacomodar();
-
};
-
Stage.addListener(escuchador);
-
//reacomodar los elementos segun el estado de la pantalla
-
function reacomodar() {
-
full_btn._x = Stage.width-(full_btn._width+10);
-
full_btn._y = 10;
-
mi_video._x = (Stage.width/2)-(mi_video._width/2);
-
mi_video._y = (Stage.height/2)-(mi_video._height/2);
-
}
2 agosto, 2008 at 12:28 pm
¿Que hay que tener en el escenario? ¿un componente de video?¿de que tipo?. Tengo instalado Flash Player 10 y no consigo ver el video aunque si oigo el sonido.
3 agosto, 2008 at 10:11 pm
Como veras en el ejemplo se coloca un video linqueado creado en la galeria y por medio de las clases netstream y netconnetion se hace que se pueda reproducir el video, pero tu problema debe estar en la versión de flash player que usas, ya que la 10 es una beta
Pingback: rinobox.com » Blog Archive » Adobe Flash Player 9 con soporte para Video h.264 o de alta definición (HD)
10 septiembre, 2008 at 1:44 pm
Antes que nada Gracias Leo, por estos codigos que me facilitaron mucho poner videos en mi web, pero estoy intentando sumarle a este codigo de videos h264 un preloader y un controlador y todo lo que intente no me funciono... alguna idea de como sumarle esos dos temitas?
Gracias de antemano
11 septiembre, 2008 at 1:38 pm
Hola Esteban, si te fijas ya esa funcionalidad esta puesta en esta funcion checkBufferTime()
como veras solo lo que hace es imprimir el tiempo de buffer que cargo del vídeo, lo que puedes hacer es mostrarlos en una barra o un iconito que diga cargando, puedes mostrarlo o no dicho icono utilizando la funcion onStatus (controlador NetStream.onStatus)con esto pudras desencadenar eventos según el vídeo este cargado, sin buffer, si finalizo o si no se pudo encontrar el archivo, si sigues sin conseguirlo envíame un mail.
11 diciembre, 2008 at 11:40 am
El ejemplo que has subido esta en cs3? Porque no puedo abrirlo con flash 8, que es la verson que tengo.Gracias, Rakeljuice
17 enero, 2009 at 7:05 pm
Te escribo solo para darte las gracias!, enserio que sorprendente que haya personas como tu compartan sus conocimiento mas aún cuando estamos en un mundo tan competitivo.
Si tengo alguna duda te aviso jeje
...Saludos
20 enero, 2009 at 8:18 am
Estoy atrapado... no consigo hacer que sea sólo el video el que ocupe la pantalla y no aparezca el resto de la web.
Dentro de un reproductor de listas de videos... tengo un boton que hace esto...
que codigo faltaría poner para que sólo ver el video y no el resto de la web.
gracias de antemano
alex
20 enero, 2009 at 5:19 pm
aca esta como lo solucione yo
16 marzo, 2009 at 1:04 pm
Una pregunta, como seria para controlar el audio del clip ?
21 marzo, 2009 at 1:16 am
Podes de esta manera:
24 marzo, 2009 at 11:29 pm
Hola Leo, esta muy bueno tu ejemplo, te sacaste un 10, sólo una pregunta, cómo le hago para poder reproducir varios videos por medio de una lista en xml o algo asi???
Gracias!!!!!!
5 abril, 2009 at 3:46 pm
hola leo, la web como siempre muy buena, quisrea saber si este reproductor soporta rtmp stream ,porque quisiera ponerle mi cam y que transmita en vivo,ne podrias ayudar con algun tutorial gracias de antemano por siempre ayudar a los demas,suerte
14 abril, 2009 at 3:19 pm
Hola leo:
Necesito ayuda para poner varios videos en mi web.
El tema es que pude con un video, pero cuando quiero salir de la galeria videos
este queda y no se va.
Agradeceria muchisimo algunos consejos.
este es el script que estoy utilizando.
stop();
//Cargo el video youtube
loadMovieNum("http://www.youtube.com/v/T3VfVtm3m8g",99);
mc = _root.createEmptyMovieClip("controlador",1000);
mc.nivel=99;
mc.onEnterFrame = function()
{
if (_level99._width>0 && _level99._height>0)
{
//Le cambio el tamaño del video
_level99._width=5000;
_level99._height=3000;
//Le doy la posicion que quiero que tenga el video
_level99._x=400;
_level99._y=210;
this.removeMovieClip();
}
}
7 febrero, 2011 at 12:23 am
Estimado leo. este tema es bastante viejo aca en tu web pero es justo lo que necesito para mi, el problema es que tanto en el link de tu ejemplo con en los archivos que pones sale NO SE ENCONTRO EL VIDEO, mi server tiene la CURL activas, ademas deve ser mal el mismo archivo ya que ni en tu web de ejemplo funciona.
Te rograria abusando de tu bondad que me digas cual puede ser el problema. mi mail es ansisweb@hotmail.com