Nunca puedo lograr que funcione la solución de ptQa, principalmente porque nunca puedo entender qué significan los errores de los filtros o cómo solucionarlos. Mi solución parece un poco más complicada porque puede dejar un desorden, pero si la está agregando a un script, la limpieza puede automatizarse. También me gusta este enfoque porque si algo sale mal en el paso 4, terminas con los pasos 1-3 completos, por lo que la recuperación de errores es un poco más eficiente.
La estrategia básica es usar -t
y -ss
obtener videos de cada segmento que desee, luego juntar todas las partes para su versión final.
Digamos que tiene 6 segmentos ABCDEF cada 5 segundos de duración y desea A (0-5 segundos), C (10-15 segundos) y E (20-25 segundos) haría esto:
ffmpeg -i abcdef.tvshow -t 5 a.tvshow -ss 10 -t 5 c.tvshow -ss 20 -t 5 e.tvshow
o
ffmpeg -i abcdef.tvshow -t 0:00:05 a.tvshow -ss 0:00:10 -t 0:00:05 c.tvshow -ss 0:00:20 -t 0:00:05 e.tvshow
Eso hará que los archivos a.tvshow, c.tvshow y e.tvshow. El -t
dice la duración de cada clip es, por lo que si c es de 30 segundos de duración que podría pasar en 30 o 0:00:30. La -ss
opción dice qué tan lejos saltar al video fuente, por lo que siempre es relativo al inicio del archivo.
Luego, una vez que tienes un montón de archivos de video, hago un archivo ace-files.txt
como este:
file 'a.tvshow'
file 'c.tvshow'
file 'e.tvshow'
Tenga en cuenta el "archivo" al principio y el nombre del archivo escapado después de eso.
Entonces el comando:
ffmpeg -f concat -i ace-files.txt -c copy ace.tvshow
Eso concatena todos los archivos abe-files.txt
juntos, copiando sus códecs de audio y video y crea un archivo ace.tvshow
que debería ser solo las secciones a, c y e. A continuación, sólo recuerde que debe eliminar ace-files.txt
, a.tvshow
, c.tvshow
y e.tvshow
.
Descargo de responsabilidad : no tengo idea de cuán (in) eficiente es esto en comparación con los otros enfoques en términos de ffmpeg
pero para mis propósitos funciona mejor. Espero que ayude a alguien.