Script para convertir vídeos en Linux

Iniciado por sosonok, 26 de Enero de 2007, 07:03:22 AM

Tema anterior - Siguiente tema

0 Usuarios y 1 Visitante están viendo este tema.

sosonok

Pongo aquí el script que ha hecho triung_cs para convertir vídeos en Linux, publicado originalmente en este hilo. Utiliza mencoder y, como se puede ver en el propio código, hay que pasarle cuatro parámetros: nombre del archivo que vamos a convertir, nombre del archivo resultante, fps y número de pasadas.  ;-)

Citar#!/bin/bash

echo ">>>>>>>>>>>>>>>>>>>>>>> CONVERT TO MEIZU MEDIA <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n"
echo
echo "                        ¡¡¡Bienvenido $USER!!!"
echo

if [ $# -ne 4 ]; then
  echo %body%#039;\a'"  > ERROR: se necesitan cuatro parametros:";
  echo "        $ ./tomeizu.sh película_origen nombre_película_destino fps num_pasadas"
  exit -1
fi

if [ $4 -eq 1 ]; then
  echo "=== Conversión: 1 PASADA ========================="
  mencoder "$1" -idx -noodml -ofps "$3" -vf scale=320:-2,expand=:240:::1,crop=320:240,rotate=1 -ovc lavc -ffourcc XVID -lavcopts vcodec=mpeg4:vbitrate=384:vmax_b_frames=0:vhq -sws 9 -srate 44100 -oac mp3lame -lameopts cbr:br=128:mode=0 -o "$2"
  echo "=== FIN DE LA CONVERSIÓN ========================"

elif [ $4 -eq 2 ]; then
  echo "=== Conversión: 2 PASADAS ========================"
  echo %body%#039;\a' "  > Pasada 1 ... (espere por favor)"
  mencoder "$1" -idx -noodml -ofps "$3" -vf scale=320:-2,expand=:240:::1,crop=320:240,rotate=1 -ovc lavc -ffourcc XVID -lavcopts vpass=1:vcodec=mpeg4:vbitrate=384:vmax_b_frames=0:vhq -sws 9 -srate 44100 -oac mp3lame -lameopts cbr:br=128:mode=0 -o /dev/null
  echo %body%#039;\a' "  > Pasada 2 ... (espere por favor)"
  mencoder "$1" -idx -noodml -ofps "$3" -vf scale=320:-2,expand=:240:::1,crop=320:240,rotate=1 -ovc lavc -ffourcc XVID -lavcopts vpass=2:vcodec=mpeg4:vbitrate=384:vmax_b_frames=0:vhq -sws 9 -srate 44100 -oac mp3lame -lameopts cbr:br=128:mode=0 -o "$2"
  echo " === FIN DE LA CONVERSIÓN ========================"

else
  NUM=2
  echo "=== Conversión: $4 PASADAS ========================"
  echo %body%#039;\a'  "  > Pasada 1 ... (espere por favor)"
  mencoder "$1" -idx -noodml -ofps "$3" -vf scale=320:-2,expand=:240:::1,crop=320:240,rotate=1 -ovc lavc -ffourcc XVID -lavcopts vpass=1:vcodec=mpeg4:vbitrate=384:vmax_b_frames=0:vhq -sws 9 -srate 44100 -oac mp3lame -lameopts cbr:br=128:mode=0 -o /dev/null
  while [ $NUM -lt $4 ]; do
    echo %body%#039;\a' "  > Pasada "$NUM" ... (espere por favor)"
    mencoder "$1" -idx -noodml -ofps "$3" -vf scale=320:-2,expand=:240:::1,crop=320:240,rotate=1 -ovc lavc -ffourcc XVID -lavcopts vpass=3:vcodec=mpeg4:vbitrate=384:vmax_b_frames=0:vhq -sws 9 -srate 44100 -oac mp3lame -lameopts cbr:br=128:mode=0 -o /dev/null
    let NUM=$NUM+1
  done
  echo %body%#039;\a' "  > Pasada "$4" ... (espere por favor)"
  mencoder "$1" -idx -noodml -ofps "$3" -vf scale=320:-2,expand=:240:::1,crop=320:240,rotate=1 -ovc lavc -ffourcc XVID -lavcopts vpass=3:vcodec=mpeg4:vbitrate=384:vmax_b_frames=0:vhq -sws 9 -srate 44100 -oac mp3lame -lameopts cbr:br=128:mode=0 -o "$2"
fi

trigun_cs

Gracias por ponerlo aquí ... yo iba a esperar unos días para probarlo y asegurarme que iba bien. El caso es que probando, me he surgido una duda: cuando haces 3 o más pasadas, la única que tiene que generar el vídeo es la última pasada,no?

Es que el script no lo hace así, sólo envía a /dev/null la primera pasada, y después va generando y "machacando" el vídeo en cada pasada. Realmente no es que sea algo importante, pero me gusta rizar el rizo XD.

Enga, un saludo!

sosonok

Pues sí, soy un desesperao xD. Sobre lo de las pasadas, pues sí, no tendría mucho sentido comprimir una y otra vez el mismo archivo, creo yo, jeje.

trigun_cs

#3
Pues bien, en el hilo original he realizado los cambios pertinentes para hacer que sólo se comprima en el vídeo en la última pasada. No lo he puesto aquí porque no quiero marear a los que vean el post, si puedes, actualízalo en cuanto puedas.

De todas formas, intentaré hacer que el script use funciones para que no se tenga que copiar "mencoder ..." todo el rato, pero bueno, eso para cuando tenga más tiempo XD.

Enga, un saludo!


pakoito

Dos cosas: a mi me da problemas si escribo el número de pasadas, en cambio si no pongo parámetro me hace 4, sacando el video en la última.

Deberias editar el post inicial y poner un prototipo de como tendríamos que ejecutar el script, como si que venía en el post original.

trigun_cs

Prueba a ver si este script te funciona. Hay alguna pequeña modificación. El modo de ejecutarlo es el mismo que el anterior:

1) Das permisos al script:
      $ chmod 755 meizu_script.sh
2) Ejecutas el script:
      $ ./tomeizu.sh película_origen nombre_película_destino fps num_pasadas

Espero que te funcione.

Un saludo!

mele

Muchas gracias por abrirnos las puertas del meizu en linux.
:banana2::guitar: :banana2: :guitar: :banana2: :guitar: :banana2: :guitar: :banana2: :guitar: :banana2: :guitar: :banana2: :guitar: :banana2:

grimbergen_beer

Tio, muchas gracias. Estaba peleándome en ubuntu con lo de codificar videos para Meizu. Gracias!
Para la calle: Cowon S9 16GB -> SoundMAGIC PL30 / Sennheiser IE8
Para casa: Gigabeat F120 Rockbox -> Bass Boost cMoy v2.0 -> Goldring DR150

Anteriores: Meizu SP 8GB (Vendido) - Sennheiser CX300 y Trekstor Vibez 12GB (Confiscados por mi pareja)

igle

Guau!!Una gran aportación, si señor. Echo mano de ella y la usaré sin duda. Si veo alguna modificación posible ya comento por este hilo.
THANKS!

aleks

esto me sucede cuando lo ejecuto.
>>>>>>>>>>>>>>>>>>>>>>> CONVERT TO MEIZU MEDIA <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n

                        ¡¡¡Bienvenido aleks!!!

./tomeizu.sh: line 39: error de sintaxis cerca de token no esperado `fi'
./tomeizu.sh: line 39: `fi'


He revisado el script (que copie y pegue en un sh) y no parece que falte nada. Ni el fi al final ni tiene ningun caracter raro cerca.

¿se os ocurre algo?

Saludos

berdin

Me pasaba creo lo mismo.. logre quitando los "'" del coloreado de los echo.
Es decir, por ejemplo en:

if [ $# -ne 4 ]; then
  echo %body%#039;\a'"  > ERROR: se necesitan cuatro parametros:";
  echo "        $ ./tomeizu.sh película_origen nombre_película_destino fps num_pasadas"
  exit -1
fi

quité el:

%body%#039;\a'

y asi con todos

trigun_cs

#12
En realidad solo hay que cambiar la línea:

echo %body%#039;\a'"  > ERROR: se necesitan cuatro parametros:
";

por

echo $'\a'"  > ERROR: se necesitan cuatro parametros:";

El problema debe de ser que cuando Sosonok copió el script, no se dio cuenta que el símbolo $ se paso al código  %body%#039; (supongo que HTML). De todas formas, en un post posterior he dejado el script para descargar directamente.

Un saludo!



aleks

Muchas gracias a todos por las respuestas.

He reemplazado la cadena %body%#039; por $' y todo funciona a la perfección.

Un saludo.

samillankis

#14
Hola  :)

Me he bajado el script que adjunta trigun_cs un poco más arriba pero no consigo convertir ningún vídeo, me dice lo siguiente:
Citar> Pasada 1 ... (espere por favor)
MEncoder 2:1.0~rc1-0ubuntu13.1 (C) 2000-2006 MPlayer Team
CPU: AMD Athlon(tm)  (Family: 6, Model: 8, Stepping: 1)
CPUflags: Type: 6 MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 1 SSE2: 0
Compiled with runtime CPU detection.
File not found: 'video.avi'
Failed to open video.avi.
Cannot open file/device.
Así con todas las pasadas.

Llevo poco tiempo en linux y no sé muy bien como funciona lo de los scripts.
¿El script lo puedo guardar donde quiera o tiene que estar en un directorio específico?
¿Los vídeos tienen que estar en la misma carpeta que el script o da igual?

Tanto el script como el vídeo que quiero convertir los he guardado en el mismo directorio:
/media/hda5/Meizu/script_videos/
y el comando que pongo para hacer la conversión es el siguiente:
~$ /media/hda5/Meizu/script_videos/meizu_script.sh video.avi video2.avi 20 4


Si alguien me puede decir que hago mal le estaré muy agradecido.
Un saludo  ;-)

EDITO: Ya lo he solucionado. He puesto el vídeo en mi home y ya funciona.