2012-05-26 22 views
5

Estoy ejecutando un OSX, no sé toneladas de conversiones de video. Pero tengo como 200 videos que están todos en formato mp4 y no se reproducirán en Firefox. Necesito convertirlos a ogg para usar la etiqueta de video html5.Cómo convertir por lotes archivos mp4 a ogg con ffmpeg usando un comando bash o Ruby

Estos archivos viven en una estructura de carpetas que hace que sea difícil hacer archivos de uno en uno. Me gustaría que el comando bash o el comando Ruby revisen todas las carpetas secundarias y encuentren todas las .mp4 y las conviertan.

me encontré con una referencia de cómo hacer esto con Google: http://athmasagar.wordpress.com/2011/05/12/a-bash-script-to-convert-mp4-files-to-oggogv/

#!/bin/bash 
for f in $(ls *mp4 | sed ‘s/\(.*\)\..*/\1/’) 
do 
ffmpeg -i $f.mp4 -acodec vorbis -vcodec libtheora $f.ogg 
done 

pero no tienen idea de cómo convertir esto desde Linux a OSX.

+0

La opción '-sameq' NO significa 'la misma calidad' [https://ffmpeg.org/trac/ffmpeg/wiki/Option%20'-sameq'%20does%20NOT%20mean%20'same%20quality '] (https://ffmpeg.org/trac/ffmpeg/wiki/Option%20%27-sameq%27%20does%20NOT%20mean%20%27same%20quality%27) –

+0

Esta respuesta no es pertinente para el pregunta porque no hace referencia al uso de esa opción. – depa

Respuesta

8

Mientras que la respuesta directa a su pregunta sería la siguiente:

#!/bin/bash 
MOVIES=~/Movies/ 
find "$MOVIES" -name '*.mp4' -exec sh -c 'ffmpeg -i "$0" -sameq "${0%%.mp4}.ogg"' {} \; 
exit; 

creo que podría encontrar mejores resultados utilizando el VP8 or webm codec, ya que le dan resultados mucho mejores y es en realidad preferred en las versiones modernas de Firefox . Teniendo en cuenta que, usted debe tratar de esto:

#!/bin/bash 
MOVIES=~/Movies/ 
find "$MOVIES" -name '*.mp4' -exec sh -c 'ffmpeg -i "$0" -sameq "${0%%.mp4}.webm"' {} \; 
exit; 

Ambos métodos se traducirá en una pérdida de calidad de los vídeos resultantes, ya que son volver a codificar el material ya codificada y, en mi opinión, incluso el códec WebM no es tan bueno como un MP4 codificado correctamente utilizando el códec h.264.

+0

forma alguna para usar ffmpg para establecer la velocidad de cuadros u otras configuraciones para mejorar la calidad en el comando? –

+0

Asegúrese de que la etiqueta -r establecerá la velocidad de cuadros y puede establecer la tasa de bits con la etiqueta -b: v para que pueda usar algo como esto: '#!/Bin/bash PELÍCULAS = ~/Movies/ buscar" $ MOVIES "-name '* .mp4' -exec sh -c 'ffmpeg -i" $ 0 "-r 23.976 -b: v 800k -bt 800k -sameq -sameq" $ {0 %%. Mp4} .webm "' {} \; exit; ' –

+0

No sugiera el uso de' -sameq' en este caso. Esta opción no significa "misma calidad", como los documentos solían implicar, y probablemente no hace lo que usted cree que hace. No está diseñado para ser utilizado entre formatos que no comparten la misma escala de cuantificador. – LordNeckbeard

5

esto es usar Ruby, suponiendo que el ffmpeg que utilizó es correcta:

Dir.glob("**/*.mp4").each do |filename| 
    new_filename = File.join(
    File.dirname(filename), 
    "#{File.basename(filename, ".mp4")}.ogg") 
    `ffmpeg -i "#{filename}" -acodec vorbis -vcodec libtheora "#{new_filename}"` 
end 

Dir.glob con "**/*.mp4" recursiva coincide con todos los archivos dentro de la extensión .mp4 subdirectorios conuna.

+0

Gracias por la respuesta, pero que vuelve: rubí convert.rb convert.rb: 3: en 'bloque en

': variable local o un método archivo'' para main: Objeto (NameError) cualquier idea –

Cuestiones relacionadas