BandaAncha.eu

Comunidad de usuarios
de fibra, móvil y ADSL

Cómo cortar fragmentos de un vídeo MP4 y luego pegarlos (terminal, Linux, mencoder, web de TV, rtmpdump o flvstreamer)

BocaDePez
BocaDePez

El vídeo se bajó de un sitio web de una televisión de España, con ayuda de www.pydowntv.com/ y del comando de terminal rtmpdump. Tiene extensión mp4 (se llama algo así:nombre_tal.mp4), de códec de vídeo "H.264/AVC Video" y de códec de audio "MPEG-4 AAC audio". Todo se ha hecho en Linux Mint con GNOME clásico como entorno de escritorio.

------> Procedimiento (suponemos 3 fragmentos):
* Si no tienes mencoder instálalo así desde una consola o terminal:
sudo apt-get install mencoder
* Ejecutamos en el terminal:
mencoder /ruta/al/video_de_partida.mp4 -ovc copy -oac faac -ss segundo_de_inicio1 -endpos duracion_en_segundos1 -o /ruta/al/cacho1.mp4
mencoder /ruta/al/video_de_partida.mp4 -ovc copy -oac faac -ss segundo_de_inicio2 -endpos duracion_en_segundos2 -o /ruta/al/cacho2.mp4
mencoder /ruta/al/video_de_partida.mp4 -ovc copy -oac faac -ss segundo_de_inicio3 -endpos duracion_en_segundos3 -o /ruta/al/cacho3.mp4
mencoder -ovc copy -oac copy -o /ruta/al/video_de_destino.mp4 /ruta/al/cacho1.mp4 /ruta/al/cacho2.mp4 /ruta/al/cacho3.mp4
¡Listo!

------> Historia:
Por ahí leí de obtener los cachos o partes así:
mencoder /ruta/al/video_de_partida.mp4 -ovc copy -oac copy -ss segundo_de_inicio1 -endpos duracion_en_segundos1 -o /ruta/al/cacho1.mp4
Pero no me lo permitía. Me sugería cambiar "-oac copy" por "-oac pcm", pero así el fichero ocupaba mucho más y el proceso tardaba más que de esta forma, que me fue muy bien para la primera parte (obtener cachos), e iba rapidísimo:
ffmpeg -i /ruta/al/video_de_partida.mp4 -vcodec copy -acodec copy -ss segundo_de_inicio1 -t duracion_en_segundos1 /ruta/al/cacho1.avi (si ponía cacho1.mp4 el sonido y la imagen no iban coordinados)
Pero luego me las ví mal para unir estos fragmentos.
Esto de es.scribd.com/doc/47949002/Manual-basico…mando-ffmpeg parecía funcionar ...:
Primero se pasan a mpeg para que estén en un formato común:
ffmpeg -i /ruta/al/cacho1.avi -sameq /ruta/al/cacho1.mpeg
En segundo y último lugar se unen los vídeos resultantes usando cat:
cat /ruta/al/cacho1.mpeg /ruta/al/cacho2.mpeg > /ruta/al/video_de_destino.mpeg
... pero la cosa iba lenta, parecía perderse algo de calidad y el resultado ocupaba mucho más.

Tampoco conseguía juntar los fragmentos bien con avimerge ni con mencoder (ni con cat más mencoder) ni con lxsplit ni con mpeg3cat ni con mkvmerge (puestos a probar ... de perdidos al río).

Por suerte en mis requetebúsquedas (buscando "menconder MPEG4 audio codec" o algo así) dí con esta página oficial de mencoder: www.mplayerhq.hu/DOCS/HTML/en/menc-feat- … g-codec.html ... ví "faac | FAAC AAC audio encoder" y probé a cambiar "-oac copy" por "-oac faac" al obtener un fragmento y ¡tachán! Tardaba un poco más pero luego podía pegar las partes fenomenal con el mismo mencoder.

BocaDePez
BocaDePez

¿No estás recodificando al forzar el cambio de contenedor? :-O

Lo lógico sería solo recodificar aquellos frames del último GOP y del primer GOP siguiente que quedan fuera del corte... o cortar únicamente por fotogramas I, obviamente.

¿Has intentado con AviDemux? Lo digo porque en línea de comandos, no apuras los cortes.

🗨️ 5
BocaDePez
BocaDePez

Probé con Pitivi pero iba muy lento, se colgaba a veces...

BocaDePez
BocaDePez

Acabo de instalar Avidemux y probarlo pero no deja ni abrir el fichero del vídeo de origen. Dice "Crash" y mucho más, le das a Aceptar y se cierra. Por suerte me lo he solucionado con mencoder, como he explicado arriba. Para algo han valido las búsquedas y pruebas.

🗨️ 3
superllo

Sí, Avidemux a veces peta con algunos códecs.

Filiprino

Depende que Avidemux uses. El último, el 2.6 me parece que todavía no es del todo estable.

Mejor Avidemux 2.5.

🗨️ 1
superllo

Yo tengo el 2.5.4 y peta que es una maravilla con algunos códecs.

BocaDePez
BocaDePez

Luego he visto MP4Box, pero tampoco me va.

BocaDePez
BocaDePez

En Linux Mint 17 MATE, tras instalar mencoder y ejecutar algo así ...

mencoder /ruta/al/video_de_partida.mp4 -ovc copy -oac faac -ss segundo_de_inicio1 -endpos duracion_en_segundos1 -o /ruta/al/cacho1.mp4

... me devuelve "MPlayer was compiled without libfaac", sin obtener el fragmento del vídeo.

Tengo 3 alternativas: cambiar en el comando faac por ...

a) pcm (la que menos tarda pero más ocupa -el fichero del fragmento-)

b) lavc (tarda algo más que el anterior pero ocupa poco más de la mitad)

c) mp3lame (tarda algo más que el anterior pero ocupa algo menos -más o menos la mitad que con pcm)

🗨️ 2
BocaDePez
BocaDePez

A la hora de unir cachos obtenidos con pcm y mp3lame (cada uno con otros obtenidos de la misma forma) me dan ficheros de unión buenos, pero los obtenidos con lavc, al unirse me dan ficheros defectuosos (imágenes deficientes y vídeo y audio descoordinados).

BocaDePez
BocaDePez

PCM es audio sin compresión. Por eso tarda tan poco y ocupa tanto.

De todas formas, prueba con -oac copy (si no eres el que inició el hilo, claro).