roStreamQueue
14 min
este objeto le permite reproducir una lista de archivos de video sin interrupciones (es decir, sin fotogramas en blanco ni interrupciones entre un video y el siguiente) puede vincular rostreamqueue a una instancia de rovideoplayer para la reproducción continua de video o a una instancia de romediastreamer para el streaming continuo de video creación de objeto este objeto se crea sin parámetros createobject("rostreamqueue") requisitos de archivos los archivos de video deben cumplir los siguientes requisitos para funcionar con el objeto rostreamqueue los archivos deben tener formato transport stream ( ts ) todos los archivos en una cola deben tener pid idénticos los archivos deben comenzar y terminar con un gop cerrado los archivos deben tener pcr regulares en intervalos de 100 ms o menos tenga en cuenta que el intervalo predeterminado para ffmpeg es de 1000 ms, a menos que esté configurado para multiplexación cbr (en cuyo caso el intervalo se establece en 20 ms) el siguiente es un ejemplo de un comando tp remux apropiado avconv i clip short ts vcodec copy acodec copy muxrate 15m clip short2 ts ifstreamqueue queuefile(filename as string) as boolean agrega el archivo de video especificado a la cola loop(loop as boolean) as boolean especifica que la reproducción/el streaming debe volver al comienzo de la cola una vez que llegue al final si se llaman tanto loop(false) como looplast(false) , la reproducción/el streaming se detendrá una vez que se alcance el final de la cola este también es el comportamiento predeterminado looplast(loop last as boolean) as boolean especifica que la reproducción/el streaming debe repetir el último archivo de la cola una vez que llegue al final este método no tiene efecto si también se llama a loop(true) setpreferredaudio(description as string) as boolean elige un flujo de video de la entrada de video según los parámetros docid\ oszbyfpamasbwnd6w7jsh de la cadena pasada setpreferredvideo(description as string) as boolean elige un flujo de audio de la entrada de video según los parámetros docid\ oszbyfpamasbwnd6w7jsh de la cadena pasada keeppadding(enabled as boolean) si enabled=true , todos los pid en el flujo de entrada (incluidos los paquetes de relleno) se transfieren a la salida esto permite conservar el perfil de flujo de bits cbr al retransmitir a la red no se puede usar cuando se alimenta un decodificador local nextfile(a as boolean) as boolean start() as boolean ifmessageport setport(port as romessageport) publica mensajes de tipo rostreamqueueevent en el puerto de mensajes adjunto se genera un evento cada vez que se alcanza el final de la cola ifuserdata setuserdata(user data as object) establece los datos de usuario que se devolverán cuando se generen eventos getuserdata() as object devuelve los datos de usuario que se establecieron previamente mediante setuserdata() devolverá invalid si no se han establecido datos ifidentity getidentity() as integer devuelve un número único que se puede usar para identificar cuándo los eventos se originan en este objeto la interfaz ifidentity ha quedado obsoleta recomendamos usar la interfaz ifuserdata en su lugar colas de reproducción y streaming para usar rostreamqueue como una lista de reproducción de streaming, inclúyalo como el componente fuente en una llamada a romediastreamer setpipeline() para la reproducción de video, use una instancia de rovideoplayer como el componente de destino en la llamada a setpipeline() ejemplo (rovideoplayer) q=createobject("rostreamqueue") q queuefile("sd /test count up blue frames ts") q queuefile("sd /test count up green frames ts") q loop(true) c=createobject("romediastreamer") r=createobject("rorectangle",0,0,1920,1080) v=createobject("rovideoplayer") v setrectangle(r) c setpipeline(\[q, v]) c start() ejemplo (romediastreamer) queue = createobject("rostreamqueue") queue queuefile("file1 ts") queue queuefile("file2 ts") queue loop(true) m = createobject("romediastreamer") m setpipeline(\[queue, "udp\ //239 0 156 101 5000/?maxbitrate=0"]) m start() sugerimos encarecidamente agregar el parámetro "maxbitrate=0" a los flujos udp al usar rostreamqueue esto evita que la instancia de romediastreamer limite la velocidad de un flujo rostreamqueue que ya se está ejecutando a una velocidad precisa y correcta