Proyecto en mente: DVD to DivX
-
buenas, ayer pase mi primer DivX en Linux!! una gran experiencia.
Lo pude hacer gracias a estos links:
http://tuxpower.f2g.net/mencoder.php
http://grupos-locales.hispalinux.es/material/UsarMencoder.htmlEl primero el mejor!
Pos bueno, las ventajas son k graba directamente del DVD al disco en formato ya *.avi [DivX]. O sea, "on-the-fly", con tres pasadas, la primera la del audio, i luego dos de video.
El resulta muy bueno!!
Lo k hay k hacer es lo siguiente: Calcular el bitrate, calcular el crop (lo k se corta, bordes superiores e inferiores) i luego ya ripear i convertir.
Pase Ice Age en 2 horas. Mucho mas rapido k en Win, por no tener k gravar todos los vobs i paranoias.
Pues bueno, el tema es el siguiente, podriamos hacer un programa, no necesariamente bajo escritorio, sino en consola, k primero mirase si tienes los codecs i el mplayer, sino k se los baje (utilizando CVS), compilar si es necesario, calcular bitrate, calcular crop, i luego ya rpiear.
Es sencillo en un simple programa basado en C o perl i similares se podria hacer.
Tambien kien sepa nos podria hechar una mano i hacerlo bonito para KDE, Gnome i otros.
K os parece? yo podria hacer el codigo fuente en C si lo kereis usar.
Sobre calcular el bitrate aki hay como un programa en bash:
Script encodea-dvd:
#!/bin/bash
if [ $# != 1 ] ; then
echo "Uso: encodea-dvd <tiempo en="" segundos="" de="" la="" peli="">"
echo ""
exit 1
fiMaximo tamanyo es 700mb o sea 716800kbytes pero ponemos un poco menos por si acaso
MAXSIZE=700000
SEGUNDOS=$1
MINUTOS=$(($SEGUNDOS/60))#Rate del audio es 128bits/s o 16kbytes/s
AUDIOSIZE=$((16*$SEGUNDOS))
LIBRE=$(($MAXSIZE - $AUDIOSIZE))
RATE=$((($LIBRE*8) / $SEGUNDOS))echo "Calculando rate para pelicula de duracion $MINUTOS minutos…"
echo "Rate estimado: $RATE"
FINALSIZE=$(( ($RATE * $SEGUNDOS)/8 + $AUDIOSIZE))
echo "Tamaño estimado: $FINALSIZE"
echo "El comando seria:"
echo "mencoder -dvd 1 -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=$RATE -vop scale -zoom -xy 640 -oac mp3lame -lameopts br=128 -o file.avi"</tiempo>Tambien hay otro mas currao pero yo no lo puedo compilar pq hay archivos corruptos, os pongo el link a ver si vosotros podeis arreglarlo:
http://tuxpower.f2g.net/divxcalc.php
Bueno pos eso, k va bien i simplemente se podria currar i k haga solo todas las cosas k se necesitan, basandonos en los programas k ya hacen esto…
Salu2!
-
Uhmm pues para esto existe un programa muy bueno con el que yo he ripeado algun que otro CD, desconozco si lleva integrado el DeCSS pero teniendo libdecss no habria problema si no fuera asi.
El programa es el dvd::rip
a ver si se puede hacer algo molon. Ya que nos ponemos con el codigo como minimo podriamos traducirlo.
-
buenas acabo de pasar El Señor de los anillos: La comunidad del Anillo, la version extendida, k dura casi 4 horas :eek: :eek:
La verdad no se si la calidad es buena o deja mucho k desear, no se como medirlo. La he pasado a 820 de bitrate ocupa 691mb (son dos cd's)
Lo k si k noto eske se ve como una niebla de pixels si si, pero en todas las k tengo. Me han comentado que es pq no tengo el anti-aliasing puesto. En win las k digo se ven bien…:(
En los drivers de nvidia, como se activa el anisontrompics i el anti-aliasing??
Enga, salu2!
PD: si eso mañana provare de pasarla otra vez con el programa este k dices a ver k resultados obtengo.
Salu2!
-
Niebla de pixeles?? pero eso es en la imagen? si es asi es porque le has puesto demasiada compresion al video, ocurre igual cuando comprimes los JPG a mas del 50%
Lo del anti aliasing que yo sepa es cosa de las fuentes :rolleyes:
No obstante creo que es la configuracion que le has puesto, quizas con mas bitrate pero con la imagen mas pequeña iria bien, ya que al ampliar no se ve ese efecto. Lo digo xq yo tengo el señor de los anillos en 2cds y se ve bastante bien con 800 de ancho
-
molaria mucho pq las opciones del menconder son complicadas y teclear tanto es shungo <br />lo primero que yo haria es ver si hay algo similar existente pq puede ocurrir <br />necesitaras que el programa calcule el bitrate y el cropsice para esto puedes usar el mencoder o <br />puedes hacer que el usuario introduzca el nombre del archivo de destino y el bitrate y el tamaño del archivo para segmentarlo y demas <br />programa para ripear dvd sin mencoder <br /><a href="http://drip.sourceforge.net/" target="_blank">http://drip.sourceforge.net/</a><br />coleguita se te han adelantado frontend grafico para mencoder y mplayer<br /><a href="http://acidrip.thirtythreeandathird.net/" target="_blank">http://acidrip.thirtythreeandathird.net/</a><br />y aqui tenemos aun script en perl que hace eso que tu quieres <br />por si acaso el script que he pegado esta mal <br />esta disponible en la pagina del mplayer <br /><a href="http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/TOOLS/dvd2divxscript.pl" target="_blank">http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/TOOLS/dvd2divxscript.pl</a><br />#!/usr/bin/perl<br /><br />#<br /># 2002 by Florian Schilhabel florian.schilhabel@web.de<br />#<br />#<br /># version 0.1 initial release 22/08/2002<br />#<br />#<br /># If you have any comments, suggestions, etc., feel free to send me a mail ;-))<br /># flames and other things like that should go to /dev/null<br /># thankx to all the mplayer developers for this really great piece of software<br />#<br />#<br /># This script is free software; you can redistribute it and/or<br /># modify it under the terms of the GNU Lesser General Public<br /># License as published by the Free Software Foundation; either<br /># version 2 of the License, or (at your option) any later version.<br />#<br /># This script is distributed in the hope that it will be useful,<br /># but WITHOUT ANY WARRANTY; without even the implied warranty of<br /># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU<br /># Lesser General Public License for more details.<br />#<br /># You should have received a copy of the GNU Lesser General Public<br /># License along with this library; if not, write to the Free Software<br /># Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA<br />#<br />#<br />#<br />use Getopt::Long;<br /><br /># specify your default Settings here...<br /><br />$abr_default = 128; # The default AudioBitRate<br />$lang_default = "de"; # ... the language<br />$cdsize_default = 700; # ... the CD-Rom Size<br />$writedev_default = "0,1,0"; # ... the CD Writer Device<br />$speed_default = 4; # and the writer speed<br /><br /># end of default Settings<br /><br /><br /><br />sub delete_tempfiles {<br /> if (open(FILE, "< audio.stderr")) {<br /> close (FILE);<br /> system ("rm audio.stderr")<br /> }<br /> if (open(FILE, "< frameno.avi")) {<br /> close (FILE);<br /> system ("rm frameno.avi");<br /> }<br /> if (open(FILE, "< lavc_stats.txt")) {<br /> close (FILE);<br /> system ("rm lavc_stats.txt");<br /> }<br />}<br /><br />GetOptions( "help" => $help,<br /> "abr=i" => $abr,<br /> "lang=s" =>$lang,<br /> "cdsize=i" => $cdsize,<br /> "dvd=i" => $dvd_track,<br /> "keeptemp" => $keeptemp,<br /> "shutdown" => $shutdown,<br /> "out=s" => $output,<br /> "writecd" => $writecd,<br /> "writedev=s" => $writedev,<br /> "speed=i" => $speed );<br /><br />if ($help) {<br /> print "Welcome to the DVD to DIVX Helper Script\n";<br /> print "\n";<br /> print "this script encodes a DVD track in 3-pass mode to libavcodec's mpeg4\n";<br /> print "Optionally it writes the resulting MovieFile to a CD-Rom\n";<br /> print "as well as the corresponding audio track to mp3\n";<br /> print "Optionally it writes the resulting MovieFile to a CD-Rom\n";<br /> print "and shuts down the Computer.\n";<br /> print "If you like, you can watch the mencoder output on /dev/tty8\n";<br /> print "Usage:\n";<br /> print "--help show this text\n";<br /> print "--abr (AudioBitRate) Please enter the desired bitrate\n";<br /> print " this can be either [96|128|192] kbit/sec.\n";<br /> print " Default: 128 kbit/sec.\n";<br /> print "–lang specify the Language of the audio track\n";<br /> print " this can be for example <en> or <de>\n";<br /> print " Default: <de>\n";<br /> print "--dvd specify the DVD Track, you want to encode\n";<br /> print "--cdsize specify the Size of your CD-ROM\n";<br /> print " Default: 700MB\n";<br /> print "--shutdown Shutdown the System, when the encoding process has finished\n";<br /> print " this will only be possible if you are root\n";<br /> print "--out Specify the Name of your encoded Movie\n";<br /> print " The File Extension will be appended automatically\n";<br /> print "--writecd takes the newly created Movie and writes it to a CD-Rom\n";<br /> print "--writedev is the usual cdrecord device identifier\n";<br /> print " for example 0,1,0\n";<br /> print "--speed the writing speed\n";<br /> print " Default: 4\n";<br /> exit;<br />}<br /><br />delete_tempfiles();<br /><br /># testing user values && set defaults...<br /><br />if ($abr == 96){}<br />elsif ($abr == 128) {}<br />elsif ($abr == 192) {}<br />elsif ($abr == 0 ) {<br /> print "No AudioBitRate specified - Setting to Default Value\n";<br /> $abr = $abr_default;<br />}<br />else {<br />print "AudioBitRate not valid. please choose [96|128|192]\n";<br />exit;<br />}<br /><br />if ($lang eq "") {<br /> print "No Language specified - Setting to Default Value\n";<br /> $lang = $lang_default;<br />}<br />else {}<br /><br />if ($dvd_track == 0 ) {<br /> print "No DVD Track selected - You must specify one with: –dvd trackno.\n";<br /> exit;<br />}<br /><br />if ($cdsize == 650) {}<br />elsif ($cdsize == 700) {}<br />elsif ($cdsize == 800) {}<br />elsif ($cdsize == 0 ) {<br /> print "No CD Size Specified - Setting to Default Value\n";<br /> $cdsize = $cdsize_default;<br />}<br /><br />else {<br />print "CD Size not valid. please choose [650|700|800]\n";<br />exit;<br />}<br /><br />if ($output eq "") {<br /> print "No MovieName given - You must specify one with: –out [movie_name]\n";<br /> exit;<br />}<br />else {<br /> ($name, $extension) = split(/./, $out);<br /> if ($extension eq "avi") {<br /> $vob_tempfile = "$name.vob";<br /> $avi_filename = "$output";<br /> }<br /> else {<br /> $vob_tempfile = "$output.vob";<br /> print "VOB CacheFile set to $vob_tempfile\n";<br /> $avi_filename = "$output.avi";<br /> print "Movie Filename set to $avi_filename\n";<br /> }<br />}<br /><br />if ($shutdown) {<br /> # test who i am<br /> $user =
id -u
;<br /> if ($user == 0) {<br /> print "System will be shut down after Movie encoding\n";<br /> }<br /> else {<br /> print "Cannot shutdown the system after Movie encoding - you are not 'root'\n";<br /> exit;<br /> }<br />}<br /><br />if ($writecd) {<br /> if ($writedev == "") {<br /> print "Setting CD Writer Device to Default Value\n";<br /> $writedev = $writedev_default;<br /> }<br /> if ($speed == 0) {<br /> print "Setting CD Writer Speed to Default value\n";<br /> $speed = $speed_default;<br /> }<br /><br />}<br /><br /><br /><br />###<br /><br />print "Your Settings for this run are:\n";<br />print "AudioBitRate: $abr\n";<br />print "Language: $lang\n";<br />print "DVD-Track: $dvd_track\n";<br />print "CD-Rom Size: $cdsize\n";<br />print "Movie FIlename: $avi_filename\n";<br />if ($writecd) {<br /> print "CD Writer Dev.: $writedev\n";<br /> print "Writer Speed: $speed\n";<br />}<br /><br /># here comes the fun part…<br /><br />print "precacheing...\n";<br />$status = system ("mencoder -dvd $dvd_track -ovc copy -oac copy -alang $lang -o $vob_tempfile 1>/dev/tty8 2>/dev/tty8");<br />die "Prechacheing failed. mencoder exited with Status Code $?" unless $status == 0;<br /><br />print "Encoding Audio...\n";<br />$status = system ("mencoder $vob_tempfile -ovc frameno -oac mp3lame -lameopts br=$abr:cbr:vol=3 -o frameno.avi 1>./audio.stderr 2>/dev/tty8");<br />die "Encoding Audio failed. mencoder exited with Status Code $?" unless $status == 0;<br /><br /># now we have to find out the recommended bitrate for the Video encoding process...<br /># my current method to find this out is, hmm, well, strange<br /># but anyway, it works ;-))<br /><br />open(FILE, "< audio.stderr") or die "Unable to open audio.stderr.";<br />@lines = <FILE>;<br />foreach $line (@lines) {<br /> ($index, $zz) = split(" ", $line);<br /> if ($index eq "Recommended") {<br /> ($a, $b, $c, $d, $size, $f, $bitrate) = split(" ", $line);<br /> if ($cdsize == $size) {<br /> $video_bitrate = $bitrate;<br /> print "Setting Videobitrate to $video_bitrate\n";<br /> }<br /> }<br />}<br />close (FILE);<br /><br />print "Encoding Video Stream, 1st pass...\n";<br />$status = system ("mencoder $vob_tempfile -ovc lavc -lavcopts vpass=1:vcodec=mpeg4:vbitrate=$video_bitrate:vhq -oac copy -o $avi_filename 1>/dev/tty8 2>/dev/tty8");<br />die "Encoding Video Stream failed. mencoder exited with Status Code $?" unless $status == 0;<br /><br />print "Encoding Video Stream, 2nd pass...\n";<br />$status = system ("mencoder $vob_tempfile -ovc lavc -lavcopts vpass=2:vcodec=mpeg4:vbitrate=$video_bitrate:vhq -oac copy -o $avi_filename 1>/dev/tty8 2>/dev/tty8");<br />die "Encoding Video Stream failed. mencoder exited with Status Code $?" unless $status == 0;<br /><br />print "finished encoding\n";<br /><br /><br />if ($writecd) {<br /> print "Now writing CD-Rom\n";<br /> $status = system("mkisofs -r -J $avi_filename | cdrecord speed=$speed dev=$writedev -data - 2>/dev/tty8 1>/dev/tty8");<br /> die "Writing CD failed. cdrecord exited with Status Code $?" unless $status == 0;<br />}<br />delete_tempfiles();<br /><br />print "Finished - have a nice day ;-)\n";<br />if ($shutdown) {<br /> system("halt");<br /> exit;<br />}<br />exit;<br /><br />lamento hacerte la puñeta (se te veia ilusionad@) pos nada a disfrutar del scrip y o mejorarlo quien sabe -
Edito lo dicho!! se ve perfecta!!!! la e puesto k se vea en la tele i de p*** madre!!!! igual k el DVD. En todas las zonas menos donde hay niebla, k alli se nota un pokitin.
Sigo diciendo k si veo los videos en la pantalla se ven mal, pero en la tele, madre mia!! perfectas!
A ver si me miro estos links k me has puesto i los scritps…
Gracias!
-
Ya veo marcalj q te has podido con tu primer DVD;
a que es bueno el mencoder? tenia razon?
Y ya veo q esto empieza a ser un foro de los buenos; que empezais a poner codigo y todo…
Venga q somos buenos.... -
si si crafton el mplayer es muy bueno merci
El programa segundo k has puesto seria lo k yo tenia en mente, muchas gracias. Aunke no staria nada mal ver el codigo i entender como se hace.
yo se lenguaje "C" pero solamente aplicado a memoria i archivos, no se interactuar con las carpetas, i moverme para instalar cosas i poner comandos…
No se si eso el C lo puede hacer, supongo k habria k usar perl o bash oa alguno similar.
Para usar entorno grafico k se necesita??
Venga, gracias!