Primer conocimiento e instalación de FFMPEG (Linux)

Inserte la descripción de la imagen aquí

1. Introducción a FFmpeg

FFmpeg es un conjunto de programas informáticos de código abierto que se pueden utilizar para grabar, convertir audio y video digital y convertirlos en secuencias. Use licencia LGPL o GPL. Proporciona una solución completa para grabar, convertir y transmitir audio y video. Contiene una biblioteca de códecs de audio / vídeo muy avanzada, libavcodec. Para garantizar una alta portabilidad y calidad de códec, muchos códigos de libavcodec se desarrollan desde cero.

FFmpeg proporciona una poderosa herramienta de línea de comandos, que es muy conveniente para los usuarios de usar y desarrollo secundario.
Sitio web oficial: http://www.ffmpeg.org/.
La dirección del proyecto Github de ffmpeg es: https://github.com/FFmpeg/FFmpeg

FFmpeg está desarrollado bajo la plataforma Linux, y también se puede compilar y ejecutar en otros entornos de sistemas operativos, incluidos Windows, Mac OS X, etc. Este proyecto fue iniciado por primera vez por Fabrice Bellard y fue principalmente mantenido por Michael Niedermayer de 2004 a 2015. Muchos desarrolladores de FFmpeg son del proyecto MPlayer, y actualmente FFmpeg también se encuentra en el servidor del equipo del proyecto MPlayer. El nombre del proyecto proviene del estándar de codificación de video MPEG, el "FF" en el frente significa "Fast Forward"

Un gran software para producirlo debe tener una historia legendaria, FFmpeg es el creador del genio programador francés Fabrice Bellard (Fabrice Bella) en 2000 es para desarrollar la primera edición;
Fabrice
Bella:

Desarrolló el famoso programa de compresión ejecutable LZEXE durante la escuela secundaria
y creó el proyecto FFmpeg en 2000

En 2011, escribió una máquina virtual Linux (JSLinux) en JavaScript.
También es el autor de QEMU, TinyCC

En 2004, Michael (Michael Niedermayer) se hizo cargo de FFmpeg, y Michael agregó el sistema de espejo de filtrado libavfilter al proyecto FFmepg, haciendo que el procesamiento multimedia de FFmpeg fuera más diverso y conveniente. Después del lanzamiento de la versión 0.5 de FFmpeg, no se lanzó una nueva versión durante mucho tiempo. Más tarde, después de que FFmpeg adoptó Git como servidor de control de versiones, continuó actualizando la versión de lanzamiento.

En marzo de 2011, debido a que algunos de los participantes en el proyecto FFmpeg no eran coherentes con el método de gestión de proyectos y la dirección de desarrollo de FFmpeg, el equipo de FFmpeg se dividió en dos facciones. Una de ellas creía que FFmpeg debería centrarse más en el desarrollo de audio y video y la investigación y actualización de tecnología avanzada de audio y video. Estas personas recrearon un nuevo proyecto llamado Libav. El otro grupo cree que deben tener en cuenta la antigua tecnología FFmpeg y luego desarrollarla gradualmente.

En agosto de 2015, Michael tomó la iniciativa de dimitir como director del proyecto FFmpeg. Michael trasplantó muchos códigos y funciones de Libav a FFmpegZhong. Desde entonces, Libav y FFmpeg se han fusionado y desarrollado juntos.

2. ¿Qué puede hacer FFmpeg?

La herramienta de procesamiento de video multimedia FFmpeg tiene funciones muy poderosas que incluyen la función de captura de video, conversión de formato de video, captura de video y marca de agua de videos.

Función de captura de video:

  • La función de captura de video ffmpeg es muy poderosa. No solo puede capturar imágenes desde una tarjeta de captura de video o una cámara USB, sino también grabar la pantalla. Al mismo tiempo, también es compatible con RTP para transmitir la transmisión de video a un servidor de transmisión que admite RTSP y admite aplicaciones en vivo.

  • En la plataforma Linux, ffmpeg proporciona muy buen soporte para dispositivos de video V4L2, como: ./ffmpeg -t 10 -f video4linux2
    -s 176144 -r 8 -i / dev / video0 -vcodec h263 -f rtp rtp: //192.168.1.105:5060> /tmp/ffmpeg.sdp El
    comando anterior significa: capturar 10 segundos de video, capturar el dispositivo de video video4linux2, capturar video QCIF (176144
    ), 8 cuadros por segundo, el dispositivo de video es / dev / video0, la codificación de video es H263, el formato de salida es RTP, la dirección IP y el puerto se definen más adelante, el archivo SDP correspondiente a la transmisión se redirige a /tmp/ffmpeg.sdp y el archivo SDP se carga en el servidor de transmisión Puede transmitir en vivo.

  • Hay muy poca información sobre la captura de video de ffmpeg en Windows, pero ffmpeg aún admite la captura de video en Windows. ffmpeg admite la
    captura de video de dispositivos de video para Windows (VFW) en Windows , pero los dispositivos VFW están desactualizados y están siendo reemplazados por dispositivos de video WDM, pero ffmpeg no tiene planes de admitir WDM, pero parece que hay una herramienta para convertir WDM a VFW, por lo que ffmpeg aún puede capturar videos en Windows.

Función de conversión de formato de video:

  • función de conversión de video ffmpeg. La conversión de formato de video, como la conversión de múltiples formatos de video a formato flv, no es una conversión de señal de video.
  • ffmpeg puede realizar fácilmente la conversión mutua entre una variedad de formatos de video (wma, rm, avi, mod, etc.), por ejemplo, puede convertir el video grabado avi, etc. al formato flv utilizado por el sitio web de videos.

Función de captura de pantalla de video:

  • Para el video seleccionado, se captura una miniatura del tiempo especificado. Captura de video, obtenga imágenes estáticas e imágenes dinámicas, no se recomienda capturar archivos gif, porque los archivos gif capturados son grandes y la reproducción no es fluida.

  • Agregar marca de agua al video

  • Use el video ffmpeg para agregar una marca de agua (logotipo).

Inserte la descripción de la imagen aquí
[Bienestar del artículo] Recomiendo mi grupo de intercambio de tecnología Linux y C / C ++: [960994558] He compilado algunos libros de aprendizaje y materiales de video que creo que son mejores para compartir, ¡y puede agregarlos si los necesita! ~
Aprenda rápidamente el video de FFmpeg https://www.bilibili.com/video/BV1G5411G7XY/

3. Composición del módulo de arquitectura FFmpeg

Inserte la descripción de la imagen aquí
libavutil

  • libavutil: contiene algunas funciones de utilidad pública;

  • AVUtil es la biblioteca de herramientas principal de FFmepg. Este módulo es uno de los módulos más básicos. Muchos otros módulos a continuación se basarán en esta biblioteca para realizar algunas operaciones básicas de procesamiento de audio y video.

libavformat

  • libavformat: se utiliza para la generación y análisis de varios formatos de empaquetado de audio y video, incluidas funciones tales como obtener información requerida para decodificar para generar estructura de contexto de decodificación y leer cuadros de audio y video;

  • AVFormat
    es una biblioteca de protocolos y formatos de archivo, que encapsula la capa de Protocolo y las capas Demuxer y Muxer, lo que hace que el protocolo y el formato sean transparentes para los desarrolladores. AVFormat realiza la mayoría de los formatos de encapsulación de medios en el campo multimedia actual, incluida la encapsulación y desencapsulación, como MP4, FLV, KV, TS y otros formatos de encapsulación de archivos, RTMP, RTSP, MMS, HLS y otros formatos de encapsulación de protocolos de red.

  • Si FFmpeg admite un determinado formato de empaquetado de medios depende de si la biblioteca de empaquetado de ese formato se incluye al compilar. De acuerdo con las necesidades reales, el formato de empaquetado de medios se puede expandir, agregando su propio formato de empaque personalizado, es decir, agregando su propio módulo de procesamiento de empaque a AVFormat.

libavcodec

  • libavcodec: se utiliza para varios tipos de codificación y decodificación de sonido / imagen;

  • AVCodec es una biblioteca de códecs. Este módulo encapsula la capa de códecs, pero algunos códecs tienen sus propias licencias. FFmpeg no agregará bibliotecas como libx264, FDK-AAC, lame, etc. de forma predeterminada, pero FFmpeg es como una plataforma. Puede agregar otros códecs de terceros en forma de complementos y luego proporcionar a los desarrolladores una interfaz unificada.

  • AVCodec implementa la mayoría de los formatos de codificación y decodificación multimedia actuales, y admite tanto la codificación como la decodificación. Además de admitir MPEG4, AAC, MJPEG y otros formatos de códec de medios integrados, AVCodec también admite códecs de terceros, como la codificación H.264 (AVC), que requiere codificador x264; codificación H.265 (HEVC) , Necesita usar el codificador x265; Codificación MP3 (mp3lame), necesita usar el codificador libmp3lame. Si desea agregar su propio formato de codificación o códec de hardware, debe agregar el módulo de códec correspondiente en AVCodec.

libavfilter

  • AVFilter: Es
    una biblioteca de filtros de audio y video. Este módulo proporciona procesamiento que incluye características de audio y efectos especiales de video. En el proceso de codificación y decodificación usando la API FFmpeg, es muy conveniente usar directamente este módulo para hacer procesamiento de efectos especiales para datos de audio y video. Una forma muy eficaz.

libavdevice

  • AVDevice:
    dispositivos de entrada y salida. Por ejemplo, si necesita compilar la herramienta ffplay para reproducir sonido o video, debe asegurarse de que el módulo esté encendido y que libSDL esté precompilado, porque el módulo del dispositivo usa libSDL para la reproducción de sonido y video. Biblioteca.

libswscale

  • libswscale: se utiliza para escalar escenas de video y conversión de mapeo de color; el
    módulo SWScale es un módulo para conversión de formato de imágenes, por ejemplo, puede convertir datos YUV a datos RGB.

libpostproc

  • libpostproc: se utiliza para el procesamiento posterior al efecto;
  • El módulo PostProc se usa para el posprocesamiento, cuando usamos AVFilter, necesitamos encender el interruptor de este módulo, porque algunas funciones básicas de este módulo se usarán en Filter. Si es una versión anterior de FFmpeg, entonces es posible compilar y procesar el módulo avresample. Este módulo se usa en realidad para volver a muestrear los datos de audio originales, pero ahora se ha abandonado. Ya no se recomienda usar esta biblioteca, sino swrresample Se sustituye la biblioteca.

libswrressample

  • El módulo SwrRessample se puede utilizar para remuestreo de audio, que puede convertir el número de canales, formato de datos, frecuencia de muestreo y otra información básica de audio digital.

ffmpeg

  • ffmpeg: una herramienta proporcionada por este proyecto, que se puede utilizar para la conversión de formato, decodificación o codificación instantánea de tarjetas de TV, etc .;

ffsever

  • ffsever: un servidor de transmisión instantánea multimedia HTTP;

ffplay

  • ffplay: es un reproductor simple que usa la biblioteca ffmpeg para analizar, decodificar y mostrar a través de SDL;

4. Instale ffmpeg en Linux

ffmpeg es una herramienta de procesamiento de audio y video muy poderosa, el sitio web oficial es: Introducción al sitio web oficial de FFmpeg ffmpeg es: una solución completa y multiplataforma que puede grabar, convertir y transmitir audio y video. ffmpeg no solo puede reproducir videos, sino que también proporciona herramientas de línea de comandos para procesar videos. Además, hay una poderosa biblioteca de procesamiento de video para el desarrollo. A continuación, se muestra una operación simple de transcodificación de línea de comandos del video que presenta el proceso de instalación de ffmpeg usando Linux como ejemplo. Es el contenido de entrada más fácil en ffmpeg.
  Primero vaya al sitio web oficial para descargar el paquete fuente, aquí está ffmpeg-3.3.1.tar.bz2, después de la descarga, cárguelo en Linux para la instalación, primero descomprima el paquete de instalación:
tar -xjvf ffmpeg-3.3 .1.tar.bz2
cd ffmpeg-3.3.1 /
Si ejecuta configure directamente ahora, se puede informar del siguiente error: el
Inserte la descripción de la imagen aquí
error significa que el paquete yasm / nasm no existe o es muy antiguo, puede usar –disable-yasm para deshabilitarlo Compilación de opciones, yasm es un ensamblador y reescribe completamente el entorno de ensamblaje nasm, acepta sintaxis nasm y gas, admite conjuntos de instrucciones x86 y amd64, por lo que puede instalar yasm aquí. La dirección de descarga es: El ensamblador modular de Yasm Después de ingresar al Proyecto, descargue el paquete fuente de 1.3.0 y ejecute el siguiente comando para instalar:
tar -xvzf yasm-1.3.0.tar.gz
cd yasm-1.3.0 /
./configure
make
make install Los
parámetros de compilación son todos predeterminados, instale directamente Simplemente vaya al sistema. Después de que la instalación sea exitosa, regrese al directorio donde se descomprime ffmpeg, ejecute el siguiente comando para compilar e instalar:
./configure --enable-shared --prefix = / monchickey / ffmpeg
make
make install

El proceso de compilación es un poco largo. Después de esperar pacientemente, ejecute cd / monchickey / ffmpeg / para ingresar al directorio de instalación y verifique que haya 4 directorios: bin, include, lib y share. Bin es el directorio binario del programa principal de ffmpeg e include es C / C ++ El directorio de archivos de encabezado, lib es el directorio de archivos de biblioteca compilado, share es el directorio de documentos, luego ingrese al directorio bin y ejecute ./ffmpeg -version para ver la información detallada de la versión actual. De forma predeterminada, generalmente informará libavdevice.so.57: can't open archivo de objeto compartido: no existe tal archivo o directorio, la razón es que el directorio lib no está cargado para enlazar con la biblioteca del sistema, la lista de directorios del sistema ld está en /etc/ld.so.conf, abra el archivo, encontrará que hace referencia a / etc / ld .so.conf.d / Todos los archivos .conf a continuación, como mariadb-x86_64.conf, solo necesitamos crear un archivo y escribirlo en la ruta lib, ejecute el comando: vim /etc/ld.so.conf.d/ffmpeg .conf Luego agregue una línea de contenido: / monchickey / ffmpeg / lib y luego guarde y salga, luego ejecute ldconfig para que la configuración sea efectiva, y ahora ejecute nuevamente. / ffmpeg -version muestra que es normal.
Inserte la descripción de la imagen aquí
Luego puede agregar el directorio bin a la variable de entorno según sea necesario. Para asegurarse de que puede usar el comando ffmpeg en cualquier momento, probemos la transcodificación del video:
  primero, un archivo de video en formato avi, el tamaño es 37M, ahora use ffmpeg para convertir a formato mp4, ejecute el siguiente comando:
ffmpeg -i test.avi out
Después de confirmar el .mp4 , verá que la pantalla se desplaza para comenzar a procesar y el video se convierte después de aproximadamente medio minuto. Después de la conversión, el tamaño del video mp4 es 17M. Puede descargarlo para obtener más detalles.
Inserte la descripción de la imagen aquí
Ahora se completa la instalación de ffmpeg y la conversión de video de línea de comandos más simple.De hecho, la herramienta de línea de comandos ffmpeg puede tener muchos parámetros sin programación para lograr funciones poderosas.

Supongo que te gusta

Origin blog.csdn.net/weixin_52622200/article/details/110714593
Recomendado
Clasificación