Czy istnieje sposób, aby dodać efekt „zanikania do czerni” do wideo z wiersza poleceń?

9

Mam skrypt do kodowania filmów (za pomocą mencodera), ale istnieje sposób na dodanie prostego „zanikania / wprowadzania na czarno” z wiersza poleceń, najlepiej darmowego (jak w open source).

Może to być system Windows lub Ubuntu Linux.

Manu
źródło
1
Czy mmsuper8 wydaje się działać dla Ciebie? Proszę podać system operacyjny itp.
slhck
Przepraszam. Ubuntu lub siedem.
Manu
Zrób mmsuper8 jako swoją odpowiedź, zagłosuję na ciebie :)
Manu

Odpowiedzi:

1

Jedyne, co mogłem znaleźć - na podstawie wiersza poleceń - to mmsuper8narzędzie Linux.

W szczególności zawiera mmsuper8fadenarzędzie, które wydaje się być dla Ciebie przydatne.

Najlepiej byłoby, gdybyś edytował to pytanie i podał przykład, który działał dla Ciebie!

slhck
źródło
14

Może to zrobić najnowszy ffmpeg z filtrem wideo „zanikanie”. Niestety, ffmpeg w repozytoriach Ubuntu nie ma włączonych filtrów z jakiegoś niefortunnego powodu, więc będziesz musiał go zdobyć skądinąd (patrz tutaj ).

Aby zmienić kolor z czarnego, zaczynając od klatki 0, ponad 50 klatek (2 sekundy @ 25 klatek na sekundę):

ffmpeg -i input.mp4 -filter:v 'fade=in:0:50' \
-c:v libx264 -crf 22 -preset veryfast -c:a copy output.mp4

Aby wyciszyć, zaczynając od klatki 21000 (14 minut przy 25 klatkach na sekundę), ponad 50 klatek:

ffmpeg -i input.mp4 -filter:v 'fade=out:21000:50' \
-c:v libx264 -crf 22 -preset veryfast -c:a copy output.mp4

Możesz połączyć oba w łańcuch filtrów:

ffmpeg -i input.mp4 -filter:v 'fade=in:0:50,fade=out:21000:50' \
-c:v libx264 -crf 22 -preset veryfast -c:a copy output.mp4

Jak widać z tych przykładów, musisz transkodować wideo, używając filtra wideo. Ponieważ ffmpeg i mencoder współużytkują wiele bibliotek, powinno być dość łatwe ponowne napisanie skryptów w celu użycia ffmpeg zamiast mencodera i uniknięcia niepotrzebnego dodatkowego kodowania. Jestem prawie pewien, że możesz osiągnąć to samo w menencoderze, ale nie znam jego składni.

zła
źródło
6

Mam ten skrypt bash, aby automatycznie wyciszyć koniec filmów (audio + wideo) automatycznie:

#!/bin/bash

# Audio + vidéo fade out at the end of mp4 files

# 2015-09-09 19:07:17.0 +0200 / Gilles Quenot

# length of the fade out
fade_duration=2 # seconds

if [[ ! $2 ]]; then
    cat<<EOF
Usage:
    ${0##*/} <input mp4> <output mp4>
EOF
    exit 1
fi

for x in bc awk ffprobe ffmpeg; do
    if ! type &>/dev/null $x; then
        echo >&2 "$x should be installed"
        ((err++))
    fi
done

((err > 0)) && exit 1

duration=$(ffprobe -select_streams v -show_streams "$1" 2>/dev/null |
    awk -F= '$1 == "duration"{print $2}')
final_cut=$(bc -l <<< "$duration - $fade_duration")
ffmpeg -i "$1" \
    -filter:v "fade=out:st=$final_cut:d=$fade_duration" \
    -af "afade=t=out:st=$final_cut:d=$fade_duration" \
    -c:v libx264 -crf 22 -preset veryfast -strict -2 "$2"

Stosowanie :

FadeOutMp4 <input mp4> <output mp4>
Gilles Quenot
źródło