Streaming con VLC en Ubuntu

Les mostrare como hacer streaming usando VLC. En este caso enviare por la red un fichero de video, otro de audio y por ultimo la imagen emitida por una webcam para luego captar la señal con otra pc. Usare para video un capitulo de anime en formato mp4, una cancion con formato mp3 y la webcam de mi laptop.

Hacer streaming tiene multiples propositos pero… que es el streaming?

Streaming es un término que se refiere a ver u oír un archivo directamente en una página web (o servidor) sin necesidad de descargarlo antes al ordenador. En términos más complejos podría decirse que describe una estrategia sobre demanda para la distribución de contenido multimedia a través del internet.
Este tipo de tecnología permite que se almacenen en un búfer lo que se va escuchando o viendo. El streaming hace posible escuchar música o ver videos sin necesidad de ser descargados previamente.

Con vlc se puede hacer streaming de muchas formas pero elegi hacerlo via web (http) porque me parecio algo mas estandar, practico y util.

No pretendo hacer de esto un manual ni nada parecido, hay muchas formas de hacerlo y configurarlo para hacer esto mismo. Para ello tienen muchisima informacion en la web.

Pero ya que estamos… que es VLC?

VLC media player (inicialmente VideoLAN Client) es un reproductor multimedia del proyecto VideoLAN; es un software libre distribuido bajo la licencia GPL. Soporta muchos códecs de audio y video, así como diferentes tipos de archivos, además de DVD, VCD y varios protocolos streaming. También puede ser utilizado como servidor en unicast o multicast, en IPv4 o IPv6, en una red de banda ancha. Utiliza la biblioteca códec libavcodec del proyecto FFmpeg para manejar los muchos formatos que soporta, y emplea la biblioteca de descifrado DVD libdvdcss para poder reproducir los DVD cifrados. Además VLC tiene soporte para Video4Linux.
Es multiplataforma contando con versiones para GNU/Linux, Microsoft Windows, Mac OS X, BeOS, BSD, Pocket PC, Solaris.

Es un reproductor de audio y video genial, ya que funciona con librerias en vez de codecs y lo mejor de todo es que reproduce muchos formatos diferentes. Como suelo decir… reproduce hasta discos de empanadas jajaja.



Web oficial: http://www.videolan.org/vlc/

Comencemos:

0 – Consideraciones

a) De ahora en mas llamaremos “servidor” a la pc que envia el fichero, señal, o como quieran llamarle, por la red (internet) y “cliente” a la pc que recibe esa informacion (logico no? jajaja).

b) La pc servidor en este caso usara como sistema operativo Ubuntu 9.10 usando la version de “VLC 1.0.2 Goldeneye” y la pc cliente tendra un Debian Lenny (esta ultima pc podria no ser ese SO, funcionaria supuestamente con cualquier sistema operativo que tenga VLC o algun otro programa similar).

c) Si quieren hacer esto por fuera de la red y estan detras de un router deben tener un puerto abierto apuntando a la pc servidor, es decir hacer un “port forwarding”, asi como tambien tener un dominio registrado en su router.

d) Los distintos metodos de streaming son muy similares pero igualmente repetire los procedimientos paso por paso.

e) No usare una codificacion optima para realizar esto, solo usare una estandar ya que eso dependera mucho de la conexion que tengamos y de los clientes que se conecten. Si les parece que les va lento o algo jueguen con la configuracion, a mi me va decente.

f) Usare una configuracion estandar del servidor de VLC, no pretendo hacer de esto un canal de television. Si quieren hacerlo mejor jueguen con la configuracion.

g) Si bien pueden no cumplir con alguno de estos requisitos, esto puede servirles de referencia.

1 – Instalar vlc:

Instalamos VLC tanto en la pc servidor como en la pc cliente.

a – Abrimos una consola y ponemos:
sudo aptitude install vlc mozilla-plugin-vlc

b – Para ejecutarlo vamos a “Aplicaciones – Sonido y video – VLC media player” o ponemos directamente en una consola:
vlc

2 – Averiguar la IP del servidor

Explicare en este caso la forma mas simple. Vamos a la pc que sera nuestro servidor de streaming, luego vamos a nuestra barra superior de Gnome y le damos click derecho al simbolo de red. Del menu desplegable que se nos abre seleccionamos “Informacion de la conexion”. Buscamos donde dice “Direccion IP” y anotamos ese numero en algun lugar ya que nos sera util luego.

3 – Streaming de un video

Enviaremos un video por internet y recibiremos la transmision con otra pc.

En el servidor

a – Vamos a la pc servidor y abrimos VLC llendo a “Aplicaciones – Sonido y video – VLC media player” o ponemos directamente en una consola:
vlc

b – Vamos a “Medio – Abrir Volcado de red…:N”

Nota: dependiendo de la version en algunos casos en vez de “Medio” puede decir “Archivo”. Tambien podriamos ir a “Medio – Emision” directamente en vez de a volcado de red.

c – Vamos a la solapa “Archivo:F” y le damos al boton “Add”. Seleccionamos de nuestro disco el fichero de video y le damos a “abrir”.

d – Luego veran que junto al boton “Reproducir” se encuentra un menu desplegable. De ese menu seleccionan “Emision”.

e – En la ventana que se nos abre veran que donde dice “source” dice la ruta donde se encuentra el fichero de video. Por el momento no es muy importante esto, pero mas adelante veran que puede ser util esta ventana. Le dan a “Siguiente”.

f – Aqui del menu desplegable que dice “Archivo” seleccionamos “HTTP”. Luego le damos al menu desplegable que dice “Profile” y seleccionamos lo que serian los codecs. Personalmente uso el que dice “Video – MPEG-2 + MPGA (TS)” aunque puede que a ustedes les funcione otro.



Nota: Si tildan la casilla que dice “Display locally” podran ver el video mientras lo transmiten por la web. Les recomiendo que lo tilden por el momento para ver de que realmente estan transmitiendo el video, luego cuando esten mas familiarizados con eso pueden no tildarlo si quieren.

Vamos al boton que dice “Añadir” para especificar la configuracion. Donde dice “Direccion” ponemos la ip de nuestra pc (es decir del servidor) como por ejemplo 10.10.10.10 y donde dice “Puerto” pues el puerto que queremos que use, por ejemplo 8081. Deben tener en cuenta de que si quieren hacerlo por fuera de su red ese puerto debe estar abierto en su router y apuntar a la pc que hace de server. Cuando terminamos le damos a “Siguiente”.

g – De esta ventana tildamos la casilla que dice “Mantener abierta salida de emision”. Lo demas no es indispensable por lo que lo dejamos asi.

Donde dice “Generated stream output string” nos dice las “variables” (por llamarlo de alguna manera) que estamos usando en este momento. Esto es util si queremos lanzar toda esta configuracion desde una consola.
Cuando terminamos le damos al boton “Emision” y estaremos transmitiendo el video.


En el cliente

a – Vamos a la pc servidor y abrimos VLC llendo a “Aplicaciones – Sonido y video – VLC media player” o ponemos directamente en una consola:
vlc

b – Vamos a “Medio – Abrir Volcado de red…:N”

Nota: dependiendo de la version en algunos casos en vez de “Medio” puede decir “Archivo”.

c – Seleccionamos “http” y en la casilla que se encuentra al lado completamos con la ip del servidor al cual nos queremos conectar seguida por el puerto que le pusimos, osea IP:PUERTO, es decir que nos quedaria asi:
10:10:10:10:8081

Nota: Si estan usando un ubuntu como cliente tendran la casilla para ponerle el puerto.

En el caso de tener un dominio podrian usarlo, esto seria util por si su IP cambia o por si su pc no esta dentro de su red. La forma seria la misma, solo que en vez de poner su ip y puerto ponen su dominio seguido del puerto, como por ejemplo mydominio.dyndns.org:8081 .

Cuando terminamos le damos a la tecla “Enter” (En debian dice “Aceptar” y en Ubuntu dice “Emision”) y listo.


Recepcion del streaming en Debian Lenny


4 – Streaming de sonido

Enviaremos una cancion por internet y la escucharemos con otra pc.

En el servidor

a – Vamos a la pc servidor y abrimos VLC llendo a “Aplicaciones – Sonido y video – VLC media player” o ponemos directamente en una consola:
vlc

b – Vamos a “Medio – Abrir Volcado de red…:N”

Nota: dependiendo de la version en algunos casos en vez de “Medio” puede decir “Archivo”. Tambien podriamos ir a “Medio – Emision” directamente en vez de a volcado de red.

c – Vamos a la solapa “Archivo:F” y le damos al boton “Add”. Seleccionamos de nuestro disco el fichero de video y le damos a “abrir”.

d – Luego veran que junto al boton “Reproducir” se encuentra un menu desplegable. De ese menu seleccionan “Emision”

e – En la ventana que se nos abre veran que donde dice “source” dice la ruta donde se encuentra el fichero de video. Por el momento no es muy importante esto, pero mas adelante veran que puede ser util esta ventana. Le dan a “Siguiente”.

f – Aqui del menu desplegable que dice “Archivo” seleccionamos “HTTP”. Luego le damos al menu desplegable que dice “Profile” y seleccionamos lo que serian los codecs. Personalmente uso el que dice “Audio – Vorbis (OGG)” aunque puede que a ustedes les funcione otro.

Vamos al boton que dice “Añadir” para especificar la configuracion. Donde dice “Direccion” ponemos la ip de nuestra pc (es decir del servidor) como por ejemplo 10.10.10.10 y donde dice “Puerto” pues el puerto que queremos que use, por ejemplo 8081. Deben tener en cuenta de que si quieren hacerlo por fuera de su red ese puerto debe estar abierto en su router y apuntar a la pc que hace de server. Cuando terminamos le damos a “Siguiente”.

g – De esta ventana tildamos la casilla que dice “Mantener abierta salida de emision”. Lo demas no es indispensable por lo que lo dejamos asi.

Donde dice “Generated stream output string” nos dice las “variables” (por llamarlo de alguna manera) que estamos usando en este momento. Esto es util si queremos lanzar toda esta configuracion desde una consola.
Cuando terminamos le damos al boton “Emision” y estaremos transmitiendo.

En el cliente

a – Vamos a la pc servidor y abrimos VLC llendo a “Aplicaciones – Sonido y video – VLC media player” o ponemos directamente en una consola:
vlc

b – Vamos a “Medio – Abrir Volcado de red…:N”

Nota: dependiendo de la version en algunos casos en vez de “Medio” puede decir “Archivo”.

c – Seleccionamos “http” y en la casilla que se encuentra al lado completamos con la ip del servidor al cual nos queremos conectar seguida por el puerto que le pusimos, osea IP:PUERTO, es decir que nos quedaria asi:
10:10:10:10:8081

Nota: Si estan usando un ubuntu como cliente tendran la casilla para ponerle el puerto.

En el caso de tener un dominio podrian usarlo, esto seria util por si su P cambia o por si su pc no esta dentro de su red. La forma seria la misma, solo que en vez de poner su ip y puerto ponen su dominio seguido del puerto, como por ejemplo mydominio.dyndns.org:8081 .

Cuando terminamos le damos a la tecla “Enter” (En debian dice “Aceptar” y en Ubuntu dice “Emision”) y listo.

5 – Streaming de Webcam

Enviaremos lo que va capturando una camara web, lo transmitiremos por internet y recibiremos la señal con otra pc.

En el servidor

a – Vamos a la pc servidor y abrimos VLC llendo a “Aplicaciones – Sonido y video – VLC media player” o ponemos directamente en una consola:
vlc

b – Vamos a “Medio – Abrir Volcado de red…:N”

Nota: dependiendo de la version en algunos casos en vez de “Medio” puede decir “Archivo”. Tambien podriamos ir a “Medio – Aparato de captura” directamente en vez de a volcado de red.

c – Vamos a la solapa “Aparato de captura” y donde dice “Nombre de aparato de captura ponen su webcam, que en mi caso es /dev/video0 pero si tienen algun otro dispositivo de captura como una capturadora de video podria ser /dev/video1 . Donde dice “Options” lo dejamos “Por Defecto” salvo que tengan problemas con eso.

Nota: si no saben bien que dispositivos de video tiene ponen en una consola ls /dev/video* que se los listara.

d – Luego veran que junto al boton “Reproducir” se encuentra un menu desplegable. De ese menu seleccionan “Emision”

e – En la ventana que se nos abre veran que donde dice “source” dice la ruta donde se encuentra el fichero de video. Por el momento no es muy importante esto, pero mas adelante veran que puede ser util esta ventana. Le dan a “Siguiente”.

f – Aqui del menu desplegable que dice “Archivo” seleccionamos “HTTP”. Luego le damos al menu desplegable que dice “Profile” y seleccionamos lo que serian los codecs. Personalmente uso el que dice “Video – MPEG-2 + MPGA (TS)” aunque puede que a ustedes les funcione otro.

Vamos al boton que dice “Añadir” para especificar la configuracion. Donde dice “Direccion” ponemos la ip de nuestra pc (es decir del servidor) como por ejemplo 10.10.10.10 y donde dice “Puerto” pues el puerto que queremos que use, por ejemplo 8081. Deben tener en cuenta de que si quieren hacerlo por fuera de su red ese puerto debe estar abierto en su router y apuntar a la pc que hace de server. Cuando terminamos le damos a “Siguiente”.

g – De esta ventana tildamos la casilla que dice “Mantener abierta salida de emision”. Lo demas no es indispensable por lo que lo dejamos asi.

Donde dice “Generated stream output string” nos dice las “variables” (por llamarlo de alguna manera) que estamos usando en este momento. Esto es util si queremos lanzar toda esta configuracion desde una consola.
Cuando terminamos le damos al boton “Emision” y estaremos transmitiendo..

En el cliente

a – Vamos a la pc servidor y abrimos VLC llendo a “Aplicaciones – Sonido y video – VLC media player” o ponemos directamente en una consola:
vlc

b – Vamos a “Medio – Abrir Volcado de red…:N”

Nota: dependiendo de la version en algunos casos en vez de “Medio” puede decir “Archivo”.

c – Seleccionamos “http” y en la casilla que se encuentra al lado completamos con la ip del servidor al cual nos queremos conectar seguida por el puerto que le pusimos, osea IP:PUERTO, es decir que nos quedaria asi:
10:10:10:10:8081

Nota: Si estan usando un ubuntu como cliente tendran la casilla para ponerle el puerto.

En el caso de tener un dominio podrian usarlo, esto seria util por si su P cambia o por si su pc no esta dentro de su red. La forma seria la misma, solo que en vez de poner su ip y puerto ponen su dominio seguido del puerto, como por ejemplo mydominio.dyndns.org:8081 .

Cuando terminamos le damos a la tecla “Enter” (En debian dice “Aceptar” y en Ubuntu dice “Emision”) y listo.

6 – Streaming por consola

Les explicare un poco como hacer todo lo que hicimos anteriormente pero usando solamente la consola.
Esto es util por ejemplo para no repetir todos esto pasos cada vez que queremos hacer streaming. Ademas puede ser muy util por ejemplo para hacer un acceso remoto a la pc servidor de streming y tirar el comando en una consola y listo o incluso crearle un lanzador para hacer un streaming de algo especifico como es la webcam.

Veamos como es la cosa:

En el servidor:

Usaremos algunos datos que nos aparecieron en el punto e y g donde les dije que podrian ser utiles mas adelante.

Pues bien, la forma de hacerlo seria lanzando en una consola o terminal “vlc FUENTE SALIDADELSTREMING” Es decir que ponemos vlc + datos de la ventana source del punto e + datos de la salida del streaming del punto g”.
Es decir, podriamos repetir todo el procedimiento que les explique y copiar esos datos para usarlos ahora.
Tambien podriamos usar “cvlc” en vez de “vlc” que seria lo mismo solo que no abririamos el programa propiamante dicho, sino que se ejecuraria solamente en consola sin abrirnos una ventana de vlc.

Por ejemplo, si usaron exactamente los mismos codecs y las misma cosas seria:

Para la webcam:

cvlc v4l2:///dev/video0 --sout "#transcode{vcodec=mp2v, vb=800, scale=1, acodec=mpga, ab=128, channels=2, samplerate=44100}:std{access=http, mux=ts, dst=10.10.10.10:8081} :sout-keep"

Para el audio:

cvlc /home/USURAIO/Sonido.mp3 --sout "#transcode{acodec=vorb, ab=128, channels=2, samplerate=44100}:std{access=http, mux=ogg, dst=10.10.10.10:8081} :sout-keep"

Para el video:

cvlc /home/USUARIO/Video.mp4 --sout "#transcode{vcodec=mp2v, vb=800, scale=1, acodec=mpga, ab=128, channels=2, samplerate=44100}:std{access=http, mux=ts, dst=10.10.10.10:8081} :sout-keep"

Notas:

- Por alguna razon desconocida los comandos recientemente pagados no se muestran correctamente. Supongo que por estar todo en una sola linea y sin espacios, con lo cual les agregue espacios despues de cada coma para que sea entendible.

- Deben tener en cuenta que si sus carpetas o ficheros tienen nombre con espacios deben decirle al sistema, de otra manera no los encontrara.Por ejemplo, si tenemos un fichero que se llama “Video 342.mp” y se encuentra en la carpeta “Mis videos” deben poner “/Mis\ videos/Video\ 342.mp4″ o directamente todo entre comillas como por ejemplo “/home/USUARIO/Mis videos/Video 342.mp4″

- Cuando pongo USUARIO deben poner el suyo completando con la ruta de su fichero.

- Tengan en cuenta que al final de la linea aparece 10.10.10.10:8081 que seria la ip y el puerto del servidor, cambienlos por sus datos.

En el cliente

Bueno, esto funciona de la forma “vlc IP:PUERTO” es decir que pondriamos en una consola:
vlc http://10.10.10.10:8081

Claro que si estan usando un dominio seria:
vlc http://mydominio.dyndns.org:8081

Listo.

Comentarios

Entradas populares de este blog

Comandos Solaris

MikroTik QoS Script generator

Comando para eliminar saltos de linea en fichero o archivo desde consola Linux