คำสั่ง ffmpeg ใดที่จะแปลงวิดีโอสำหรับ iPad / iPhone / iPod


24

ขณะนี้ฉันกำลังใช้แบตช์ไฟล์ซึ่ง (เหนือสิ่งอื่นใด) จะรันบรรทัดคำสั่ง handbrakecli ต่อไปนี้เพื่อแปลงวิดีโอ:

HandBrakeCLI.exe -v0 --input "D:\input.mkv" --preset="Universal" --ipod-atom -t 1 --angle 1 --gain 0 --output="D:\output.mp4"

สิ่งนี้ให้บริการฉันได้ดีเป็นเวลาหลายปีผลิตไฟล์วิดีโอซึ่งเล็กกว่าต้นฉบับ (ดีเมื่อคุณมีอุปกรณ์ 16Gb) ดูดีพอและใช้งานได้กับ iPod, iPad และ iPhone ที่ฉันใส่ไว้

อย่างไรก็ตามเมื่อเวลาผ่านไป handbrakecli พยายามที่จะแปลงวิดีโอให้มากขึ้นเรื่อย ๆ จนถึงจุดที่ฉันต้องการค้นหาทางเลือก มันไม่ได้รับความช่วยเหลือจากข้อเท็จจริงที่ว่าบันทึกไม่ได้ให้ข้อมูลว่าทำไมมันจึงล้มเหลว ตัวอย่างเช่นวิดีโอนี้ชนกันที่ 71% ผ่านการแปลงและนี่คือ 4 บรรทัดสุดท้าย:

AC3 Passthru requested and input codec is not compatible for track 2, using AC3 encoder
x264 [info]: using SAR=9593/9600
x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
x264 [info]: profile Constrained Baseline, level 3.0

ไม่ค่อยมีประโยชน์

ฉันดูที่การใช้ ffmpeg เป็นทางเลือก แต่ตัวอย่างทั้งหมดที่ฉันเห็นบนอินเทอร์เน็ตทำอย่างใดอย่างหนึ่งต่อไปนี้:

  1. ไม่ทำงาน (ไม่รู้จักตัวเลือกบรรทัดคำสั่ง) - ทั่วไป!
  2. ส่งผลให้ไฟล์ที่มีขนาดใหญ่กว่าต้นฉบับ - ทั่วไปมาก!
  3. บิดเบือนภาพโดยเฉพาะอย่างยิ่งเมื่อมีการแปลงขนาดวิดีโอที่ไม่คาดคิด (เช่น PAL ที่ไม่ใช่แบบจอกว้าง)
  4. ลบเสียง
  5. ส่งผลให้วิดีโอที่ iPhone, iPod หรือ iPad ไม่เล่น

มีบรรทัดคำสั่ง ffmepg อเนกประสงค์ที่เหมาะสมซึ่งจะทำให้วิดีโอใด ๆ ทำงานอย่างมีความสุขบนอุปกรณ์ Apple ทั้งหมดรวมทั้งลดขนาดไฟล์ลงได้หรือไม่?

คะแนนโบนัสถ้ามันจะหดตัว (แต่ไม่บิดเบือน) วิดีโอใด ๆ ที่มีความละเอียดมากกว่า 720p


เมื่อใดที่คุณอัพเกรด handbrakecli ครั้งสุดท้าย
ยีน

ค่อนข้างบ่อยด้วยความหวังว่าข้อผิดพลาด crashing ได้รับการแก้ไข ฉันกำลังใช้งาน 0.10.2 (2015060900) - MinGW x86_64
ริชาร์ด

ฉันมีวิดีโอ mp4 ที่ปฏิเสธที่จะทำงานบน iOS และนี่เป็นคำสั่งที่สั้นที่สุดที่ฉันสามารถคิดได้ว่ามันแก้ไขได้: ffmpeg -i broken_video.mp4 -pix_fmt yuv420p working_video.mp4
Bemmu

คำตอบ:


30

นี่คือสิ่งที่ฉันทำ ฉันจะใช้ iPhone 4 หรือใหม่กว่า (รวมถึง iPads ทั้งหมด) เป็นเป้าหมาย: โปรไฟล์หลัก H.264 ระดับ 3.1

ffmpeg -i input.mp4 -vcodec libx264 -profile:v main -level 3.1 -preset medium -crf 23 -x264-params ref=4 -acodec copy -movflags +faststart output.mp4

ค่าที่คุณสามารถเปลี่ยนแปลงได้ฟรี:

  • -crf 23: การตั้งค่าคุณภาพคงที่ ค่าที่สูงขึ้น = คุณภาพน้อยลงไฟล์ขนาดเล็กลง ตัวล่าง = คุณภาพที่ดีกว่าไฟล์ที่ใหญ่กว่า ค่าสติมี [18 - 24]
  • -preset medium: หากนี่ช้าเกินไปสำหรับคุณให้ใช้การตั้งค่าล่วงหน้าที่เร็วกว่า หากคุณมีความอดทนใช้มันช้าลง ดูที่นี่สำหรับข้อมูลเพิ่มเติม
  • -acodec copy: พยายามคัดลอกแทร็กเสียงไปยังคอนเทนเนอร์ MP4 หากไม่สามารถคัดลอกได้คุณจะต้องเข้ารหัสเป็น AAC / MP3 / AC3 ​​... เช่น-acodec libmp3lame

หากวิดีโอของคุณมากกว่า 720p ให้เพิ่มรายการต่อไปนี้หลังจากอินพุต:

-vf "scale=-2:720:flags=lanczos"

วิธีนี้จะลดขนาดวิดีโอของคุณเป็น 720p และรักษาอัตราส่วน อัลกอริทึมการปรับขนาดที่ใช้จะเป็น lanczos เนื่องจากดีกว่าค่าเริ่มต้น


3
คุณสามารถใช้-vf "scale=-2:720:flags=lanczos"แทน -movflags +faststartแนะนำให้เพิ่มหากไฟล์นั้นจะถูกดูผ่านการดาวน์โหลดแบบโปรเกรสซีฟเช่นในเบราว์เซอร์
llogan

สร้าง Zeranoe x264-paramsฉันใช้ไม่สนับสนุน ขาดการสร้างมันด้วยตัวเองมีวิธีแก้ไขปัญหานี้ไหม?
ริชาร์ด

ฉันใช้ Zeranoe สร้างตัวเองและ-x264-paramsทำงานได้ดี คุณแน่ใจหรือว่าไม่พลาดบางสิ่ง ตัวเลือกส่วนใหญ่เป็นความปลอดภัยเพื่อหลีกเลี่ยงการมีมากกว่า 4 เฟรมอ้างอิงที่อาจไม่ได้รับการจัดการโดยตัวถอดรหัสรุ่นเก่า
เอไล

-acodec libmp3lameไม่ได้ผลสำหรับฉัน หากต้องการเปิดใช้งานเสียงใน iPad Mini ของฉันฉันได้สร้างใหม่ffmpegด้วยnonfreeตัวแปรและใช้libfdk_aacรหัสแล้ว
Vitaly S.

0

นี่เป็นพื้นฐาน แต่ใช้งานได้ทันทีสำหรับฉันบน iPad 3

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