1 votos

Compruebe múltiples archivos simultáneamente

Estoy usando ffmpeg para convertir muchos videos en avi con este código.

ffmpeg -i input.mp4 -vcodec mpeg4 -qscale:v 1 -aspect 16:9 output.avi

¿Hay alguna manera puedo aplicar esto a 6 videos al mismo tiempo?

4voto

Tobi Puntos 58

Un enfoque simple de ellos funcionando al mismo tiempo sería llamarlos como procesos en segundo plano:

#!/bin/bash
ffmpeg -i input1.mp4 -vcodec mpeg4 -qscale:v 1 -aspect 16:9 output1.avi &
ffmpeg -i input2.mp4 -vcodec mpeg4 -qscale:v 1 -aspect 16:9 output2.avi &
ffmpeg -i input3.mp4 -vcodec mpeg4 -qscale:v 1 -aspect 16:9 output3.avi &
ffmpeg -i input4.mp4 -vcodec mpeg4 -qscale:v 1 -aspect 16:9 output4.avi &
ffmpeg -i input5.mp4 -vcodec mpeg4 -qscale:v 1 -aspect 16:9 output5.avi &
ffmpeg -i input6.mp4 -vcodec mpeg4 -qscale:v 1 -aspect 16:9 output6.avi &

El & al final de cada línea de comando señala los comandos como procesos en segundo plano.

Pero ten en cuenta que estos procesos "luchan" por recursos del procesador.

1voto

Robert Gilliam Puntos 21

Uno de los grandes comando

Puede utilizar un comando si se prefiere:

ffmpeg -i video1.mp4 -i video2.mp4 -i video3.mp4 -i video4.mp4 -i video5.mp4 -i video6.mp4 \
-map 0 -c:v mpeg4 -q:v 1 -aspect 16:9 video1.avi \
-map 1 -c:v mpeg4 -q:v 1 -aspect 16:9 video2.avi \
-map 2 -c:v mpeg4 -q:v 1 -aspect 16:9 video3.avi \
-map 3 -c:v mpeg4 -q:v 1 -aspect 16:9 video4.avi \
-map 4 -c:v mpeg4 -q:v 1 -aspect 16:9 video5.avi \
-map 5 -c:v mpeg4 -q:v 1 -aspect 16:9 video6.avi

Bash bucle

O utilizar una fiesta para el bucle de "lote" de la codificación, que es lo que yo haría, porque es escribir menos. No codificar todos a la vez, pero uno por uno.

for f in *.mp4; do ffmpeg -i "$f" -c:v mpeg4 -q:v 1 -aspect 16:9 "${f%.*}.avi"; done

Velocidad

Como para la velocidad de codificación, con mpeg4, el método más rápido es probable que zx485 la respuesta. Mis dos ejemplos debe ser aproximadamente la misma velocidad que la otra, pero puede depender de su hardware, el número de entradas, etc.

0voto

Takuya Sawada Puntos 1

Puede utilizar este comando para codificar los vídeos enteros en forma recursiva de cwd.

find -name '*.avi' | sed 's/\.avi$//g' | xargs --replace ffmpeg -i "{}.mp4" -c:v mpeg4 -q:v 1 -aspect 16:9 "{}.avi"

Y si quieres codificar en paralelo, se puede utilizar este comando.

find -name '*.avi' | sed 's/\.avi$//g' | xargs --replace ffmpeg -i "{}.mp4" -c:v mpeg4 -q:v 1 -aspect 16:9 "{}.avi"

-Popción de xargs significa el número de procesos. Tal vez, ffmpeg comando se supone que utiliza hilo para compilar video en paralelo como otros menciona, estos procesos también «luchar» para recursos de procesador.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: