การแปลงแบตช์เป็น H.265 ถึง H.264
ตัวอย่างเหล่านี้เขียนขึ้นเมื่อไม่นานมาffmpeg
นี้ ช่วยตัวเองให้ยุ่งยากและดาวน์โหลดเวอร์ชันล่าสุด จากนั้นใส่ffmpeg
ไบนารี่ใน~/bin
หรือ/usr/local/bin
(คุณอาจต้องออกจากระบบแล้วลงชื่อเข้าใช้เพื่อให้สังเกตได้)
เอาต์พุต Matroska
mkdir h264vids
for f in *.mp4; do ffmpeg -i "$f" -map 0 -c copy -c:v libx264 -crf 23 -preset medium h264vids/"${f%.*}.mkv"; done
h264vids
ตัวอย่างนี้ออกจะยังไดเรกทอรีที่มีชื่อว่า
.mp4
ตัวอย่างนี้อนุมานปัจจัยการผลิตของคุณ ถ้าไม่เปลี่ยน.mp4
อินสแตนซ์ในตัวอย่างเป็นประเภทไฟล์อินพุตของคุณหรือเพียงแค่ใช้โลภ*
ด้วยตัวเอง
ปรับ-crf
เพื่อคุณภาพและ-preset
เข้ารหัสความเร็ว / ประสิทธิภาพ หรือเพียงแค่ลบตัวเลือกเหล่านี้ออกและใช้ค่าเริ่มต้นที่ค่อนข้างดีและน่าจะพอเพียง (ตัวอย่างคือการใช้ค่าเริ่มต้นสำหรับตัวเลือกเหล่านี้) ดูFFmpeg Wiki: H.264สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกเหล่านี้
เอาต์พุต MP4
อันนี้ซับซ้อนกว่าเล็กน้อย สิ่งนี้จะทำการเข้ารหัสตามเงื่อนไขขึ้นอยู่กับว่าสัญญาณเสียงเข้าเป็น AAC หรือไม่ หากอินพุตเสียงเป็น AAC เสียงจะถูกคัดลอก (รีเฟรช) อีกครั้งตามที่เป็นอยู่และหลีกเลี่ยงการเข้ารหัสซ้ำที่ไม่จำเป็น หากสัญญาณเสียงเข้าไม่ใช่ AAC จะมีการเข้ารหัสเป็น AAC อีกครั้ง
นี่คือสคริปต์ง่ายแสดงให้เห็นถึงวิธีการทำเช่นนี้โดยใช้และffprobe
ffmpeg
คัดลอกและบันทึกลงในไดเรกทอรีที่มีวิดีโอของคุณจะแปลงให้ผู้ได้รับอนุญาตด้วยแล้วเรียกมันด้วยchmod +x yourscriptname
./yourscriptname
#!/bin/bash
mkdir h264vids
for f in *.mkv
do
audioformat=$(ffprobe -loglevel error -select_streams a:0 -show_entries stream=codec_name -of default=nw=1:nk=1 "$f")
if [ "$audioformat" = "aac" ]; then
ffmpeg -i "$f" -c:v libx264 -crf 23 -preset medium -c:a copy -movflags +faststart h264vids/"${f%.*}.mp4"
else
ffmpeg -i "$f" -c:v libx264 -crf 23 -preset medium -c:a aac -movflags +faststart h264vids/"${f%.*}.mp4"
fi
done
h264vids
ตัวอย่างนี้ออกจะยังไดเรกทอรีที่มีชื่อว่า
.mkv
ตัวอย่างนี้อนุมานปัจจัยการผลิตของคุณ ถ้าไม่เปลี่ยน.mkv
อินสแตนซ์ในตัวอย่างเป็นประเภทไฟล์อินพุตของคุณหรือเพียงแค่ใช้โลภ*
ด้วยตัวเอง
ดูหมายเหตุข้างต้นเกี่ยวกับการและ-crf
-preset
คุณสามารถหยุดการเข้ารหัสด้วยctrl+ และดำเนินการกับzfg
sleep 3
ไม่จำเป็น (แต่เป็นไปได้มีประโยชน์สำหรับการยกเลิกการวนรอบ) และINPUT=$1
ไม่มีความหมายเนื่องจากคุณใช้งานโดยตรงในเชลล์แบบโต้ตอบ