ฉันทดสอบคำตอบอื่น ๆ ส่วนใหญ่ที่เสนอสำหรับคำถามนี้ ข้อสรุปข้อมูลการทดสอบอยู่ด้านล่าง นี่คือคำตอบที่เสนอที่ฉันทดสอบ:
(BR) แก้ไขบิตเรตโดยใช้:
ffmpeg -i $infile -b $bitrate $newoutfile
(CR) แปรผันปัจจัยอัตราคงที่โดยใช้:
ffmpeg -i $infile -vcodec libx264 -crf 23 $outfile
(SZ) เปลี่ยนขนาดหน้าจอวิดีโอ (เช่นขนาดครึ่งหนึ่งของพิกเซล) โดยใช้:
ffmpeg -i $infile -vf "scale=iw/2:ih/2" $outfile
(BL) เปลี่ยนโปรไฟล์ H.264 เป็น "พื้นฐาน" โดยใช้:
ffmpeg -i $infile -profile:v baseline $outfile
(DF) ใช้การประมวลผล ffmpeg เริ่มต้นโดยใช้:
ffmpeg -i $infile $outfile
ข้อมูล
- "ขนาด" - ขนาดพิกเซลร้อยละของวิดีโอที่แปลงแล้วซึ่งสัมพันธ์กับต้นฉบับ
- "bitrate" - บิตเรตของวิดีโอต้นฉบับและวิดีโอที่แปลงแล้ว
- "definition" - ขนาดพิกเซลของวิดีโอ
- "convert" - เวลาในการแปลงวิดีโอในไม่กี่วินาที
ฉันคำนวณบิตเรตเป้าหมายสำหรับ (BL) โดยใช้วิธีที่เสนอ
=== ไฟล์ A - วิธีที่โหนดช่วยในการขับเคลื่อน Angular-Fnbixa7Ts6M.mkv ===
original BR CR SZ BL DF
-------- --- -- -- -- --
size 64152 kb 214% 76% 40% 83% 76%
bitrate 411 kb/s 883 313 165 342 313
definition 1920x1080 1920x1080 1920x1080 960x540 1920x1080 1920x1080
convert -- 648 509 225 427 510
=== ไฟล์ B - การใช้ GraphQL พร้อม Angular _ By - Lee Costello-OGyFxqt5INw.mkv ===
original BR CR SZ BL DF
-------- --- -- -- -- --
size 410301 kb 33% 109% 28% 143% 109%
bitrate 2687 kb/s 880 2920 764 3843 2920
definition 3840x2160 3840x2160 3840x2160 1920x1080 3840x2160 3840x2160
convert -- 2307 3188 1116 2646 3278
สรุป
วิธีการ (SZ) เป็นวิธีที่เร็วที่สุดแน่นอน มันเร็วกว่า 2X ถึง 4X นี่อาจเป็นปัญหาอย่างมากสำหรับวิดีโอความละเอียดสูงเนื่องจากวิธีการอื่น ๆ ทั้งหมดใช้เวลาในการแปลงนานกว่าความยาวจริงของวิดีโอ! ตัวอย่างเช่นวิธีการ (CR) ใช้เวลา 53 นาทีในการแปลงวิดีโอ 21 นาที
วิธีการ (SZ) เป็นวิธีที่ดีที่สุดแน่นอนหากคำจำกัดความของวิดีโอมีขนาดใหญ่กว่าคำจำกัดความของหน้าจอที่จะแสดง ตัวอย่างเช่นหากโทรศัพท์ของคุณสามารถแสดงภาพ 1080p เท่านั้นการส่งวิดีโอ 3840x2160 นั้นสิ้นเปลือง มันจะเป็นการดีที่สุดถ้าจะลดขนาดลงเหลือ 1080p
คำตอบที่เสนอบางข้อเพิ่มขึ้นจริงขนาดของวิดีโอบางรายการ ตัวอย่างเช่นวิธี (BR) มากกว่าสองเท่าของขนาดตัวอย่าง 1080p อย่างไรก็ตามมันทำให้ขนาด 2160p เป็นหนึ่งในสาม สำหรับตัวอย่างที่มีความละเอียดสูงวิธีการ (CR), (BL) และ (DF) ทั้งหมดจะเพิ่มขนาดของวิดีโอ
คำตอบที่ถูกต้อง (หรือดีที่สุด)
เป็นการดีที่สุดที่จะลดความละเอียดลงไปที่ระดับสูงสุดที่หน้าจอเป้าหมายรองรับ
หากคุณต้องการลดขนาดไฟล์เพิ่มเติมมันจะขึ้นอยู่กับตัวเลือกส่วนบุคคล คุณสามารถลดเนื้อหาข้อมูลหรือเพิ่มการบีบอัด
คุณสามารถลดความละเอียดได้มากขึ้นหากไม่ใช่สิ่งที่คุณกังวล
หากวิดีโอไม่มีฉากแอ็คชั่นที่รวดเร็วคุณอาจต้องลดอัตราเฟรมลง
หากคุณมีโปรเซสเซอร์ที่ทรงพลังและพื้นที่เป็นปัญหาเดียวคุณสามารถเพิ่มอัตราการบีบอัดได้
อัตราบิตเป็นการรวมกันของหลายปัจจัย ดังนั้นเพียงแค่บอก ffmpeg ให้ลดอัตราบิตอาจไม่ให้ผลลัพธ์ที่คุณต้องการ
อีกวิธีหนึ่งของเนื้อหาข้อมูลที่ต่ำกว่าคือการลดความลึกของสี วิธีการทำสิ่งนี้ยังไม่ได้กล่าวถึง
ffmpeg
หน้า man จะแสดง-fs
ตัวเลือกเพื่อ จำกัด ขนาดเอาต์พุตสิ่งที่ต้องการffmpeg -i in.avi -fs 100M out.avi
ทำงานหรือไม่