Estoy buscando una solución para superponer archivos mp3 en los que el más largo se reproducirá en segundo plano y el más pequeño continuará reproduciéndose como un bucle con eso. Mi código actual está funcionando sin tubería:
ffmpeg -i 'longer.mp3' -filter_complex "amovie='small.mp3:loop=999'[s];[0][s]amix=duration=shortest" new.mp3
Este código funciona como un encanto, pero lo que quiero lograr es esto:
curl "any-url-audio-file" | ffmpeg -i 'longer.mp3' -filter_complex "amovie='pipe\:0:loop=999'[s];[0][s]amix=duration=shortest" new.mp3
Este código no funciona y también me está dando un error,
ffmpeg version N-89955-g118e1b0b33 Copyright (c) 2000-2018 the FFmpeg
developers
built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-18)
configuration: --enable-openssl --enable-libmp3lame
libavutil 56. 7.100 / 56. 7.100
libavcodec 58. 9.100 / 58. 9.100
libavformat 58. 7.100 / 58. 7.100
libavdevice 58. 0.101 / 58. 0.101
libavfilter 7. 11.101 / 7. 11.101
libswscale 5. 0.101 / 5. 0.101
libswresample 3. 0.101 / 3. 0.101
Input #0, mp3, from 'morning_alarm.mp3':
Duration: 00:00:28.06, start: 0.025057, bitrate: 128 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
Metadata:
encoder : LAME3.97
Side data:
replaygain: track gain - -9.200000, track peak - unknown, album gain - unknown, album peak - unknown,
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:--
0101 5088 101 5088 0 0 28080 0 --:--:-- --:--:-- --:--:-- 160k
Stream mapping:
Stream #0:0 (mp3) -> amix:input0
amix -> Stream #0:0 (libmp3lame)
Press [q] to stop, [?] for help
[Parsed_amovie_0 @ 0x26c76c0] Failed to avformat_open_input 'pipe:0'
[AVFilterGraph @ 0x26c3d80] Error initializing filter 'amovie' with args 'pipe\:0:loop=999'
Error reinitializing filters!
Failed to inject frame into filter network: Invalid data found when
processing input
Error while processing the decoded data for stream #0:0
Conversion failed!
Todo lo que quiero hacer es superponer dos archivos de audio a través de la línea de comandos en la que el primer archivo de audio será más largo y el segundo será más pequeño. El más pequeño se repetirá como un bucle hasta que el más largo juegue.
Por favor, dime, ¿cómo puedo hacer eso? ¿Hay otra manera de hacer esto?