ฉันมีสคริปต์เพื่อเข้ารหัสวิดีโอ (ใช้ mencoder) แต่มีวิธีเพิ่มง่าย "จางหายไป / ดำ" จากบรรทัดคำสั่งโดยเฉพาะอย่างยิ่งฟรี (เช่นในแหล่งที่มาเปิด)
อาจเป็นได้ทั้งบน Windows หรือ Ubuntu Linux
ฉันมีสคริปต์เพื่อเข้ารหัสวิดีโอ (ใช้ mencoder) แต่มีวิธีเพิ่มง่าย "จางหายไป / ดำ" จากบรรทัดคำสั่งโดยเฉพาะอย่างยิ่งฟรี (เช่นในแหล่งที่มาเปิด)
อาจเป็นได้ทั้งบน Windows หรือ Ubuntu Linux
คำตอบ:
สิ่งเดียวที่ฉันสามารถหาได้ - ตามบรรทัดคำสั่ง - คือmmsuper8
เครื่องมือ Linux
โดยเฉพาะมันมีmmsuper8fade
เครื่องมือซึ่งดูเหมือนว่ามันจะมีประโยชน์สำหรับคุณ
จะดีที่สุดถ้าคุณแก้ไขคำถามนี้และให้ตัวอย่างที่เหมาะกับคุณ!
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
ฉันมีสคริปต์ทุบตีนี้เพื่อลบจุดสิ้นสุดของภาพยนตร์ (เสียง + วิดีโอ) โดยอัตโนมัติ:
#!/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>