Video en gnu/linux

Qué se necesita

  • debian multimedia repos
  • cinelerra
  • ffmepg
  • mencoder

descargar videos de Youtube

Herramientas en firefox para descargar videos embebidos

  • Download Helper
  • Media Player Connectivity

procesar videos

Pasar videos a theora

lo mas recomendable (enero 2011), usar mencoder pasando de flv a un formato estandar, como DVD, haciendo el recorte o subtitulado, y luego comprimir al formato definitivo

mencoder-ss hh:mm:s -endpos hh:mm:ss \
-oac lavc -ovc lavc -of mpeg -mpegopts \
format=dvd:tsaf -vf scale=720:480,harddup -srate 48000 \
-af lavcresample=48000 \
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000\
:keyint=18:vstrict=0:acodec=ac3:abitrate=192:aspect=4/3 \
-ofps 30000/1001 \
-sub subtitulos.srt -subfont-text-scale 3 -subpos 95 -utf8 \
-o temp_subtitulado.mpg Youtube-video.flv 

# nota 1: el aspecto original para DVD es 16/9, pero aca lo llevamos a 4/3
# (ojo, aspect y tamaño (size) son cosas distintas, en el video los pixel 
# se "estiran" con el aspecto)

# para llevar a 560px de ancho
# en 4/3 llevar a 630x420

con ffmpeg2theora

ffmpeg2theora origen.flv -x <ancho> -y <alto> -s <inicio segundos> -e <fin segundos> -v <video quality 0-10 0=max> -V <video bitrate en kb/s de 1 a 16778>

pasar a un formato DVD temporal, facil de procesar (sale un archivo pesado) con ffmpeg

ffmpeg -i Youtube-video.flv -target ntsc-dvd -aspect 4:3 temp.mpg
#nota: aspect depende del aspecto del video 16/9, o 4/3

o con mencoder y agregando subtitulos -> http://www.mplayerhq.hu/DOCS/HTML/en/menc-feat-vcd-dvd.html http://forums.debian.net/viewtopic.php?t=17783

mencoder -oac lavc -ovc lavc -of mpeg -mpegopts \
format=dvd:tsaf -vf scale=720:480,harddup -srate 48000 \
-af lavcresample=48000 \
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000\
:keyint=18:vstrict=0:acodec=ac3:abitrate=192:aspect=4/3 \
-ofps 30000/1001 \
-sub subtitulos.srt -subfont-text-scale 3 -subpos 95 -utf8 \
-o temp_subtitulado.mpg Youtube-video.flv 

# nota 1: el aspecto original para DVD es 16/9, pero aca lo llevamos a 4/3
# (ojo, aspect y tamaño (size) son cosas distintas, en el video los pixel 
# se "estiran" con el aspecto)

Formato para embeber theora/vorbis video html5 en mi blog

ffmpeg2theora temp_sub.mpg -x 560 -y 424 -V 1000 -o html5video.ogv

nota: -V 600 da como 5MB por minuto nota: 560px es el ancho del area principal de mi blog nota 2: por alguna razon, las dimensiones deben ser multiplos de 8 para theora

firefogg es un conversor a ogg con interfase gráfica que se instala como un plugin de firefox

más ejemplos con ffmepg

$ ffmpeg -i youtube.flv -vcodec libtheora -sameq -acodec vorbis -ab 128k -ar 44100 out.ogg

$ ffmpeg -i input.flv out_theora.ogg
# ojo! por defecto no usa vorbis para audio, puede usar flac

$ ffmpeg2theora input.avi
# output input.ogv
# con un .flv me da error!

Recortar un fragmento de tiempo

para marcar el inicio del recorte:

-ss 00:03:00

ó -ss 180

para marcar la duración del recorte:_

-t 00:12:00

ó -t 720

ejemplo, pasar de .flv a ogg solo 45 segundos desde el minuto 9

$ ffmpeg -i youtube.flv -ss 00:09:00 -t 45 -vcodec libtheora -sameq -acodec vorbis -ab 128k -ar 44100 out.ogg

Extraer Audio

$ ffmpeg -i Video_de_YouTube.flv -nv -acodec vorbis Just_The_Audio.ogg

controles de audio para ffmpeg

-aframes <number>
    Set the number of audio frames to record. (??)
-ar <freq>
    Define frecuencia de sampleo (default = 44100 Hz). 
-ab <bitrate>
    Define audio bitrate en bit/s (default = 64k). 
-aq <q>
    Define calidad del audio (depende del codec)
    para vorbis 
    -aq 0  --> mala calidad
    -aq 60 --> buena
-ac <channels>
    Define numero de canales (default = 1, stereo = 2). 
-an
    Disable audio recording. (??)
-acodec <codec>
    Define el codec:
    ogg vorbis --> -acodec vorbis
-newaudio
    Añade una pista nueva de audio. Si se desea 
    especificar parámetro, debe hacerse antes
    de '-newaudio'. ejemplo:

    ffmpeg -i file.mpg \ 
    -vcodec copy \ 
    -acodec ac3 -ab 384k test.mpg \
    -acodec mp2 -ab 192k -newaudio

-alang code
    Set the ISO 639 language code (3 letters) 
    of the current audio stream. (??)

Manuales de ffmpeg

Manuales Theora

Más recursos

Embeber videos en HTML5

Ejemplo de código HTML5 para embeber video

<video controls>
<source type="video/ogg" src="path/to/video.ogg"></source>
<div>Tu navegador no soporta el elemento HTML5 estándar <samp>"video"</samp> para 
reproducir video embebido en formato <a href="http://es.wikipedia.org/wiki/Ogg">ogg</a> 
libre de patentes, estuviste flojo! 
(<a href="http://www.mozilla-europe.org/es/firefox/">Actualizate</a> a Firefox 3.5!).<br />
Podés <a href="path/to/video.ogg">descargar el video desde aquí</a>.</div>
</video>

más actualizado (2012)

<video src="/ruta/a/video.ogg" controls poster="/ruta/a/imagenfija.jpg">
Lo siento, tu navegador no soporta este video embebido, puedes
<a href="/ruta/a/video.ogg">descargarlo dede aquí</a>.
</video>

opciones

autoplay

<video autoplay controls>

detalle de codecs (para theora/vorbis)

<source type="video/ogg; codecs=&quot;theora, vorbis&quot;" src="source/video.ogg">

Eventos Javascript

ejemplo usando mootools

Agregar mootools en sección

<script type="text/javascript" src="ruta/a/mootools.js"></script>

Agregar

<audio src="musica.ogg" controls>  
Su navegador no soporta el elemento <code>audio</code>.  
</audio>
<a href="javascript:;" id="miboton">test-link</a>

tips de

'controls'   muestra controles
'autoplay'   ejecuta automaticamente
'autobuffer' carga el buffer de audio al incio
'loop'       no implementado aun :(

código Javascript de ejemplo en

<script type="text/javascript">
<!--//--><![CDATA[//><!--

window.addEvent('domready', function() {

 var musica = document.getElementsByTagName("audio")[0];  

 var boton = $("miboton");

 boton.addEvents({
   'mouseenter' : function() {
         musica.play();
   }
 });

 boton.addEvents({
   'mouseleave' : function() {
         musica.pause();
   }
 });

});
//--><!]]>
</script>

más info:

en developer.mozilla.org

en camendesign.com

mas * Anieto2k: El elemento-audio del html5

subir videos por ftp

Partir videos en secciones

asi se facilita la subida por ftp

split (cortar)

$ split --bytes=[tamaño] [large_file] [prefix]

# ej:
$ split --bytes=2M video.ogg vid-
# produce vid-aa vid-ab vid-ac ... de 2 M cada uno

cat (unir)

$ cat prefix* > NEWFILENAME

Cinelerra

conversiones de formato aptos para cinelerra

El manual en español dice que lo ideal es NTSC estandar:

Video

  • h.264 codec
  • 720x480
  • fps: 29.97

Audio

  • aac mpeg2/4
  • 44100
  • 128

Conversiones

con ffmpeg

$ ffmpeg -i input_youtube_hq.mp4 -target ntsc-dvd -aspect 4:3 out_to_cinelerra_ok_import.mpg

con mencoder

de youtube flv a ntsc avi de 720x480

$ mencoder youtube_video.flv -o out.avi -ovc lavc -lavcopts vcodec=mjpeg -vf scale=720:480 -oac mp3lame

indicando ademas fps (para ntsc 29.97)

$ mencoder youtube_video.flv -o out.avi -ovc lavc -lavcopts vcodec=mjpeg -fps 29.97 -vf scale=720:480 -oac mp3lame

de youtube flv a ntsc avi de 720x480 solo una parte (cut)

$ mencoder youtube_video.flv -ss $inicio -endpos $duracion -o out.avi -ovc lavc -lavcopts vcodec=mjpeg -vf scale=720:480 -oac mp3lame

nota: algunas veces los avi resultantes dan el "famoso" error virtual int FileMOV::read:frame(VFrame*): quicktime_read_frame/quicktime_decode_video failed (este error tuvo consecuencias luego con los filtros de cinelerra)