ffmpeg adiciona vídeo ao início e ao fim de outro

0

Então, estou usando o seguinte para converter todos os nossos vídeos em /home/vids para mp4 e exibi-los em /home/vids2 , mas agora gostaria de adicionar outro vídeo antes e depois de cada vídeo em /home/vids .

O link do vídeo é /home/intro/play.mp4 este vídeo deve ser reproduzido antes e depois de cada um dos vídeos em /home/vids . Para esclarecer se /home/intro/play.mp4 tem 10 segundos e se um vídeo em '/ home / vids' tiver 30 segundos, o vídeo final deverá ter 50 segundos de duração depois de combiná-los.

find /home/vids -type f -execdir ffmpeg -i '{}' -filter:v drawtext="fontfile=/root/FreeSans.ttf:text='TEXT EXAMPLE':[email protected]:fontsize=24:y=h-line_h-30:x=w/20*mod(t\,60)" -f mp4 -vcodec libx264 -preset fast -profile:v main -acodec aac -movflags +faststart '/home/vids2/{}.mp4' \;
    
por masterq 06.07.2018 / 02:40

1 resposta

0

Se os vídeos forem codificados usando os mesmos codecs, você poderá utilizar o operador concat .

If you have media files with exactly the same codec and codec parameters you can concatenate them as described in "Concatenation of files with same codecs". If you have media with different codecs you can concatenate them as described in "Concatenation of files with different codecs" below.

$ cat build_ffmpegs.bash
#!/bin/bash

intro=/home/intro/play.mp4
outro=/home/intro/play.mp4

cd /home/vid

for i in vid*; do
    ffmpeg -f concat -safe 0 \
      -i < <(printf "file '%s'\n" $intro $(readlink -f $i) $outro) \
      -c copy /home/vid2/output_${i}
done

Executar isso gerará ffmpeg comandos assim:

ffmpeg -f concat -safe 0 -i < <(printf "file '%s'\n" /home/intro/play.mp4 /home/vid/vid1.mp4 /home/intro/play.mp4) -c copy /home/vid2/output_vid1.mp4
ffmpeg -f concat -safe 0 -i < <(printf "file '%s'\n" /home/intro/play.mp4 /home/vid/vid2.mp4 /home/intro/play.mp4) -c copy /home/vid2/output_vid2.mp4
ffmpeg -f concat -safe 0 -i < <(printf "file '%s'\n" /home/intro/play.mp4 /home/vid/vid3.mp4 /home/intro/play.mp4) -c copy /home/vid2/output_vid3.mp4
ffmpeg -f concat -safe 0 -i < <(printf "file '%s'\n" /home/intro/play.mp4 /home/vid/vid4.mp4 /home/intro/play.mp4) -c copy /home/vid2/output_vid4.mp4
ffmpeg -f concat -safe 0 -i < <(printf "file '%s'\n" /home/intro/play.mp4 /home/vid/vid5.mp4 /home/intro/play.mp4) -c copy /home/vid2/output_vid5.mp4

Você deve ser capaz de adaptar os comandos ffmpeg para qualquer outro detalhe que você precisar daqui.

Referências

por 06.07.2018 / 05:17