Eu pretendo unir um conjunto de clipes de vídeo (com áudio) usando algumas transições curtas (idealmente crossfade) de uma maneira direta, automatizada e eficiente.
IE:
ClipA ---> ClipB --> ClipC --> ClipD
[aaaaaaaa][bbbbbbbb][cccccccc][dddddddd]
(--> indicate crossfades, not to scale!)
Para esclarecer:
- por simples , o ideal seria envolver o uso de ferramentas 'padrão' (ou seja, aquelas com as quais já estou familiarizado,
ffmpeg
, mas ferramentas menos conhecidas como melt
são qualificadas e Estou disposto a explorar novos horizontes como o MoviePy)
- por automatizado quero dizer algo que pode ser parametrizado e colocado em um script
python
/ shell
/ etc
- por eficiente quero dizer codificar rapidamente ou minimizar a re-codificação
No momento, estou usando python
e ffmpeg
para cortar um arquivo de vídeo já em Matroska / h264 / aac usando o parâmetro de cópia de fluxo ( muito rápido ) com base em timecodes em um arquivo de texto. Em seguida, melt
sequencialmente sequencia esses clipes um após o outro usando transições de luma (crossfade) curtas ( muito lentas devido à recodificação da sequência inteira ).
Parece-me que, desses longos videoclipes, apenas alguns segundos precisam ser processados e recodificados - as próprias transições. O resto pode ser copiado. Existe uma maneira já existente / intuitiva de fazer isso? Minha abordagem ingênua seria cortar os clipes em subclipes, usando melt
para criar as transições e usando o filtro concat
para colar a bagunça.
Por exemplo:
ClipA1 ClipA2 ClipB1 ClipB2 ClipB3 ClipC1 ClipC2 ClipC3 ClipD1 Clip D2
[aaaaaaa] + [a][b] + [bbbbbb] + [b][c] + [cccccc] + [c][d] + [ddddddd]
(+ indicates concat-ing of subclips; [x][y] indicates a short xfade from x to y)
No entanto, estou reticente em cobrar o que pode ser uma tarefa tola, pois antecipo as% de melt
/ ffmpeg
relacionadas ao timing de cortes e à sincronização de áudio; e eu não quero perder seções de vídeo ou áudio devido à colocação de frame-I ou o que você tem. Além disso, tenho a sensação de que não sou a primeira pessoa a se deparar com isso, por isso estou curioso para saber como aqueles mais inteligentes do que eu resolvi isso - minhas soluções tendem para os ingênuos como eu digo!
Espero que isso tenha sido claro. Felicidades pela leitura e obrigado antecipadamente!
Para o contexto, minha intenção é reduzir as cenas de vídeo game não editadas e não editadas em um vídeo interessante / "útil"; isso é cortar a penugem de carregar coisas, classificar problemas de conectividade etc. Mas também é generalizável destacar uma montagem para mostrar progressão. Como é algo que em teoria surgirá toda vez que houver novas filmagens, tenho um grande interesse em fazê-lo da maneira mais eficiente (mais preguiçosa).