ITU tirititran UTRAN treroooo II

ITU tirititran UTRAN treroooo II

  • Pero oiga señora… ¿ eso no es una canción?
  • … Pues… sí… pero no…

En realidad es el título de este post, que es la segunda parte del otro en que incluí unos cuantos enlaces interesantes (incluyendo la canción de Camarón).

En cuanto a ffmpeg hay varias cosas importantes que comentar.

En primer lugar para que funcione hay que incluir la instalación del programa en la ruta path, o asignar una variable de entorno incluyendo la dirección absoluta al programa en esa variable path, parece lo mismo, pero no.

caso uno: La carpeta Windows, por ejemplo, contiene archivos de sistema. Entrando en “Configuración Avanzada del Sistema” (“Equipo” botón derecho,”Propiedades”) hay un botón que dice “Variables de Entorno”, pulsando entra a las variables que hay configuradas.

Una es PATH, “Editar”, cliquear para que deje de aparecer en fondo azul, y al final de la línea se añade % y la dirección al programa que queramos que funcione por línea de comandos (“Símbolo del Sistema”).

Instalando ffmpeg directamente dentro de una carpeta que creamos dentro de la carpeta Windows, no hace falta asignar la variable path a %ruta\ffmpeg, porque al estar dentro de “Windows” el cmd.exe ya lo “ve”.

caso dos: instalar ffmpeg donde queramos, entrar a editar PATH, y añadir la ruta a la carpeta donde se instaló.

Una vez hecho esto, dentro de el cmd.exe o el terminal, hay que teclear ffmpeg y después el renglón que contiene las opciones y parámetros para la entrada y/o la salida.

En un caso habitual es sencillo editar audio y vídeo con ffmpeg. Se escoge el hilo que se quiere editar y se asigna a una posición dentro de la mezcla de hilos que formará el archivo de audio o de vídeo de salida.

(Tener en cuenta que si no asignáis una variable de entorno a ffmpeg, debéis dar la ruta completa a los archivos de entrada, y la salida será a la propia carpeta donde está ffmpeg).

ffmpeg -i video1.avi -map 0 -c copy videosalida.avi

-map o (map cero) copia en teoría todos los hilos, sin falta de ir especificando v video, a audio, 0:1 0:2 1:0 1:0… etc. que pueden contener subtítulos, imagen, video, audio, efectos, metadatos…

Copiando y pegando sustituyendo “video1” y “videosalida” por los nombres de los vídeos origen y editado estamos copiando todos los hilos en el video de salida igual que están a la entrada.

Si en lugar de ese comando ponemos este otro

ffmpeg -i video1.avi -map 0:0 v:c mp4 vidsalida.mp4 -map 0:1 a:c mp3 audisalida.mp3

Del vídeo de entrada salen uno en formato mp4 y otro de audio en formato mp3 (siempre que el codec esté dentro de la ruta de ffmpeg o de Windows u otra carpeta que tenga variable de entorno).

Puede ser que la sintaxis varíe y los -map 0:0 -map 0:1 vayan seguidos con los formatos y archivos de salida dos a dos en lugar de uno a uno como lo puse arriba.

El caso es que un archivo de vídeo contiene al menos un stream (hilo) de video, y además lo normal es que al menos contenga otro de audio.

Si se asigna un identificador 0:2 por ejemplo a una canción de fondo entonces tenemos imagen audio1 y audio2, mezclados con la opción -vol (valor) para el volumen de ambos hilos de audio (por defecto el valor normal es 256).

Es largo de explicar, de hecho hay una wiki ffmpeg y otras páginas con documentación respecto a las diferentes posibilidades.

Hay una página que se instala dentro de la propia carpeta de ffmpeg, en la subcarpeta doc, ffmpeg-formats.html, se puede abrir sin conexión a Internet en el navegador puesto que está instalada localmente.

Contiene información sobre formatos y sintaxis diversas.

Sabiendo las características de los videos y audios que se quieren mezclar o editar no lleva mucho tiempo.

En un caso “lo de todos los días”, ya no, no es tan sencillo…

En un caso “lo de todos los días” os podéis encontrar con un vídeo editado o deteriorado accidentalmente que si queréis recuperar a su estado original debéis encontrar y calcular, ya que en la mayoría de los casos aunque las imágenes estén oscurecidas, sobreexpuestas, superpuestas o en bucle, en realidad, esas imágenes son un resultado de un algoritmo (proceso de edición) que se ha aplicado a la grabación, quedando en realidad la grabación intacta.

Lo habitual es que conociendo el formato en que graba una cámara, dando los valores adecuados al stream de video en bruto (raw) las imagenes y el audio se acaben recuperando.

Sin embargo, si se ha transmitido esa grabación con un dispositivo a “la nube” para editar y volver a colocar el archivo ya editado en la cámara, además del formato de la cámara habría que considerar el modo en que se transmitió y editó.

Supongamos que se ha usado un iPhone.

Los espacios de color que usan los iPhone son del tipo YUV, más concretamente Y’UV, y aunque parezca que no, la comilla es importante, porque para empezar en lugar de tres bytes para el formato en FourCC, ocupa cuatro.

Esto provoca un misalignment, que quiere decir que los bytes que van dando los parámetros no empiezan en (desplazamiento +) cero, sino que al menos hay un byte de error (es como si en un libro os comieseis la primera letra de cada palabra en una línea (independientemente de en qué página empieza el capítulo).

Además las cámaras de vídeo suelen usar Y Cr Cb, que es casi equivalente a YUV, pero entonces tenemos Y’ Cr Cb, y eso sonocho caracteres contando los espacios, o seis si van así, Y’CrCb, cuando lo normal es que sean cuatro, por eso se llaman FourCC, porque se designan con un máximo de cuatro caracteres.

¿Qué ocurre en este caso?, que directamente no coge los dos últimos salvo que se de directamente el valor numérico de la CONSTANTE para Y’CrCb, pero eso se da si se conoce, y no se suele ni siquiera saber, porque el más conocido es el RGB, y el YUV, el Y’UV, el YCrCb, y el Y’CrCb, son muy parecidos en sus denominaciones y en general se suelen llamar simplemente YUV.

La diferencia en la decodificación es muy grande entre RGB y YUV (la designación tiene importancia a la hora de analizar un stream de video modificado porque en función de que sean uno u otro la longitud de la cadena por ejemplo es diferente, y puede ocurrir que se pierdan los dos últimos o que se asignen esos valores al canal alfa (transparencia/opacidad) dando variaciones en el color.

El valor en RGB va de 0 a 256 (o sus equivalentes en octal, hexadecimal o binario). 0 es la mínima energía, los colores oscuros tienen valores bajos, el R es de rojo, el G es de verde y el B es de azul. El negro vale 000, el blanco vale 256256256, los grises son trivalores iguales, por ejemplo 505050.

Los espacios de color YUV son mucho menos conocidos y además funcionan de forma relativa.

La teoría es que la señal para Y (yellow), se considera constante e igual a uno, y el color resultado es una combinación de restar o sumar intensidad a los otros dos valores, U para el rojo (under), V para el azul (over).

Como esto es bastante más largo de explicar seguiré en el próximo post.

Pero dejo un comando útil:

ffmpeg -f rawvideo -pixel_format rgb24 -video_size 320×240 -framerate 10 -i input.raw -fflags ignidx -c:v libx264 -c:a aac -f fifo -fifo_format flv -map 0:v -map 0:a
-drop_pkts_on_overflow 1 -attempt_recovery 1  OUTPUT.flv

Acerca de María Cristina Alonso Cuervo

I am a teacher of English who started to write this blog in May 2014. In the column on the right I included some useful links and widgets Italian is another section of my blog which I called 'Cornice Italiana'. There are various tags and categories you can pick from. I also paint, compose, and play music, I always liked science, nature, arts, language... and other subjects which you can come across while reading my posts. Best regards.
Esta entrada fue publicada en Arts, Computer Science, Design, English, Science, Uncategorized, Video. Guarda el enlace permanente.