🐋
Apuntes Sistemas
  • ⚓Presentación
  • 📊Sistemas y Servidores
    • Personalizar el prompt de Windows
    • Utilidad de manejo de apps para Windows
    • PRACTICA: Arranque dual Windows y Ubuntu
    • 🚧SysLinuxOS: el SO para ASIX
    • Comandos Linux
      • PRACTICA - Ejercicio de práctica comandos
      • 🚧Instalación de paquetes
      • Apuntes Linux: blue/red team
      • Ejemplos de bash
      • Listado de comandos de Linux
    • Comandos Windows
      • 🚧Apuntes Powershell
      • Bucles FOR con batch
      • Scripts de práctica de Windows
    • Prácticas con Windows 10
    • Configuración de netplan
    • Terminal shell
      • SSH
      • 🚧Ghostty
      • 🚧Warp: la terminal inteligente
      • tmux: paneles de terminal
      • Tabby: Mejorar terminal
      • Conexión SSH en red NAT con VirtualBox
      • TheFuck!: Corrección de comandos
      • Wave: Mejorar terminal Linux
      • 🚧Registros de sesiones
    • Instalación manual de Wordpress en CDMON
    • 🏗️Proxmox
    • 🚧TrueNAS
    • Docker
      • Instalación de Docker
      • Dockerfiles
      • Volúmenes de docker
      • Deployment web con Docker con ejemplos
        • 🚧PRACTICA: Node.js con docker
      • Docker Compose
        • Ejemplo 1: Implantación de Wordpress
        • Ejemplo 2: Implementación de servidor con Nginx, Flask y mySQL
        • Ejemplo 3: Implantación de onlyoffice
        • 🚧Ejemplo 4: Passbolt
        • 🚧PRACTICA: Creando una web de emulación de juegos con docker-compose
      • Monitorización con Grafana en Docker
      • Pi-hole con docker
      • Actividad clase: Deployment app
      • Proyectos self-hosted de docker
    • 🚧Ansible
      • Configuración de laboratorio de ansible
    • 🚧Monitorización de servicios y redes
      • Servicios y cronjobs
      • 1Panel
      • 🚧WatchYourLAN
      • 🚧Uptime-kuma
      • 🚧Netdata
      • 🚧Prometheus + Grafana + Loki
    • LDAP
      • 🚧Gestión gráfica de LDAP
      • Carpetas compartidas NFS
      • PRACTICA: Infraestructura LDAP
  • 🗃️Servicios
    • 🚧Servidor hosting público
    • DHCP
      • DHCP con Ubuntu
      • 🦖DHCP & DNS script
      • DHCP con Alpine
        • Alpine - configuración de red
    • DNS
      • 😡Comprobación DNS
      • Script para enumeración DNS
      • DNS con ubuntu server
      • 🏗️DNSmasq
      • 🚧Securizar servidor DNS
    • Web
      • IIS con Windows server
      • Apache
        • Instalación de LAMP en Ubuntu
          • Prueba de servidor LAMP
          • 🚧Configuración de seguridad de Ubuntu
          • Creación de un VirtualHost en LAMP
          • Creación de varios VirtualHosts en LAMP
          • 🚧Instalación por script de LAMP
        • Aplicaciones con LAMP
          • Instalación de WP en entorno LAMP
          • 🚧Instalación de MantisBT en LAMP
            • 👷Guía de MantisBT
          • 🚧Instalación de QDPM con LAMP
      • Nginx
        • Virtualhosts
        • Instalando Wordpress en nginx
      • 👷MEAN stack
      • 👷‍♂️Caddy
      • 🚧Plesk
      • 🚧Ajenti -Web interface
    • 🏗️Proxy
      • Nginx como proxy inverso y balanceador
      • 🚧Zoraxy
    • Mailing
      • 🚧Servidor Mail con cloudfare
      • 🚧Reenvío de correos de root
      • 🚧Roundcube como MUA
      • Comprobación ESMTP
      • 🚧Seguridad en mailing
      • 🚧Mailhog
    • 🏗️File transfer
      • 🚧FTP
      • Git
    • Sistemas de comunicación instantánea
      • Comunicación mediante CLI
      • Ejabberd - XMPP
        • 🚧Ejabberd con docker
      • 🚧Openfire - XMPP
      • 🚧Comunicaciones servidor-móvil
    • 🏗️Multimedia services
      • Stremio
      • Ver anime por CLI
      • Jellyfin
      • 🚧HLS sobre Apache
      • 🚧Servicio autohospedado de videoconferencia
      • 🚧Morphos: Conversor docs
      • 🚧Reproductores de música en CLI
      • 🚧Icecast - música en streaming
      • 🚧RTMP-HLS server
      • 🚧Guacamole
  • 🖱️Hardware
    • 🚧Identificando conectores
    • Curso de electrónica analógica
    • Alcanzar los 3200MHz con la RAM
    • Calculadora de cuellos de botella
    • 🚧PXE: Bootear sistemas en red
    • 🚧PRÁCTICA - Clonación de disco con Clonezilla
    • Logitech iFixit
  • 🕸️Redes
    • Apuntes IPv4 Alina
    • ¿Cómo diferenciar tantos elementos de red?
    • 🚧IPv6
    • PRÁCTICA - Subneteo con IPcalc en Linux
    • PRÁCTICA - Comandos de red en Windows
    • 🚧PRÁCTICA - Comandos de red en Linux
    • Herramientas de red
      • 🚧TCPDump: analizado de paquetes en red
      • PRÁCTICA - Netsh
      • 🚧PRÁCTICA - mtr.ping.pe
      • 🚧Netcat
    • Wireshark
    • VPN y escritorio remoto
      • Comunicación punto a punto con ngrok
      • 🚧VPN
    • Escaneo de red
      • PRÁCTICA - Mapeado de red con Draw.io
      • 🚧PRÁCTICA - Nmap/Zenmap
    • Redes inalámbricas
      • Wi-fi
        • 🚧PRÁCTICA - Configuración de router
        • 🚧PRÁCTICA - Como hacer un Wifi Heatmap
        • 🚧Seguridad de redes inalámbricas
        • PRÁCTICA - Crackear la contraseña del Wifi con WPA/WPA2
    • PRÁCTICA - Usar SSH en Cisco packet tracer
  • 🛑Ciberseguridad
    • 🚧Securizando un servidor Linux
      • Protégete de ataques de fuerza bruta con Fail2ban
      • Firewall
        • UFW (uncomplicated firewall)
          • GUFW - Interfaz gráfica de ufw
        • 🚧IPTables
        • 🚧PFsense
          • 🚧DMZ con PFsense
      • 🚧Passbolt: gestor de contraseñas autohospedado
      • 🚧Hashes y encriptación
      • 🚧Certificados SSL/TLS
      • Copias de seguridad
    • 🚧Alerta de escaneo de puertos
    • 🚧Google dorks
    • 🚧Enumeración DNS
    • Comandos destructivos de linux
    • Webs enseñanza cyber
    • Wireless Pentesting CheatSheet Github
    • The password game!
    • Personal Security Checklist
  • 🔌Arduino
    • Termómetro e higrómetros digitales y online con Arduino
    • Construyendo un coche multipropósito
      • Multi
      • Montaje del auto
    • Arduino con Sigfox para IoT
    • 10 proyectos de Arduino
  • 📚Recursos y libros
    • Media library: libros varios
    • Herramientas básicas de sysadmin
  • 🌍Sostenibilidad y digitalización
    • Portfolio curso digitalización MOOC
    • 🚧Explotación de recursos por IA
    • 🚧Nuevas tecnologias y comunicaciones
    • 🚧Enlaces sobre Inteligencia artificial
Con tecnología de GitBook
En esta página
  • Herramientas multimedia
  • Herramienta Ffmpeg
  • Herramienta yt-dlp
  • Funciones y comandos
  • - Descargar un video de youtube con yt-dlp
  • - Ver información del video descargado
  • - Reconvertir el video .mp4 en .mkv
  • - Modificar los canales de audio.
  • - Personalizar la calidad de video o audio
  • - Extraer el audio de un video
  • - Recortar fragmentos
  • - Juntar videos y audios
  • - Descargar el thumbnail del video
  1. Arduino
  2. Construyendo un coche multipropósito

Multi

AnteriorConstruyendo un coche multipropósitoSiguienteMontaje del auto

Última actualización hace 1 año

Toda la práctica la realizaremos en un servidor Ubuntu 22.0.

Herramientas multimedia

A continuación veremos dos herramientas que nos permitirán trabajar con archivos multimedia, son Ffmpeg y yt-dlp. Primero vamos a configurar el directorio de trabajo del servidor Ubuntu:

mkdir /home/tu_usuario/Media

Herramienta Ffmpeg

FFmpeg es una potente herramienta de línea de comandos y biblioteca de software diseñada para grabar, convertir y transmitir audio y video en una amplia variedad de formatos. Es conocido por su versatilidad y capacidad para manejar casi cualquier tarea relacionada con multimedia, desde la captura de pantalla hasta la transcodificación en tiempo real y la edición de video.

Más info .

La instalación de ffmpeg es tan sencilla como:

sudo apt install ffmpeg

Herramienta yt-dlp

YT-DLP es un proyecto de software gratuito y de código abierto creado a partir de youtube-dlc, el popular descargador de YouTube, pero incluye características y mejoras adicionales. Esta herramienta se utiliza principalmente para descargar videos de YouTube, Vimeo y otros sitios web similares.

sudo wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O /usr/local/bin/yt-dlp

Al terminar deberás otorgar permisos de acceso:

sudo chmod +x /usr/local/bin/yt-dlp

Funciones y comandos

- Descargar un video de youtube con yt-dlp

Una vez instalada y funcionando, para hacer su función principal de descarga de video de YouTube.

Primero podemos asegurarnos del formato de descarga y el nombre:

sudo yt-dlp -F --get-filename https://youtu.be/Bz0q0w5Jq9c?si=PWAKCOGzga_pRD8x

Esto mostrará lo siguiente:

En videos más antiguos puedes ver la diferencia de formatos:

Ahora sí, vamos a descargar el video. Para ello, especifica la url del video a descargar, tenemos varias opciones:

Descargar y fusionar el mejor formato de solo video y el mejor formato de solo audio, o descargar el mejor formato combinado si el formato de solo video no está disponible:

Descargar el mejor formato de solo video y el mejor formato de solo audio por separado. Para este caso, se debe configurar la salida ya que, por defecto, el mejor video y el mejor audio tendrán el mismo nombre de archivo:

Descargar el mejor video (que también tenga audio), pero que no sea más grande de 50 MB, o el peor video (que también tenga audio) si no hay ningún video de menos de 50 MB:

Descargar el mejor video mp4 disponible o el mejor video si mp4 no está disponible.

- Ver información del video descargado

Mediante el software FFprobe instalado con el paquete FFmpeg podemos revisar la información de un archivo multimedia.

ffmpeg -i fallout_video.mp4

El parámetro -i indica la información general. El comando mostrará esto:

En las ultimas lineas se puede observar lo siguiente:

 Stream #0:0(und): Video: vp9 (Profile 0) (vp09 / 0x39307076), yuv420p(tv, bt709), 1920x1080, 922 kb/s, 25 fps, 25 tbr, 16k tbn, 16k tbc (default)
    Metadata:
      handler_name    : ISO Media file produced by Google Inc. Created on: 04/18/2024.
      vendor_id       : [0][0][0][0]
  Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)
    Metadata:
      handler_name    : ISO Media file produced by Google Inc.
      vendor_id       : [0][0][0][0]

Si desglosamos esta información nos dice:

  1. Stream #0:0: Este es el primer stream del archivo multimedia. Es un stream de video (Video) codificado con el códec VP9 (vp9). Tiene un perfil específico (Profile 0). La resolución del video es de 1920x1080 píxeles (1920x1080). Utiliza el formato de color YUV420P con un espacio de color estándar (yuv420p(tv, bt709)). Tiene una tasa de bits de 922 Kbps (922 kb/s) y una velocidad de fotogramas de 25 fotogramas por segundo (25 fps). El resto son parámetros de temporalización.

  2. Stream #0:1: Este es el segundo stream del archivo multimedia. Es un stream de audio (Audio) y está codificado con el códec AAC (aac). Tiene una frecuencia de muestreo de audio de 44100 Hz (44100 Hz), en estéreo (stereo) y con el formato de punto flotante (fltp). Por último, tiene una tasa de bits de audio de 127 Kbps (127 kb/s).


- Reconvertir el video .mp4 en .mkv

El propio ffmpeg ofrece la posibilidad de hacer esto:

ffmpeg -i fallout_video.mp4 -vcodec libx264 fallout_264.mkv
ffmpeg -i fallout_video.mp4 -vcodec libx265 fallout_265.mkv

En este caso reconvertimos el video con dos códecs diferentes:

Fijémonos sobre todo en el tamaño de ambos archivos:


- Modificar los canales de audio.

En la siguiente práctica, usamos para el mismo video y tres codecs de audio diferentes, que son mp3, aac y vorbis:

ffmpeg -i fallout_video.mp4 -vcodec copy -acodec mp3 h264_mp3.mkv
ffmpeg -i fallout_video.mp4 -vcodec copy -acodec aac h264_aac.mkv
ffmpeg -i fallout_video.mp4 -vcodec copy -acodec libvorbis h264_vorbis.mkv 

La opción copy en el codec de video obliga a ffmpeg a no hacer conversión de formatos de video, sino que utiliza el que ya tiene lo que ahorra tiempo.

Aquí nos encontramos con el mismo formato de archivo multimedia pero con el audio cambiado:

De nuevo, comparando archivos vemos:


- Personalizar la calidad de video o audio

Para esta práctica modificaremos parámetros de video y audio para reducir el tamaño de archivo con perdida a partir del bitrate.

Recuerda que la tasa de bits (bitrate) es una medida que indica la cantidad de datos que se transmite o se procesa en un segundo de audio o video ya que se mide en bits por segundo (bps) o kilobits por segundo (kbps) y determina la calidad multimedia.

Ejecutamos lo siguiente:

ffmpeg -i fallout_video.mp4 -b:v 2500k -b:a 192k fallout_video_minus.mp4

ffmpeg -i fallout_video.mp4 -b:v 2500k -b:a 192k -vcodec vp9 fallout_video_minus.mp4

Estos parámetros habrán cambiado lo siguiente:

  • -b:v 2500k: Establece la tasa de bits de video (-b:v) en 2500 kilobits por segundo (2.5Mbps). Esto controla la calidad de video y el tamaño del archivo de salida. Cuanto mayor sea la tasa de bits, mejor será la calidad, pero también resultará en un archivo más grande.

  • -b:a 192k: Establece la tasa de bits de audio (-b:a) en 192 kilobits por segundo (0.2Mbps). Esto controla la calidad del audio y el tamaño del archivo de salida de audio.

Si recuerdas de más arriba, el video tenia tasa de bits de 922 Kbps y el audio de 127 Kbps. Por lo que hemos reducido su bitrate a más de la mitad con su consecuente perdida.

Por defecto, el comando cambiará el códec de vídeo a h264 por lo que si comparas tamaños de archivo te darás cuenta que ha aumentado el tamaño, para poder compararlo deberás configurar el códec original (en mi caso VP9) con el siguiente comando:

ffmpeg -i fallout_video.mp4 -b:v 2500k -b:a 192k -vcodec vp9 fallout_video_minus.mp4

Ahora sí podemos comparar:

A continuación pongo una tabla de referencia:


- Extraer el audio de un video

A veces nos puede interesar simplemente extraer los canales de audio de un video para poder fragmentarlo o añadirlo a otro video.

Para extraerlo a un archivo MP3, simplemente ejecuta:

ffmpeg -i fallout_video.mp4 -vn fallout_audio.mp3

FFmpeg detecta que el archivo de destino es un archivo de audio y hará la conversión automáticamente, ten en cuenta que: -vn Elimina el canal de video. -an Elimina el canal de audio.


- Recortar fragmentos

Veamos como recortar un fragmento de tiempo de un video más largo. Digamos, obtener el fragmento de video desde los 35seg hasta los 65seg (30seg de duración).

Existe un parámetro con el que podemos realizar estas operaciones y dos formas de hacerlo:

ffmpeg -i fallout_video.mp4 -ss 35 -t 30 fallout_video_frag.mp4
ffmpeg -i fallout_video.mp4 -ss 00:35 -to 01:05 fallout_video_frag.mp4

Ambas darán el mismo resultado.

Con esto también podemos extraer el audio recortado por si nos interesa un fragmento especifico:

ffmpeg -i fallout_video.mp4 -vn -ss 00:58 -to 01:02 fallout_audio_frag.mp3

- Juntar videos y audios

Fusionar fragmentos de video nos puede ayudar a crear composiciones simples para videos de presentación o de anuncio.

Antes de empezar, debemos tener en cuenta que los archivos de video que unamos deben tener las mismas características de formato (resolución, velocidad de fotogramas, códec, etc.) para que la concatenación funcione correctamente.

Para juntar dos fragmentos de video con FFmpeg usaremos el filtro concat que nos permite concatenar varios archivos de video en uno solo. Vamos a recortar dos fragmentos y ver como:

ffmpeg -i fallout_video.mp4 -ss 01:02 -to 01:05 fallout_video_frag1.mp4
ffmpeg -i fallout_video.mp4 -ss 02:26 -to 02:35 fallout_video_frag2.mp4

Primero, crearemos un archivo de texto que contenga la lista de los archivos de video a unir. Creamos un archivo llamado files.txt dentro de la misma carpeta donde están almacenados los videos

sudo nano files.txt

y agregamos los nombres de los archivos de video en él:

file 'fallout_video_frag1.mp4'
file 'fallout_video_frag2.mp4'

Donde fallout_video_frag1.mp4 y fallout_video_frag2.mp4 son los nombres de los archivos de video que deseas unir.

Ahora usaremos el filtro de concat de FFmpeg para concatenar los archivos de video. El comando será similar al siguiente:

ffmpeg -f concat -i files.txt -c copy resultado_concatenado.mp4

Explicación de los parámetros:

  • -f concat: Especifica el formato de entrada como concat, indicando que estás utilizando el filtro concat.

  • -i files.txt: Especifica el archivo de lista de concatenación como entrada.

  • -c copy: Indica a FFmpeg que copie los flujos de audio y video sin volver a codificarlos, lo que preserva la calidad sin pérdidas.

  • resultado_concatenado.mp4: Nombre del archivo de salida donde se guardará el video concatenado.


- Descargar el thumbnail del video

Vamos a trabajar con uno de los videos anteriores:

Para descargar solo la miniatura escribiremos:

yt-dlp --skip-download --write-thumbnail --convert-thumbnails jpg https://youtu.be/Bz0q0w5Jq9c?si=yot8Mp-B0_PmjuWv

Este comando le indica a yt-dlp que no descargue el video (--skip-download), pero que escriba la miniatura (--write-thumbnail) del video y que lo descargue en jpg (--convert-thumbnails .jpg).

La miniatura se guardará en el mismo directorio desde donde hemos ejecutado el comando:

Más información .

Por último, si escribes yt-dlp --help verás toda la información sobre el comando o verlo .

Tienes más ejemplos disponibles en la propia .

A veces nos puede interesar convertir un archivo de audio o video de un formato a otro por ejemplo para su publicación web. tienes más información sobre formatos y códecs.

(o MPEG-4) - códec de video ampliamente utilizado que ofrece una buena calidad de compresión y es compatible con una amplia gama de dispositivos y plataformas.

(o HEVC) - evolución de H.264 que ofrece una mayor eficiencia de compresión, lo que significa que puede proporcionar una calidad de video comparable a una tasa de bits más baja o una mejor calidad de video a la misma tasa de bits.

(MPEG Audio Layer III): Usa un algoritmo de compresión con pérdida para reducir el tamaño de los archivos de audio eliminando algunas frecuencias de audio que son menos perceptibles para el oído humano.

(Advanced Audio Coding): códec de audio más moderno y avanzado en comparación con MP3. Usa un algoritmo de compresión con pérdida más eficiente que MP3, lo que permite obtener una mejor calidad de audio para un tamaño de archivo similar.

: su principal ventaja es que es un códec de audio de código abierto y libre de regalías. Al igual que MP3 y AAC, Vorbis utiliza un algoritmo de compresión con pérdida para reducir el tamaño de los archivos de audio. Sin embargo, se ha diseñado para proporcionar una calidad de audio similar o mejor que MP3 a tasas de bits más bajas.

¿Hay alguna forma de visualizar esa imagen en mi servidor?

También puedes revisar la imagen con la herramienta jp2a que te convierte imágenes a ASCII art. Ten en cuenta que esta herramienta solo admite formatos como JPEG (.jpg, .jpeg), PNG (.png), BMP (.bmp), y GIF (.gif). Para instalarlos simplemente:

sudo apt-get install jp2a

Una vez instalado, puedes convertir una imagen a arte ASCII usando el comando jp2a seguido de la ruta de la imagen. Por ejemplo, para convertir una imagen llamada fallout.jpg:

jp2a imagen.jpg

Esto mostrará lo siguiente:

Como ves, el resultado es algo burdo pero da el pego!

yt-dlp -f "bv+ba/b" URL
yt-dlp -f "bv,ba" -o "%(title)s.f%(format_id)s.%(ext)s" URL
yt-dlp -f "b[filesize<50M] / w" URL
yt-dlp -f "bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4] / bv*+ba/b" URL
📸
aquí
aquí
documentación
Aquí
H.264
H.265
MP3
AAC
Vorbis
🔌
aquí
Page cover image
La lista de todos los formatos en los que descargar, incluidos formatos de solo audio o video y distintas resoluciones. En la captura no se ve, pero la ultima línea mostrará el nombre del video.
Video de hace 15 años, formatos de archivo diferentes
Información sobre codecs, lo interesante está abajo.
Se observa claramente que mientras que el codificado MPE-4 ocupa 95.87 MB (más que el original) y el que se ha convertido con el códec HEVC ocupa menos de la mitad, 27.02 MB sin perdida de calidad.
Los archivos de video con audio cambiado obviamente pesan menos que el original. Por orden de mayor a menor AAC (34.64MB), mp3 (34.61MB) y vorbis (33.53MB)
Bitrates de video comunes por resolución y FPS.
En Youtube se puede apreciar la miniatura o "thumbnail" de preview del video.
Podemos revisar el archivo en la carpeta, para visualizarlo deberás transferirlo a un SO con interfaz gráfica, puedes usar el mismo Tabby para ello. La imagen corresponde a una prueba hecha con formato .webp