Estou tentando modificar um script de Como baixar parte do vídeo com o comando youtube-dl
Desejo especificar um carimbo de data/hora final com -to
em vez da duração com -t
. No entanto, não está funcionando.
Aqui está o comando ffmpeg em questão:
ffmpeg -ss 00:08:50 -i 'https://stream_url_video' -to 00:12:30 -ss 00:08:50 -i 'https://stream_url_audio' -to 00:12:30 -ss 5 -map 0:v -map 1:a -c:v copy -c:a copy 'output.mp4'
O áudio para no carimbo de data/hora correto 00:12:30
, mas o vídeo continua sendo reproduzido por uma duração total de 00:12:30
.
Pode ser consertado?
O roteiro:
#!/bin/bash
#Arguments: URL, Starting Timestamp -5 seconds, Ending Timestamp, video file name
set -x;
readarray -t urls <<< "$(yt-dlp -f bestvideo[ext=mp4][vcodec^=avc1]+140 --youtube-skip-dash-manifest -g "$1")"
ffmpeg -ss $2 -i "${urls[0]}" -to $3 -ss $2 -i "${urls[1]}" -to $3 -ss 5 -map 0:v -map 1:a -c:v copy -c:a copy "${4}"
Você precisa considerar como os argumentos no ffmpeg funcionam. Os argumentos antes
-i
se aplicam à(s) entrada(s) e depois deles se aplicam à(s) saída(s).Seu comando faltou
-to
antes da entrada:Portanto, o fluxo de vídeo não foi cortado no local adequado.
-to
aplica-se ao seguinte-i
arquivo de entrada.então o script correto é