มีวิธีเพิ่มเอฟเฟกต์“ จางลงเป็นสีดำ” ในวิดีโอจากบรรทัดคำสั่งหรือไม่


9

ฉันมีสคริปต์เพื่อเข้ารหัสวิดีโอ (ใช้ mencoder) แต่มีวิธีเพิ่มง่าย "จางหายไป / ดำ" จากบรรทัดคำสั่งโดยเฉพาะอย่างยิ่งฟรี (เช่นในแหล่งที่มาเปิด)

อาจเป็นได้ทั้งบน Windows หรือ Ubuntu Linux


1
ไม่mmsuper8ดูเหมือนจะทำงานสำหรับคุณ? โปรดระบุระบบปฏิบัติการและอื่น ๆ
slhck

ขอโทษ อูบุนตูหรือเจ็ด
มนู

ทำให้ mmsuper8 เป็นคำตอบของคุณฉันจะออกเสียงลงคะแนนคุณขึ้น :)
มนู

คำตอบ:


1

สิ่งเดียวที่ฉันสามารถหาได้ - ตามบรรทัดคำสั่ง - คือmmsuper8เครื่องมือ Linux

โดยเฉพาะมันมีmmsuper8fadeเครื่องมือซึ่งดูเหมือนว่ามันจะมีประโยชน์สำหรับคุณ

จะดีที่สุดถ้าคุณแก้ไขคำถามนี้และให้ตัวอย่างที่เหมาะกับคุณ!


14

ffmpeg ล่าสุดที่มีตัวกรองวิดีโอ 'จาง' สามารถทำได้ น่าเสียดายที่ ffmpeg ใน repos ของ Ubuntu ไม่ได้เปิดใช้งานตัวกรองด้วยเหตุผลบางอย่างที่ไม่ได้ใช้ดังนั้นคุณจะต้องเอามันมาจากที่อื่น (ดูที่นี่ )

หากต้องการจางหายจากสีดำให้เริ่มที่เฟรม 0 มากกว่า 50 เฟรม (2 วินาทีที่ 25fps):

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

หากต้องการจางหายไปเริ่มต้นที่เฟรม 21000 (14 นาทีที่ 25fps) มากกว่า 50 เฟรม:

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

คุณสามารถรวมทั้งสองเข้าไปใน filterchain:

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

อย่างที่คุณเห็นจากตัวอย่างเหล่านี้คุณต้องแปลงรหัสวิดีโอเมื่อใช้ตัวกรองวิดีโอ เนื่องจาก ffmpeg และ mencoder แบ่งปันหลาย ๆ ไลบรารีจึงควรเขียนสคริปต์ของคุณใหม่ให้ใช้ ffmpeg แทน mencoder และหลีกเลี่ยงการเข้ารหัสพิเศษที่ไม่จำเป็น ฉันค่อนข้างแน่ใจว่าคุณสามารถบรรลุสิ่งเดียวกันใน mencoder แต่ฉันไม่รู้จักไวยากรณ์ mencoder


6

ฉันมีสคริปต์ทุบตีนี้เพื่อลบจุดสิ้นสุดของภาพยนตร์ (เสียง + วิดีโอ) โดยอัตโนมัติ:

#!/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"

การใช้งาน:

FadeOutMp4 <input mp4> <output mp4>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.