I think we are missing quotes for filter_complex args.
Example:
ffmpeg_stream_spec = (
ffmpeg.input(in_url).audio.filter(
"adelay", f"{out_delay}|{out_delay}"
.output(
out_url,
format="mp3",
content_type="audio/mpeg",
loglevel="quiet", # verbose quiet
)
)
cmd_line = ffmpeg.compile(ffmpeg_stream_spec, cmd='ffmpeg', overwrite_output=False)
cmd_line = ' '.join(cmd_line)
print(cmd_line)
ffmpeg_stream_spec.run(cmd=['ffmpeg', '-re'], overwrite_output=True)
will result in ffmpeg -i http://a.b.c.d:18000/stream -filter_complex [0:a]adelay=6s|6s[s0] -map [s0] -f mp3 -content_type audio/mpeg -loglevel quiet icecast://source:pass@a.b.c.d:18001/stream -y
which result in an error: Filter adelay:default has an unconnected output
Running ffmpeg -i http://a.b.c.d:18000/stream -filter_complex "[0:a]adelay=6s|6s[s0]" -map [s0] -f mp3 -content_type audio/mpeg -loglevel quiet icecast://source:pass@a.b.c.d:18001/stream -y everything is ok.
Hi,
I think we are missing quotes for filter_complex args. Example: ffmpeg_stream_spec = ( ffmpeg.input(in_url).audio.filter( "adelay", f"{out_delay}|{out_delay}" .output( out_url, format="mp3", content_type="audio/mpeg", loglevel="quiet", # verbose quiet ) ) cmd_line = ffmpeg.compile(ffmpeg_stream_spec, cmd='ffmpeg', overwrite_output=False) cmd_line = ' '.join(cmd_line) print(cmd_line) ffmpeg_stream_spec.run(cmd=['ffmpeg', '-re'], overwrite_output=True)
will result in ffmpeg -i http://a.b.c.d:18000/stream -filter_complex [0:a]adelay=6s|6s[s0] -map [s0] -f mp3 -content_type audio/mpeg -loglevel quiet icecast://source:pass@a.b.c.d:18001/stream -y which result in an error: Filter adelay:default has an unconnected output
Running ffmpeg -i http://a.b.c.d:18000/stream -filter_complex "[0:a]adelay=6s|6s[s0]" -map [s0] -f mp3 -content_type audio/mpeg -loglevel quiet icecast://source:pass@a.b.c.d:18001/stream -y everything is ok.