Estou tentando usar ffmpeg -f concat
. Funciona quando uso um arquivo temporário. Para organização, seria melhor usar uma lista canalizada. Vi exemplos disso em postagens antigas da web. Não funciona mais ou estou esquecendo de algo óbvio? Aqui está um script que ilustra o problema - se você executá-lo, test.sh x
ele funciona criando um arquivo temporário. Se você executá-lo test.sh
, o ffmpeg falha. Conforme observado no comentário do script, tentei com -safe 0
e -protocol_whiteflag "file,pipe,fd"
.
#!/bin/zsh
o=test.mp4
tmp=test.tmp
if [[ "$1" == "x" ]] ; then
echo Temp file $tmp...
ls GX01000?.mp4 | perl -ne 'print "file $_"' > $tmp
ffmpeg -hide_banner -y -f concat -i $tmp -c copy $o
else
echo Pipe
ls GX01000?.mp4 | perl -ne 'print "file $_"' | \
ffmpeg -hide_banner -y -f concat -i - -c copy $o
# this command line with -safe 0 and -protocol_whitelist doesn't work either
# ffmpeg -hide_banner -y -safe 0 -protocol_whitelist "file,pipe,fd" -f concat -i - -c copy $o
fi
Aqui está a saída do caso de falha:
% ./test.sh
Pipe
[fd @ 0x6000015f0620] Protocol 'fd' not on whitelist 'crypto,data'!
[concat @ 0x12e7055f0] Impossible to open 'fd:GX010005.mp4'
[in#0 @ 0x6000002f0100] Error opening input: Invalid argument
Error opening input file -.
Error opening input files: Invalid argument
Obrigado!