จะแปลงวิดีโอ MKV เป็นวิดีโอ MP4 แบบ lossless ที่เข้ากันได้กับอุปกรณ์ iOS บน Windows ได้อย่างไร?


10

ฉันใหม่สำหรับ FFmpeg (Windows) และต้องการความช่วยเหลือ

ฉันต้องการแปลง MKV ของฉันเป็น MP4 โดยเสียคุณภาพน้อยที่สุด MKV นั้นทำด้วย MakeMKV และมีซาวด์แทร็ก DTS อื่น ๆ พวกเขาจะไม่สูญเสีย เหตุผลที่ฉันต้องการแปลงคือฉันวางแผนที่จะสตรีมไปยัง iPad และ Apple TV iPads ไม่รองรับ DTS และ MKV MKV นั้นเป็นทั้ง DVD และ Blu-Ray MKVs มีวิดีโอซาวด์แทร็กและคำบรรยาย

ฉันลองสิ่งนี้ แต่ไม่ได้รับเสียงใด ๆ เนื่องจากซาวด์แทร็ก DTS:

ffmpeg -i input.mkv -c:v copy -c:a copy output.mp4

ใครช่วยฉันได้บ้าง

ฉันควรใช้ตัวแปลงสัญญาณอะไร MP4 ดีที่สุดสำหรับ Apple?


1
มี iPad และ Apple TV รุ่นใดที่คุณกำลังกำหนดเป้าหมายอยู่หรือคุณต้องการสนับสนุนทั้งหมดหรือไม่
llogan

2
หมายเหตุ: MP4 ไม่ใช่ตัวแปลงสัญญาณ มันเป็นเพียงรูปแบบไฟล์ ("คอนเทนเนอร์")
slhck

ฉันมีไอพอดแอร์รุ่นใหม่ล่าสุด ฉันมี Apple TV ใหม่ล่าสุด ฉันรู้ว่า MP4 เป็นภาชนะและไม่ได้ตัวแปลงสัญญาณ :)
Striky

โปรดรวมข้อมูลบางอย่างเกี่ยวกับอินพุตปกติของคุณ เอาต์พุตคอนโซลที่สมบูรณ์ของffmpeg -i input.mkvจะเพียงพอ
llogan

ฉันได้ลอง ffmpeg -i input.mkv -c: v copy -c: a copy output.mp4 สิ่งนี้เล่นได้ แต่ไม่มีเสียงเนื่องจาก Apple ไม่เล่น DTS ยังได้ลอง ffmpeg -i input.mkv - การทดลองอย่างเข้มงวด -c: v copy -c: aac -b: a 192k -q: a output.mp4 6 ตัว แต่ภาพยนตร์ (ทั้งวิดีโอและเสียง) เล่นได้ไม่ราบรื่นบน my iPad Air (ทั้งสตรีมและดาวน์โหลด)
Striky

คำตอบ:


22

MP4 เป็นรูปแบบที่ดีที่สุดสำหรับอุปกรณ์และซอฟต์แวร์ของ Apple ไม่รองรับ DTS แน่นอนไฟล์วิดีโอ MP4 หลายไฟล์มีแทร็กเสียงสองแทร็กหนึ่ง DTS และ AAC หนึ่งไฟล์

มีหลายเข้ารหัสที่มีอยู่ทั้งหมดของพวกเขาได้รับการบันทึกในวิกิพีเดีย ffmpeg ตัวแปลงสัญญาณใดที่พร้อมใช้งานขึ้นอยู่กับวิธีการรวบรวม ffmpeg libfdk_aacจะให้ผลลัพธ์ที่ดีที่สุดแก่คุณ แต่เนื่องจากตัวแปลงสัญญาณนี้เป็นแบบไม่ฟรีจึงไม่สามารถใช้ได้ตลอดเวลา

สิ่งที่คุณสามารถลอง (ฉันใส่ไว้ในลำดับคุณภาพการรับรู้ของฉันดีที่สุดก่อน)

ffmpeg -i input.mkv -c:v copy -c:a libfdk_aac -b:a 128k output.mp4
ffmpeg -i input.mkv -strict experimental -c:v copy -c:a aac -b:a 192k output.mp4
ffmpeg -i input.mkv -c:v copy -c:a libfaac -b:a 192k output.mp4

หากคุณต้องการเก็บแทร็ก DTS ไว้ให้ใช้การ-mapตั้งค่าสถานะ

ไม่ใช่การใช้งานโดยตรงสำหรับ OP แต่โปรแกรมย่อยของโปรแกรม OS X ทำให้กระบวนการนี้ง่ายมาก

แก้ไข: ความเห็น tl; dr? OP แก้ไขปัญหาด้วยคำสั่งต่อไปนี้

ffmpeg -i input.mkv -strict experimental -map 0:0 -map 0:1 -map 0:2 -map 0:3 -c:v copy -c:a aac -b:a 384 -c:s copy output.mp4

เคล็ดลับ: หากคำบรรยายไม่ได้ทำงานให้ลอง-c:s copy ช่วยฉันหลายครั้ง-c:s mov_text


ฉันไม่คิดว่าโหมด VBR ของเครื่องเข้ารหัส AAC ทำงานได้ตามที่ต้องการ ครั้งสุดท้ายที่ฉันตรวจสอบว่ามันเสีย ดีกว่าไปกับ CBR และ VBR ใช้สำหรับเข้ารหัสอื่น ๆ ( libfdkและlibfaac)
slhck

ฉันได้อ่านแล้วว่า libfdk_aac จะให้ผลลัพธ์ที่ดีที่สุด ฉันได้ดาวน์โหลดเวอร์ชั่นคงที่ 32 บิตสำหรับ Windows (git-9722a6a (2014-05-24)) ฉันจะตรวจสอบว่าฉันมีตัวแปลงสัญญาณ libfdk ได้อย่างไร แก้ไข: ฉันรับตัวเข้ารหัสที่ไม่รู้จัก 'libfdk_aac' ฉันจะดาวน์โหลดได้ที่ไหนหรือมีตัวแปลงสัญญาณเสียงที่ดีเกือบเท่าไหร่?
Striky

ลองทั้ง ffmpeg -i input.mkv -c: v copy -c: a libfdk_aac -b: 128k output.mp4 และ ffmpeg -i input.mkv -c: v คัดลอก -c: a libfaac -b: a 192k output .mp4 ไม่ไป :(
Striky

@Striky "ไม่ไป :(" ผมพยายามที่คำสั่งสุดท้ายกับ ffmpeg สดจาก Homebrew, ทำงานสำหรับฉันคุณสามารถให้รายละเอียดเพิ่มเติมเกี่ยวกับเหตุผลที่มันไม่ทำงานสำหรับคุณ.
jornane

@slhck: ฉันเพิ่งลองการ-c:a aac -q:a 6ตั้งค่าและเปรียบเทียบผลลัพธ์ด้วย-c:a libfaac -b:a 192kในความคิดของฉันaac codec ให้ผลลัพธ์ที่ดีกว่าlibfaacแต่เนื่องจากตัวแปลงสัญญาณอยู่ระหว่างการพัฒนาสิ่งนี้อาจเปลี่ยนแปลงได้ libfdk_aacอาจให้ผลลัพธ์ที่ดียิ่งขึ้น แต่ตอนนี้ฉันยังไม่พร้อมให้บริการ
jornane

0

ฉันรู้ว่านี่เป็นคำถามเก่า - และมีคำตอบแล้ว แต่ฉันต้องการแบ่งปันบางคำสั่งที่ฉันใช้กับ FFmpeg บน macOS

วิดีโอเข้ารหัส x264 MP4 พร้อมเสียง AAC จาก MKV

การแปลง MKV พื้นฐานพร้อม MP4 ในตัว แต่แปลงเสียงเป็น AAC ที่ 128k หมายเหตุการแมป: -map 0:0หมายถึง0แทร็กแรก ( ) จากอินพุตต้นทาง ( 0) และแทร็ก-map 0:1หมายถึง1แทร็กที่สอง ( ) จากอินพุตต้นทางเดียวกัน ( 0) ฉันชอบทำสิ่งนี้ในกรณีที่มีแทร็กเสียงหลายแทร็กดังนั้นฉันสามารถทำบางอย่างเช่นเลือก-map 0:3เพื่อรับแทร็กที่สาม

ffmpeg -i input.mkv \
       -c:v copy \
       -c:a aac -b:a 128k \
       -map 0:0 -map 0:1 \
       output.mp4 \
       ;

MP4 วิดีโอที่เข้ารหัส HEVC / x265 พร้อมเสียง AAC จาก MKV

นี่คล้ายกับคำสั่ง x264 ข้างต้น แต่ใช้ HEVC / x265 แทนเพื่อให้ได้ขนาดไฟล์ที่เล็กลงด้วยเหมือนกัน - หากคุณภาพไม่ดีกว่า - วิดีโอจากแหล่ง MKV โปรดทราบว่าฉันต้องการปรับขนาดวิดีโอ iOS เป็น 720 เมื่อใช้ HEVC / x265 คุณภาพสำหรับการเล่นที่ไม่มีสัญญาณรบกวนมากเกินไปนั้นเป็นสิ่งที่มั่นคงสำหรับ MacBook, iPad และ iPhone ของฉัน ตรวจสอบให้แน่ใจว่าฮาร์ดแวร์และระบบปฏิบัติการของคุณรองรับการเล่น HEVC / x265 และได้รับการเตือนล่วงหน้า: HEVC / x265 นั้นใช้ CPU มากดังนั้นหากเครื่องของคุณไม่มีพลังงาน CPU มากมันอาจใช้เวลานานถึงหนึ่งวันในการเข้ารหัสวิดีโอ 90 นาที

ffmpeg -i input.mkv \
       -vf scale=-1:720 \
       -c:v libx265 -crf 20 \
       -c:a aac -b:a 128k \
       -threads 4 \
       -tag:v hvc1 \
       -map 0:0 -map 0:1 \
       output.mp4 \
       ;

นี่คือรายละเอียดของแต่ละพารามิเตอร์หลักนอกเหนือจากไฟล์อินพุตและเอาต์พุต

  • -vf scale=-1:720: ปรับขนาดวิดีโอเป็น 720 ความสูงและคำนวณความกว้างโดยอัตโนมัติ โปรดทราบว่า FFmpeg อาจสำลักบาง MKVs สำหรับเหตุผลที่ผมไม่ได้ 100% -vf scale=1280:720ล้างบนเพื่อให้คุณจะต้องกำหนดความกว้างที่มีบางสิ่งบางอย่างเช่นนี้อย่างชัดเจน: ทดลองและดูว่าอะไรเหมาะกับคุณ
  • -c:v libx265 -crf 20: libx265เป็นตัวแปลงสัญญาณการเข้ารหัสวิดีโอ -crf 20เป็นCRF (ปัจจัยอัตราดอกเบี้ยคงที่) CRF เริ่มต้นหากคุณไม่ได้ระบุไว้คือ 28 แต่ - ณ ตอนนี้ - ค้นหาคุณภาพที่จะสวยมาก… Meh ฉันชอบ 20 เพราะมันมีความสมดุลที่ดีมากระหว่างคุณภาพและขนาดไฟล์
  • -threads 4: ฉันต้องการระบุจำนวนเธรด 4 คือสิ่งที่ระบบของฉันสามารถจัดการได้ในตอนนี้ แต่บางครั้งฉันหมุนมันลงไปที่ 2 หรือ 3 จำนวนที่สูงกว่านั้นจะเร็วกว่าถ้าคุณมี CPU เพียงพอที่จะจัดการได้
  • -tag:v hvc1: การตั้งค่าเมทาดาทาเวทมนต์ที่จะใช้แทนสำหรับอุปกรณ์ iOS ในการเล่นวิดีโอ HEVC / x265 อย่างถูกต้อง

และนั่นเป็นเรื่องนั้น!

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