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 -ty -ssobtener 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 -tdice 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 -ssopció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.txtcomo 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.txtjuntos, copiando sus códecs de audio y video y crea un archivo ace.tvshowque 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.tvshowy 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 ffmpegpero para mis propósitos funciona mejor. Espero que ayude a alguien.