Tenho dois arquivos de entrada (track1.m3 e track2.opus) dos quais desejo extrair quatro clipes e fazer crossfade deles em sequência. Cheguei a este comando com base em uma resposta de Gyan no Stack Overflow :
ffmpeg -hide_banner -y -ss 00:00:00 -i ./track1.mp3 -t 00:04:10 -ss 00:00:00 -i ./track2.opus -t 00:00:20 -ss 00:01:15 -i ./track2.opus -t 00:00:35 -ss 00:06:07 -i ./track2.opus -t 00:00:53 -vn -filter_complex "[0][1]acrossfade=d=2:c1=tri:c2=exp[a01];[a01][2]acrossfade=d=2:c1=tri:c2=exp[a02];[a02][3]acrossfade=d=2:c1=tri:c2=exp[output]" -map "[output]" output.mp3
No entanto, ele produz apenas um arquivo com duração de 53 segundos, que parece consistir apenas na última entrada (a mais longa) sem nenhum desbotamento:
Input #0, mp3, from './track1.mp3':
Metadata:
encoder : Lavf61.1.100
Duration: 00:04:23.31, start: 0.025057, bitrate: 128 kb/s
Stream #0:0: Audio: mp3 (mp3float), 44100 Hz, stereo, fltp, 128 kb/s
Metadata:
encoder : Lavf
Input #1, ogg, from './track2.opus':
Duration: 00:07:12.31, start: 0.007500, bitrate: 109 kb/s
Stream #1:0(eng): Audio: opus, 48000 Hz, stereo, fltp
Metadata:
encoder : Lavf61.1.100
Input #2, ogg, from './track2.opus':
Duration: 00:07:12.31, start: 0.007500, bitrate: 109 kb/s
Stream #2:0(eng): Audio: opus, 48000 Hz, stereo, fltp
Metadata:
encoder : Lavf61.1.100
Input #3, ogg, from './track2.opus':
Duration: 00:07:12.31, start: 0.007500, bitrate: 109 kb/s
Stream #3:0(eng): Audio: opus, 48000 Hz, stereo, fltp
Metadata:
encoder : Lavf61.1.100
Stream mapping:
Stream #0:0 (mp3float) -> acrossfade
Stream #1:0 (opus) -> acrossfade
Stream #2:0 (opus) -> acrossfade
Stream #3:0 (opus) -> acrossfade
acrossfade:default -> Stream #0:0 (libmp3lame)
Press [q] to stop, [?] for help
Output #0, mp3, to 'output.mp3':
Metadata:
TSSE : Lavf61.1.100
Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp
Metadata:
encoder : Lavc61.3.100 libmp3lame
[out#0/mp3 @ 000001e763527380] video:0KiB audio:829KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 0.029701%
size= 829KiB time=00:00:53.00 bitrate= 128.1kbits/s speed= 119x
Preciso fazer algo especial para colocar todos os clipes em sequência com cross-fading?
Este é ffmpeg 7.0.1-full_build-www.gyan.dev no Windows 10, caso ajude.
EDIT: Corrigi a ordem -ss
e -i
atualizei a saída. Não há mudança. Também atualizei a invocação para deixar claro que os argumentos foram citados corretamente e removi os supérfluos -map_metadata 1
.
Tente mover
-t
o valor da sua saída (aquele após todas as-i
entradas) para antes da sua entrada para que se aplique à entrada e não à saída.Algo assim: