Trabajar con medios a menudo requiere cambiar las características de los archivos multimedia, como la tasa de bits o la resolución. Encontrar una forma sencilla de comenzar puede ser bastante intimidante. En esta página, aprenderás sobre las herramientas utilizadas y cómo para instalarlos rápidamente.
En primer lugar, describimos el uso básico de dos utilidades multimedia comunes de línea de comandos: Shaka Packager y FFmpeg. Luego, te ayudamos a instalar las herramientas rápidamente. ¿Por qué debería abarcar dos aplicaciones? Si bien ambos son potentes y útiles por sí solos, tampoco lo hace todo lo necesario para preparar los medios para la Web. También creamos Conversión de medios y Encriptación de medios que muestran muchas operaciones más comunes con estas dos aplicaciones.
Estas no son las únicas opciones disponibles para las tareas de manipulación de archivos pero son dos de las más comunes y poderosas. Otras opciones incluyen la GUI. aplicaciones Miro, HandBrake y VLC. También se usan las funciones de codificación/transcodificación servicios, como Zencoder, Amazon Elastic Encoder y la API de Google Transcoder.
Empaquetador de Shaka
Shaka Packager es un SDK de empaquetado multimedia gratuito. Si usabas un reproductor multimedia en tu sitio, Shaka Packager es lo que usarías para preparar los archivos. Integra admite la conversión para los dos protocolos de transmisión de video más comunes: los anuncios dinámicos Transmisión adaptable a través de HTTP (DASH) o HTTP en vivo (HLS) Shaka Packager admite funciones clave de seguridad: encriptación común y Widevine digital. la administración de derechos (DRM). También admite transmisiones en vivo y videos on demand.
A pesar de lo que dice en el paquete, esta utilidad es para más que C++ desarrolladores. Puedes usarla como biblioteca para compilar software de medios y también como una utilidad de línea de comandos para preparar archivos multimedia para la reproducción web. Es el última capacidad que nos será útil. De hecho, para los creadores de contenido multimedia web Shaka Packager es la única forma de realizar algunas tareas sin gastar dinero y costosas aplicaciones comerciales.
Este es el patrón básico de un comando de Shaka Packager:
packager stream_descriptor [stream_descriptor-2 [stream_descriptor-n]] [flags]
Esto no es lo que obtienes si escribes packager -help
. Este ejemplo es
más fáciles de razonar, y esto refleja los ejemplos del
Documentación de Shaka Packager. Ten en cuenta que hay varios stream_descriptor
elementos en el patrón. Aunque no se muestra, puedes manipular el video.
de un archivo por separado en un solo comando.
Compara este patrón básico con un uso simple que muestra las características del archivo. En el ejemplo, alineamos partes equivalentes.
packager stream_descriptor [stream_descriptor-n] [flags]
packager input=glocken.mp4 --dump_stream_info
El resultado del comando es el siguiente:
File "glocken.mp4":
Found 2 stream(s).
Stream [0] type: Video
codec_string: avc1.640028
time_scale: 30000
duration: 300300 (10.0 seconds)
is_encrypted: false
codec: H264
width: 1920
height: 1080
pixel_aspect_ratio: 1:1
trick_play_factor: 0
nalu_length_size: 4
Stream [1] type: Audio
codec_string: mp4a.40.2
time_scale: 48000
duration: 481280 (10.0 seconds)
is_encrypted: false
codec: AAC
sample_bits: 16
num_channels: 2
sampling_frequency: 48000
language: eng
seek_preroll_ns: 20833
Busca las características que se analizaron en Conceptos básicos de los archivos multimedia. y notas algunas cosas. La altura y el ancho son los correctos para Full HD. Los códecs de audio y video están entre los códecs preferidos para sus tipos de contenedores, AAC para audio y H264 para video Observa también que las transmisiones se identifican con y números de serie. Son útiles para operaciones de manipulación de audio y video. por separado.
Observa que el resultado anterior no muestra la tasa de bits. Más allá de lo que falte, Este resultado es más fácil de leer, así que lo usamos siempre que podemos. Cuando necesitemos que Shaka Packager no puede obtener, como la tasa de bits, usamos FFmpeg.
FFmpeg
FFmpeg también es una aplicación gratuita para grabar, convertir y transmitir archivos multimedia. Sus capacidades no son mejores ni peores que las de Shaka Packager. Solo que son diferentes.
El patrón básico de un comando FFmpeg se ve de la siguiente manera:
ffmpeg [GeneralOptions] [InputFileOptions] -i input [OutputFileOptions] output
Al igual que Shaka Packager, esta aplicación puede manejar múltiples transmisiones. Algunas de sus estas opciones se usan en varias ubicaciones y manipulan el resultado del archivo de manera diferente según dónde se encuentren en el comando. Ten esto en cuenta cuando Revisa las preguntas sobre FFmpeg en Stack Overflow y otros sitios similares.
Volveremos a comparar el patrón básico con el ejemplo para mostrar el archivo del usuario.
ffmpeg [GeneralOptions] [InputFileOptions] -i input [OutputFileOptions] output
ffmpeg -i glocken.mp4
Además de la información que solicitamos, también imprime un mensaje de error. como se muestra en el siguiente ejemplo. Esto se debe a que técnicamente es un error el uso de FFmpeg. Lo usamos porque muestra información que nos interesa.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'glocken.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.17.100
Duration: 00:01:47.53, start: 0.000000, bitrate: 10715 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc), 1920x1080, 10579 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
At least one output file must be specified
Instalar aplicaciones con Docker
Si piensas continuar y probar nuestros comandos, puedes instalar el manualmente las herramientas requeridas, o puedes optar por una ruta sencilla y usar Docker. Te sugerimos que utilices Docker, porque esto le ahorrará mucho tiempo. Además de eso, hemos te proporcionamos las instrucciones para configurarlo rápidamente.
Para comenzar, crea un directorio nuevo en algún lugar de tu computadora llamado
media-tools
. puedes usar el nombre que quieras, solo ten en cuenta que las siguientes instrucciones se da por sentado que usasmedia-tools
como nombre del directorio.Crea un directorio
docker
ymedia
dentro demedia-tools
. Esto mantendrá tu directoriomedia
fuera del contexto de compilación. Esto es importante porquemedia
es el lugar donde se almacenan los archivos en los que planeamos realizar operaciones. algunos podrían ser bastante grandes. Coloca elDockerfile
directamente enmedia-tools
retrasaría la compilación de la imagen si alguna vez la recreas en la calle, tal vez para cambiar las versiones instaladas.Crea
/media-tools/docker/Dockerfile
y agrega las siguientes instrucciones de compilación:FROM google/shaka-packager:release-v2.4.3 as packager FROM jrottenberg/ffmpeg:4.3.2-alpine38 COPY --from=packager /usr/bin /usr/bin ENTRYPOINT ["sh"]
Compila la imagen:
docker build -t media-tools ./docker
Ejecuta la imagen como una shell interactiva. En Linux:
docker run -w /media -v ${PWD}/media:/media -it --rm media-tools /media #
En Windows:
docker run -w /media -v %cd%/media:/media -it --rm media-tools /media #
Mientras ejecutas la imagen, puedes verificar las versiones de FFmpeg y Shaka Packager
para validar que todo se realizó correctamente mediante la ejecución de ffmpeg -version
y
packager --version
El resultado debería verse así:
/media # ffmpeg -version
ffmpeg version 4.3.2 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 6.4.0 (Alpine 6.4.0)
configuration: --disable-debug --disable-doc --disable-ffplay --enable-shared --enable-avresample --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-gpl --enable-libass --enable-fontconfig --enable-libfreetype --enable-libvidstab --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxcb --enable-libx265 --enable-libxvid --enable-libx264 --enable-nonfree --enable-openssl --enable-libfdk_aac --enable-postproc --enable-small --enable-version3 --enable-libbluray --enable-libzmq --extra-libs=-ldl --prefix=/opt/ffmpeg --enable-libopenjpeg --enable-libkvazaar --enable-libaom --extra-libs=-lpthread --enable-libsrt --enable-libaribb24 --extra-cflags=-I/opt/ffmpeg/include --extra-ldflags=-L/opt/ffmpeg/lib
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
libpostproc 55. 7.100 / 55. 7.100
/media # packager --version
packager version v2.4.3-dd9870075f-release
Ahora que ya probaste usar Shaka Packager y FFmpeg, puedes continuar Aprender los conceptos básicos, luego, consulta los Conceptos básicos de la transmisión de contenido multimedia.