Comunidad de diseño web y desarrollo en internet online

Problemas de conexion con protocolo RTMP

Citar            
MensajeEscrito el 20 May 2009 10:22 am
Necesito ayuda en esto xq estoy bastante desorientado...

Tengo que cojer el video desde un servidor con protocolo RTMP, pero no me lo coje no se porque :S

Lo he mirado en internet y se supone que con este codigo deberia funcionar :S

Aqui os dejo mi codigo:

Código :

var videoURL:String = "rtmp://servidor";
var conexion:NetConnection = new NetConnection();
conexion.connect(null);
var stream:NetStream = new NetStream(conexion);
stream.play(videoURL);



Me da el siguiente error :
Error #2044: NetStatusEvent no controlado: level=error, code=NetStream.Play.StreamNotFound
at RepFla_fla::MainTimeline/frame1()


alguien tiene idea de porque sera ?? o que me falta ?? :S

Ayuda !! y Gracias por adelantado

Por NiGGa

35 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 May 2009 11:53 am
Debería ser:

var videoURL:String = "rtmp://servidor/algun.flv";

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 20 May 2009 12:00 pm
vale, he hay la duda importante... la direccion del video completa no termina con la extencion .flv eso supone el problema ???

Esta es la direccion (cambiada un poco xq es del curre xD)

rtmp://****.***.**:80/VideosDiferido/***.**********.Presentacion.384x288

si es esto le corto los wevos a mi jefe xD

Por NiGGa

35 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 May 2009 12:01 pm
PD: Es un reproductor que he vuelto a escribir otra vez... cuando lo tenia con el FLVplayback si que iba :S

Por NiGGa

35 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 May 2009 12:17 pm
Si usas FMS la terminación flv es optativa, si lo encuentra con el FLVPlayback, el NetStream lo debería poder reproducir

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 20 May 2009 12:24 pm
En primer lugar gracias por responder... soy nuevo en AS3, de hecho lo que se lo he aprendido en escasas 2 semanas...

Volviendo a la pregunta... entonces ?? porque no lo coje??

He puesto dos traces (antes y despues de esa linea) y me les hace, osea que la direccion la traga pero no reproduce el video

me estoy volviendo tarumba con la tonteria xD

Gracias por ayudarme.

Por NiGGa

35 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 May 2009 12:46 pm
Bueno pues no hay manera... este es el error que me da:

Código :

Error #2044: NetStatusEvent no controlado: level=error, code=NetStream.Play.StreamNotFound
   at RepFla_fla::MainTimeline/frame1()


PD: Lo he probado con el otro proyecto que esta con el FLVplayback x si era cosa del servidor pero si que lo reproduce sin ningun problema.

Por NiGGa

35 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 May 2009 12:55 pm
¿La url del FLVPlayback es la misma que usas con el NetStream?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 20 May 2009 01:02 pm
Si que es la misma.

La verdad no se me ocurre nada... he probado con load() aunque no tiene sentido pero por probar... y nada como siempre :S

Bueno por si te dice algo, probandolo con la direccion de un video tutorial con protocolo http si que funciona

Por NiGGa

35 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 May 2009 07:55 am
Haciendo una prueba con lo que he encontrado por internet... he hecho lo siguiente:

Código :

var conexion_nc = new NetConnection();
conexion_nc.connect("rtmp://****.***.**:80/VideosDiferido");
var stream:NetStream = new NetStream(conexion_nc);
stream.play("***.****************.Presentacion.384x288");


Mire en internet un par de ejemplo y la segunda linea siempre ponien la direccion del servidor con la carpeta donde estan los videos, y la 4 el nombre del video.

que pasa??? este error:

Código :

ArgumentError: Error #2126: El objeto NetConnection debe estar conectado.
   at flash.net::NetStream/construct()
   at flash.net::NetStream()
   at Untitled_fla::MainTimeline/frame1()


Ayuda plisss

Por NiGGa

35 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 May 2009 10:49 am
Para reproducir un video desde un servidor FMS no es necesario hacer una conexión con NetConnection, a menos que tengas código de servidor que obligue a autentificar. Dado que el FLVPlayback lo reproduce sin logearse, también deberías poder hacerlo con NetStream. Lo que te falta en el code que pusiste es esperar a que la conexión se verifique, algo así:

Código ActionScript :

var con:NetConnection = new NetConnection();
con.client = this
con.addEventListener(NetStatusEvent.NET_STATUS, onNcStatus);
con.connect("rtmp://localhost/elearning/test");
function onNcStatus(evt:NetStatusEvent):void {
   trace("Code: " + evt.info.code);
   if (evt.info.code=="NetConnection.Connect.Success") {
      setupStream();
      dispatchEvent(evt);
   }
}
function setupStream():void {
   var publish_stream:NetStream=new NetStream(con);
   publish_stream.addEventListener(NetStatusEvent.NET_STATUS, reportStream);
   var nsClient:Object = {};
       nsClient.onMetaData = ns_onMetaData;   
   publish_stream.client = nsClient
   publish_stream.play("mainVideo/recorded");
}


Este code es para una conexión a un FMS que requiere una serie de datos propios de la aplicación que he omitido.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 21 May 2009 11:13 am
Si tiene bastante sentido... pero aun asi...

Código :

ArgumentError: Error #2126: El objeto NetConnection debe estar conectado.
   at flash.net::NetStream/construct()
   at flash.net::NetStream()
   at RepFla_fla::MainTimeline/frame1()
Code: NetConnection.Connect.Success
TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
   at RepFla_fla::MainTimeline/setupStream()
   at RepFla_fla::MainTimeline/onNcStatus()


Esto me devuelve... no conecta, luego me dice que si esta conectado, y luego que no me hace las funciones definidas xq no esta conectado... como puede estar conectado sin estarlo ??? :S

Por NiGGa

35 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 May 2009 11:38 am
El code que te puse no da ese error, revisa, estarás creando el NetStream antes de que conecte .... igual si no encuentra el FLV, al final tendrás el mismo error

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 21 May 2009 11:56 am
Que va...

Sinceramente no logro ver que es lo que falla... este es mi codigo entero (la parte del video)

Código :


import flash.net.NetConnection;
import flash.net.NetStream;
import flash.media.Video;

var con:NetConnection = new NetConnection();
con.client = this ;
con.addEventListener(NetStatusEvent.NET_STATUS, onNcStatus);
con.connect("rtmp://****.***.**:80/VideosDiferido");
function onNcStatus(evt:NetStatusEvent):void {
trace("Code: " + evt.info.code);
if (evt.info.code=="NetConnection.Connect.Success") {
setupStream();
dispatchEvent(evt);
}
}

var stream:NetStream=new NetStream(con);
function setupStream():void {
var nsClient:Object = {};
nsClient.onMetaData = ns_onMetaData;
stream.client = nsClient ;
stream.play("***.**********.Presentacion.384x288");
}

var video:Video = new Video();
video.height = 288;
video.width = 384;
var obj:Object = new Object();
//stream.client = obj;
//obj.onMetaData = MetaData;
video.attachNetStream(stream);
var sound:SoundTransform = new SoundTransform();
stream.soundTransform = sound;
addChild(video);




Espero que puedas ayudarme Jorge, despues de esto te devere un par de cervezas tio !

Por NiGGa

35 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 May 2009 12:21 pm
estarás creando el NetStream antes de que conecte ....


Y aquí mismo lo haces:


var stream:NetStream=new NetStream(con);
function setupStream():void {
....
}


Mueve la creación del stream dentro de la función.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 21 May 2009 12:28 pm
Perfectisimo !!!!

Perdona se me paso por alto, es que esa variable la uso para lanzar luego el video y para hacer las demas osrdenes del menu... si estaba dentro no me la cojia ni con public (porque no esta en un package) asique la saque fuera... solo he metido todo dentro de esa funcion jeje

Muchas gracias Jorge de verdad !!

PD: Si algun dia me paso por las argentinas (que fijo xq kiero ir a ver las ballenas xD) te lo dire y te invitare a esas cervezas !

Andrés.

Por NiGGa

35 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 May 2009 10:55 am
He vuelto con otra duda xD

Perdon pero me pierdo bastante :S

Haber el caso es que tengo que meter un video de intro, un flv... lo que he hecho ha sido meter un "stream.play()" antes del "stream.play(videoUrl)" de mi codigo, para que me lo reproduzca antes que este pero no lo hace, me salta directamente al siguiente :S

Si alguien sabe como lo puedo solucionar se lo agradeceria.

Saludos.

Andres.

Por NiGGa

35 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 May 2009 12:04 pm
Básicamente es como un playlist, se reproduce un video después de otro y se puede usar el evento onComplete (o NetStream. Play.Stop) para detectar el fin. Creo que hay un tuto de pasar videos aunque creo que era con el componente FLVPlayback ... aquí un reproductor no basado en un componente: http://www.flash-db.com/Tutorials/videobox/

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 May 2009 12:18 pm
En primer lugar agradecerte por tu tiempo Jorge.

En el reproductor de antes es una lista si, pero al final de un video no pasa al siguiente que es lo que me intereza, que pase directamente.

Bueno cotilleando por internete respecto a esto... no se podria hacer con un array???

con algo asi:

Código :

var videoList:Array = new Array (videoUrlC, videoUrl)
...
stream.play(videoList);


Con este codigo no funciona esta claro, pero podria ser una manera ??

Por NiGGa

35 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 May 2009 12:37 pm
De eso se tratan los ejemplos que puse

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 May 2009 01:10 pm
Bueno he mirado el codigo de tu ejemplo, y si, mas o menos es lo que kiero pero debido a mi incompetencia no logro hacer que funcione :S

Las variables de array las defino en el swf, y luego en el array pongo solo el nombre de las variables... pero no se como hacer para que el play me coja esos varoles uno despues de otro.

Gracias por la paciencia :)

Andrés.

Por NiGGa

35 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 May 2009 09:35 am
Bueno tras horas de google y foros tengo los ojos rojos y mi mente cansada pero lo he consegido :)

Aqui dejo el codigo por si alguien lo necesita :)

Código :

...
        video.attachNetStream(stream);
   stream.play(urlVideoC, 0, -1, false);
   stream.play(urlVideo, 0, -1, false);
   stream.pause();
...


El reproductor inicia parado, cuando le damos al play primero reproduce "urlVideoC" completo y luego "urlVideo", completo tambien.

Tambien explicare esta estructura.

Código :


my_rep.play("video", A, B, C)



Donde:
video: es el nombre del video, por comodidad es mejor definir una variable.
A: El segundo desde empieza a reproducir.
B: Asta que segundo se reproduce
C: Dependiendo lo que queramos: Especifica si se borra una lista de reproducción. El valor predeterminado es 1 o true, que borra todas las llamadas de reproducción play anteriores y reproduce name inmediatamente. Si el valor es 0 o false, añade la transmisión a la lista de reproducción. Si es 2, mantiene la lista de reproducción y devuelve todos los mensajes de transmisión a la vez, en lugar de a intervalos. Si es 3, borra el contenido de la lista de reproducción y devuelve todos los mensajes de transmisión a la vez.

La definicion de C es la que proporciona adobe, es como mejor se explica.

Y eso es todo, al final lo he sacado yo solo jeje pero muchas gracias por tu tiempo Jorge :)

Por NiGGa

35 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 May 2009 11:30 am
Es una opción, pero considera lois siguientes usercase:

- La lista puede ser variable (viene digamos en un XML), pudiendo incluso haber un solo video
- Existen controles que permiten ir recorriendo la lista sin ver todos los videos

Ambos casos son bastante comunes y no se pueden manejar con una serie de play enlazados en tiempo de compilación. Lo que se hace es usar el callback del NetStream para detectar el final que tiene dos tips: un stop seguido de un BufferEmpty y un Flush. Quizás para tu caso actual no lo requieras, pero si avanzas en trabajos con video y FMS (o cualquier servcidor de streaming) lo necesitarás. Aquí un ejemplo de callback de NetStream, usa un método auxiliar reportChange que omito porque no aporta, pero creo que da la idea:

Código ActionScript :

   public function onStatus(info:Object) {      
     lastInfo = info;
     trace(info.level+": "+info.code)
     if (info.level != "status") {      
      reportChange(info.level+": "+info.code);
      return;
     }
     var code = info.code.substr(NetStreamPlayBack.NS_MSG_INDEX);
      switch (code){
      case "Play.Start":
         if (! paused)
           reportChange("buffering");
        stopped = false;
         break;
      case "Play.Stop":
        if (this.bufferLength == 0 && !paused) {
         reportChange("playingAtEnd");
        }
        else {
           if(!paused) reportChange("playing");
        }
        stopped = true;
        break;
      case "Buffer.Empty":
         if (stopped){
         reportChange("playingAtEnd");
        }
        else{
           this.reportChange("buffering");
        }
        break;
      case "Buffer.Full":
         reportChange("playing");
        break;
      case "Seek.Notify":
         if (! this.paused){
          reportChange("buffering");
        }
        else{
         reportChange("seeking");
        }
        break;
      case "Pause.Notify":
         paused = true;
        reportChange("paused");
         break;
      case "Unpause.Notify":
         paused = false;
         break;
      default:
         reportChange("NetStream."+code);
     }
   }


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 26 May 2009 11:39 am
Si, ese tipo de ejemplo y estructura lo he visto. Pero como tu dices, en este caso no me hacia falta.

En todo caso Gracias.

Andrés.

Por NiGGa

35 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Oct 2011 04:47 am
podrias poner el codigo como quedo al final para conectar con FMS y ASC
donde dijo jorge que movieras dentro de la funcion :S

Por Mr.Kons

5 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.