วิธีแปลงไฟล์. mkv เป็นไฟล์. mp4 แบบไม่สูญเสียข้อมูล


119

ฉันต้องการแปลงไฟล์วิดีโอจาก Matroska container เป็น mp4 container ไฟล์ Matroska มีหนึ่งวิดีโอแทร็ก h.264 และหนึ่งแทร็กเสียง AC3 มันเป็นไปได้ที่จะทำสิ่งนี้โดยไม่สูญเสียข้อมูล แต่จะทำอย่างไรกับเครื่องมือ Ubuntu ดั้งเดิม

การแปลงรหัสไม่ใช่ตัวเลือก


ดูคำถามนี้
Binarylife

2
นี่เป็นวิธีแก้ปัญหาโดยเฉพาะอย่างยิ่งสำหรับการแปลงไฟล์ Matroska ที่จะไม่เล่นใน Samsung TV ไปเป็นไฟล์ที่เข้ากันได้
knocte

กว่าปีที่ผมได้พบนี้มีประโยชน์มากเช่นChromecastสนับสนุนH.264ด้วยAACหรือMP3ในMP4ภาชนะ เป็นเรื่องง่ายมากที่จะสตรีมวิดีโอจากคอมพิวเตอร์ของคุณไปยังChromecastหากคุณมี Chrome ที่มีส่วนขยายของ Google cast เพียงลากแล้วปล่อยMP4ด้วยการเข้ารหัสสตรีมที่ถูกต้องไปที่หน้าต่างเบราว์เซอร์และเริ่มการสตรีม
Seppo Erviälä

คำตอบ:


164

บางทีเครื่องมือที่ง่ายที่สุดสำหรับที่เป็นffmpegหรือavconvจากlibav-toolsแพคเกจ Libav เป็นทางแยกของ FFmpeg ซึ่ง Ubuntu เปลี่ยนไปเป็นสองสามปีจนกระทั่ง Ubuntu 15.04 มันเป็นหนึ่งในแบ็กเอนด์สำหรับเครื่องมือ GUI ที่กล่าวถึงในคำตอบอื่น ๆ

การเปลี่ยนคอนเทนเนอร์โดยไม่มีการเข้ารหัสเนื้อหาอาจไม่ง่ายกว่า:

ffmpeg -i input.mkv -codec copy output.mp4
  • มันตรวจจับการแปลงคอนเทนเนอร์ Matroska เป็น MP4 โดยอัตโนมัติตามชื่อไฟล์อินพุต / เอาต์พุต

  • -codec copyสตรีมสำเนาหรือ "re-muxes" สตรีมจากอินพุตไปยังเอาต์พุตโดยไม่ต้องเข้ารหัสใหม่ คิดว่ามันเหมือนการคัดลอกและวาง

  • พฤติกรรมการเลือกกระแสเริ่มต้นคือการเลือกเพียงหนึ่งกระแสต่อประเภทกระแส ตัวอย่างเช่นหากอินพุตของคุณมีสองวิดีโอสตรีมและสตรีมเสียงหนึ่งสตรีมวิดีโอที่มีขนาดเฟรมใหญ่ที่สุดเท่านั้นที่จะถูกเลือก เพิ่ม-map 0ถ้าคุณต้องการเลือกสตรีมทั้งหมดจากอินพุต

  • คอนเทนเนอร์บางตัวอาจไม่รองรับรูปแบบบางอย่าง เพื่อตรวจสอบถ้าคุณเลือกภาชนะรูปแบบไม่ว่าจะเป็นmkv, mp4หรือแม้กระทั่งaviมีการสนับสนุนสำหรับทุกเนื้อหาในไฟล์ของคุณ (วิดีโอเสียงคำบรรยายข้อมูล ฯลฯ ) ตัวอย่างเช่นmp4ไม่รองรับคำบรรยาย SubRip ( .srtไฟล์)


6
เพื่อแปลงเสียงเพื่อ AAC ออกจากวิดีโอเป็น AVC: avconv -i input.mkv -c:v copy -c:a libfaac output.mp4(ผมใช้ ffmpeg ผมถือว่า avconv มี args บรรทัดคำสั่งเดียวกันที่นี่)
camh

@camh: สิ่งที่คุณพูดว่าทำงาน แต่โปรดทราบ 2 สิ่ง: 1) มันจะออกจากวิดีโอตามที่เป็นอยู่ไม่ว่าจะเป็น AVC หรืออย่างอื่น 2) มันจะไม่เพียงแปลงเสียงเป็น AAC แต่ยังเป็นรูปแบบคอนเทนเนอร์จาก mkv เป็น mp4
MestreLion

1
@ AquariusPower: เพิ่งทราบว่า OP ไม่ต้องการทำการแมปสตรีมอีกต่อไป: เขาต้องการเปลี่ยนคอนเทนเนอร์เท่านั้นและเก็บสตรีมทั้งหมด
MestreLion

2
@AquariusPower: คุณได้ลองกับ-map 0สตรีมเสียงทั้งสองแล้วหรือยัง? ดังที่ฉันพูดในคำตอบ: "พฤติกรรมการเลือกกระแสเริ่มต้นคือการเลือกเพียงหนึ่งกระแสต่อประเภทสตรีม"
MestreLion

1
ใช้-c:s mov_textตัวเลือกหากคุณต้องการเก็บไว้เช่น srtคำบรรยายติดตาม
Seppo Erviälä

25

รับซอฟต์แวร์ที่จำเป็น

sudo apt-get install gpac mkvtoolnix

แยกภาพและเสียงจากไฟล์ matroska

ก่อนอื่นคุณต้องตรวจสอบว่าแทร็กไฟล์ matroska มีอะไรบ้าง

mkvmerge --identify video.mkv

File 'video.mkv': container: Matroska
Track ID 1: video (V_MPEG4/ISO/AVC)
Track ID 2: audio (A_AC3)

จากนั้นแยกภาพและเสียงตามแทร็กด้วย:

mkvextract tracks video.mkv 1:video.h264 2:audio.ac3

Extracting track 1 with the CodecID 'V_MPEG4/ISO/AVC' to the file 'video.h264'. Container format: AVC/h.264 elementary stream
Extracting track 2 with the CodecID 'A_AC3' to the file 'audio.ac3'. Container format: Dolby Digital (AC3)
Progress: 100%

Mux เสียงและวิดีโอเป็น mp4 containter

MP4Box -fps 24 -add video.h264 -add audio.ac3 video.mp4

AVC-H264 import - frame size 1280 x 720 at 24.000 FPS
Import results: 31671 samples - Slices: 5672 I 125048 P 122648 B - 32288 SEI - 4936 IDR
AC3 import - sample rate 48000 - 6 channels
Saving to video.mp4: 0.500 secs Interleaving

ฉันต้องเพิ่ม-fps 24ตัวเลือกเพราะMP4Boxตรวจไม่พบวิดีโอ fps อย่างถูกต้อง ขึ้นอยู่กับการใช้AC3แทร็กเสียงการใช้งานควรจะเข้ารหัสเป็นอย่างอื่นก่อน muxing

ตอนนี้คุณได้สตรีม remuxed จากภาชนะ matroska ลงในภาชนะ mp4 โดยไม่สูญเสียคุณภาพใด ๆ

แก้ไข: MP4 ไม่สนับสนุนเสียง AC3 อย่างเป็นทางการดังนั้นแทร็กเสียงควรถูกแปลงเป็นรูปแบบที่รองรับ (เช่น AAC, MP3) หากคุณต้องการให้ไฟล์เล่นด้วยอย่างอื่นที่ไม่ใช่ VLC


1
สิ่งนี้จะใช้ได้กับแทร็กคำบรรยายหรือไม่
CyberSkull

11

คุณสามารถใช้ Avidemux

มันมีอินเตอร์เฟส GUI ที่ดี

เมื่อแปลงจาก mkv เป็น mp4 จะไม่ถูกเข้ารหัสอีกครั้ง

การแปลงเสร็จภายในหนึ่งนาที (สำหรับวิดีโอ 60 นาที)

  1. sudo apt-get install avidemux

  2. เปิดไฟล์ mkv ใน avidemux

  3. เลือกเซฟโหมดหากได้รับแจ้ง

  4. ทิ้งวิดีโอไว้เป็นสำเนา

  5. เลือกไฟล์ -> คุณสมบัติ aacตรวจสอบว่าตัวแปลงสัญญาณเสียงเป็น

    1. ถ้าตัวแปลงสัญญาณเสียง AAC aac(faac)ไม่ได้เลือก
    2. copyมิฉะนั้นปล่อยให้มันเป็น (บางครั้งใช้ตัวเลือกนี้เสียงอาจไม่ตรงกันหรือผิดเพี้ยนในกรณีนั้นให้เลือกaac(faac)แทน)
  6. เลือกmp4รูปแบบ

  7. เลือกบันทึกเลือกตำแหน่งที่ตั้งและพิมพ์ชื่อไฟล์ด้วย.mp4ส่วนขยาย

หมายเหตุ:บางครั้ง (โอกาส ~ 10%) มันอาจล้มเหลว handbrake(re-encode)จากนั้นใช้

Note2:มีสองลิงค์ที่จะช่วยคุณ:

http://www.ubuntugeek.com/avidemux-free-video-editor-designed-for-simple-cutting-filtering-and-encoding-tasks.html

http://www.ubuntugeek.com/how-to-convert-mkv-file-into-mp4-file-using-avidemux.html


ทำงานเหมือนจับใจ ฉันมีปัญหาในการซิงค์ตามคำตอบที่ยอมรับแล้ว แต่ไม่ใช่กับคำถามนี้
moraes

ทำงานได้ดีมาก
psychok7

2

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถใช้โปรแกรมของฉันdmMediaConverter เพียงแค่ปล่อย " คัดลอก " สำหรับสตรีมทั้งสองที่ถูกตรวจสอบ (ไม่มีการแปลงรหัส) และใส่. mp4ไปที่ชื่อไฟล์เอาต์พุต แค่นั้นแหละ. ง่ายมาก. http://dmsimpleapps.blogspot.ro/2014/04/dmmediaconverter.html


-2

เนื่องจาก MPEG Part 14 รองรับ h.264 และ AC3 โดยไม่ต้องแปลงรหัสคุณสามารถเปลี่ยนชื่อไฟล์เพื่อให้มี.mp4นามสกุลแทน.mkvนามสกุล


3
มันอาจรองรับตัวแปลงสัญญาณภายใน แต่นั่นไม่ได้หมายความว่ามันจะทำงานในแอปพลิเคชันที่ไม่เข้าใจ Matroska สิ่งนี้จะใช้ได้ก็ต่อเมื่อแอปพลิเคชันรองรับ Matroska และดูที่หมายเลขเวทย์มนตร์แทนส่วนขยาย
Arda Xi

การเปลี่ยนชื่อไฟล์จะไม่แปลงรูปแบบคอนเทนเนอร์และอาจทำให้แอปพลิเคชั่น (และผู้ใช้) สับสน ตามที่ @ArdaXi กล่าวว่าแอปพลิเคชันยังคงต้องสนับสนุน Matroska เพื่อเล่น
MestreLion

-2

คุณสามารถลองHANDBRAKE ได้โดยเพิ่ม PPA โดยพิมพ์รหัสนี้ลงในเทอร์มินัล:

sudo add-apt-repository ppa:stebbins/handbrake-releases

นี่น่าจะเป็นตัวแปลงสัญญาณวิดีโอ ฉันไม่ต้องการบีบอัดแทร็กวิดีโออีกครั้งเนื่องจากอยู่ในรูปแบบ h.264 แล้ว
Seppo Erviälä

1
Handbrake เป็นตัวแปลงสัญญาณที่ยอดเยี่ยม แต่ฉันจะไม่ใช้มันสำหรับการแปลงรูปแบบไฟล์
CyberSkull

1
ฉันชอบ Handbreak จริงๆ แต่น่าเสียดายที่มันใช้งานได้ไม่สูญเสียสำหรับเสียง (และคำบรรยาย) ฉันไม่สามารถหาวิธีคัดลอกวิดีโอได้โดยไม่ต้องแปลงรหัสและ OP ขอการแปลงรูปแบบไม่สูญเสียรูปแบบโดยเฉพาะ
MestreLion
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.