Estoy usando ffmpeg para agregar un JPG a un MP4 para hacer un MP4.
Como solo hay una imagen para hacer el video, me pregunto si hay una manera de reducir el tamaño del video.
Mando:
$ ffmpeg -loop 1 -i image.jpg -i audio.mp3 -shortest -c:a copy output.mp4
Resultados:
image.jpg
= 26.7K (imagen no tan clara)audio.mp3
= 64.6M (54 minutos)output.mp4
= 80.6M (el resultado del video no es tan claro, la música sigue siendo buena)
¿Es un tamaño razonable para MP4?
Respuestas:
Para subir a YouTube
H.264: archivos más pequeños
Este método usa libx264 para codificar video H.264. Es más lento que el método de copia de flujo a continuación, pero potencialmente generará un tamaño de archivo más pequeño.
Copia de flujo: proceso más rápido
Este método solo transmite copias (sin codificación) de la imagen al contenedor MKV. Es súper rápido, pero si el tamaño es importante, el método anterior puede producir un archivo más pequeño.
YouTube acepta casi cualquier cosa, por lo que estos comandos utilizan algunos trucos para acelerar la codificación o reducir el tamaño del archivo y mantener la calidad alta porque YouTube volverá a codificar lo que le des. A tu jugador probablemente no le gustará, pero YouTube sí.
En estos ejemplos, se utiliza una velocidad de cuadro muy baja que debería procesarse más rápido que el valor predeterminado de 25 fps.
La más amplia compatibilidad para cualquier jugador.
Esto debería jugar en casi cualquier cosa, excepto en dispositivos muy antiguos (cambie
-profile:v main
a-profile:v baseline
si ese es el caso).Si su entrada de audio ya es AAC, cambie
-c:a aac
a-c:a copy
para evitar una codificación innecesaria.El tiempo de codificación será más largo y el tamaño del archivo será mayor que los comandos de YouTube anteriores.
Ver FFmpeg Wiki: H.264 para más información.
fuente
Unrecognized option 'preset'. Error splitting the argument list: Option not found
ffmpeg
comando completo y la salida completa de la consola del comando, luego proporcione el enlace en un comentario.Con solo la información que proporcionó, esto es lo que puedo pensar.
Vamos por partes:
De lo que estás hablando es de cuadros por segundo (fps), no tasa de bits. Y tienes razón en el concepto. Beign solo una imagen fija 1 fps no sería un problema.
En este caso, el tamaño de la imagen no tendría un peso significativo porque estamos tratando con una sola imagen fija. Si se tratara de un video de alta calidad, entonces es un problema diferente.
La resolución que estás diciendo es 1280x720.
No veo el punto en la
-loop 1
opción aquí, solo ralentizará el proceso. ¿Usó-shortest
porque el archivo tiene más de 1 flujo de entrada? Si no, entonces no hay razón para usarlo. Como usaste-acodec copy
, tendré que suponer que no quieres volver a codificarlo.Para una salida de 720p 1 fps sin volver a codificar y sin tocar la tasa de bits:
ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -s 1280x720 output.mp4
Señale el caso de que tiene más de una secuencia de entrada y desea que ffmpeg termine la codificación en la secuencia más corta y luego:
ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -s 1280x720 -shortest output.mp4
Ahora, si tiene que cambiar la tasa de bits (digamos 1024k como ejemplo);
ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -b:v 1024k -bufsize 1024k -s 1280x720 output.mp4
Ver: limitar la tasa de bits de salida
Tenga en cuenta que si aún desea un video de menor tamaño en algún momento, tendrá que sacrificar la calidad para lograrlo. Y otras formas de hacerlo implican volver a codificar con compresión con pérdida.
Por lo que dices, la información que brindas y lo que intentas hacer, creo que parece que tu objetivo es incrustar la carátula del álbum en mp3. Si ese es su objetivo, esto se adaptaría mejor a sus necesidades:
ffmpeg -i input.mp3 -i cover.jpg -map_metadata 0 -map 0 -map 1 output.mp3
Si nada aquí satisface sus solicitudes, brinde más información.
fuente
-framerate
como una opción de entrada y eliminar la salida-r
: de lo contrario, se usará la velocidad de fotogramas de entrada predeterminada de 25 y luegoffmpeg
se caerán los cuadros para lograr-r 1
. Si solo declara la velocidad de fotogramas de entrada, la salida utilizará la misma velocidad de fotogramas.