Làm cách nào để chuyển đổi tập tin .mkv thành tập tin .mp4 một cách dễ dàng?


119

Tôi cần chuyển đổi tệp video từ thùng chứa Matroska sang thùng chứa mp4. Tệp Matroska chứa một bản nhạc video h.264 và một bản nhạc AC3. Có thể làm điều này một cách dễ dàng, nhưng làm thế nào để làm điều đó với các công cụ Ubuntu gốc?

Chuyển mã không phải là một lựa chọn.


Xem câu hỏi này .
Binarylife

2
đây đặc biệt là một giải pháp để chuyển đổi các tệp Matroska không phát trong TV Samsung, thành các tệp tương thích với nó
knocte

Trong những năm qua, tôi thấy điều này rất hữu ích khi Chromecasthỗ trợ H.264với AAChoặc MP3trong một MP4container. Việc truyền phát video từ máy tính của bạn rất dễ dàng Chromecastnếu bạn có Chrome với tiện ích mở rộng Google cast. Chỉ cần kéo và thả một MP4mã hóa luồng chính xác vào cửa sổ trình duyệt và bắt đầu truyền phát.
Seppo Erviälä

Câu trả lời:


164

Có lẽ công cụ dễ nhất cho điều đó là ffmpeg, hoặc avconvtừ libav-toolsgói. Libav là một nhánh của FFmpeg, mà Ubuntu đã chuyển sang một vài năm cho đến Ubuntu 15.04. Nó là một trong những phụ trợ cho nhiều công cụ GUI được đề cập trong các câu trả lời khác.

Thay đổi vùng chứa mà không đóng lại nội dung không thể đơn giản hơn:

ffmpeg -i input.mkv -codec copy output.mp4
  • Nó tự động phát hiện chuyển đổi vùng chứa Matroska sang MP4 dựa trên tên tệp đầu vào / đầu ra.

  • -codec copycác bản sao luồng hoặc "re-muxes", các luồng từ đầu vào đến đầu ra mà không cần mã hóa lại. Hãy nghĩ về nó như một bản sao và dán.

  • Hành vi lựa chọn luồng mặc định là chỉ chọn một luồng cho mỗi loại luồng. Ví dụ: nếu đầu vào của bạn có hai luồng video và một luồng âm thanh thì chỉ có luồng video có kích thước khung hình lớn nhất sẽ được chọn. Thêm -map 0nếu bạn muốn chọn tất cả các luồng từ đầu vào.

  • Một số container có thể không hỗ trợ một số định dạng. Vì vậy, kiểm tra xem bạn chọn chứa định dạng, có thể là mkv, mp4hoặc thậm chí aviđã hỗ trợ cho tất cả các nội dung trong các tập tin của bạn (video, âm thanh, phụ đề, dữ liệu, vv). Ví dụ: mp4không hỗ trợ phụ đề SubRip ( .srttệp).


6
Để chuyển mã âm thanh sang AAC, để lại video dưới dạng AVC: avconv -i input.mkv -c:v copy -c:a libfaac output.mp4(Tôi đã sử dụng ffmpeg, tôi giả sử avconv có cùng dòng lệnh tranh luận ở đây)
camh

@camh: Những gì bạn nói hoạt động, nhưng xin lưu ý 2 điều: 1) Nó sẽ để nguyên video, bất kể đó là AVC hay cái gì khác; 2) Nó sẽ không chỉ chuyển đổi âm thanh sang AAC mà cả định dạng chứa từ mkv sang mp4
MestreLion

1
@AquariusPower: chỉ cần lưu ý rằng OP không muốn ánh xạ lại các luồng: anh ấy chỉ muốn chuyển đổi vùng chứa và giữ tất cả các luồng.
MestreLion

2
@AquariusPower: bạn đã thử đơn giản với -map 0cả hai luồng âm thanh chưa? Như tôi đã nói trong câu trả lời: "Hành vi chọn luồng mặc định là chỉ chọn một luồng cho mỗi loại luồng"
MestreLion

1
Sử dụng -c:s mov_texttùy chọn nếu bạn cần giữ ví dụ. srtphụ đề theo dõi.
Seppo Erviälä

25

Nhận phần mềm cần thiết

sudo apt-get install gpac mkvtoolnix

Trích xuất video và âm thanh từ tập tin matroska

Trước tiên, bạn cần kiểm tra xem tập tin matroska chứa gì

mkvmerge --identify video.mkv

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

Sau đó trích xuất video và âm thanh theo bản nhạc của họ bằng:

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 âm thanh và video thành 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

Tôi đã phải thêm -fps 24tùy chọn vì MP4Boxkhông phát hiện chính xác video fps. Tùy thuộc vào việc sử dụng AC3theo dõi âm thanh nên được mã hóa lại vào một cái gì đó khác trước khi mux.

Bây giờ bạn đã chuyển các luồng từ thùng chứa matroska sang thùng chứa mp4 mà không làm giảm chất lượng.

EDIT: MP4 không chính thức hỗ trợ âm thanh AC3, do đó, đoạn âm thanh phải được chuyển đổi thành định dạng được hỗ trợ (ví dụ: AAC, MP3) nếu bạn muốn tệp có thể phát được bằng một thứ khác ngoài VLC.


1
Điều này sẽ làm việc với các bài hát phụ đề?
CyberSkull

11

Bạn có thể sử dụng Avidemux

Nó có giao diện GUI tốt.

Khi chuyển đổi từ mkv sang mp4, nó không được mã hóa lại.

Việc hội tụ được thực hiện trong vòng một phút (đối với video 60 phút).

  1. sudo apt-get install avidemux

  2. Mở tệp mkv trong avidemux.

  3. Chọn chế độ an toàn nếu được nhắc.

  4. Để lại video như bản sao.

  5. Chọn Tệp-> Thuộc tính. Kiểm tra nếu codec âm thanh là aac.

    1. Nếu codec âm thanh KHÔNG phải là aac, hãy chọn aac(faac).
    2. Nếu không, hãy để nó như copy. (Đôi khi sử dụng tùy chọn này, âm thanh có thể không đồng bộ hoặc bị méo, trong trường hợp đó, hãy chọn aac(faac)thay thế.)
  6. Chọn mp4định dạng.

  7. Chọn lưu, chọn vị trí và nhập tên tệp .mp4làm phần mở rộng.

Lưu ý: Đôi khi (~ 10% cơ hội) nó có thể thất bại. Sau đó sử dụng handbrake(re-encode).

Lưu ý2: có hai liên kết giúp bạn:

http://www.ubuntugeek.com/avidemux-free-video-editor-design-for-simple-cuting-filtering-and-encoding-t task.html

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


Làm việc như người ở. Tôi đã có vấn đề đồng bộ hóa sau câu trả lời được chấp nhận, nhưng không phải với câu hỏi này.
moraes

hoạt động rất tốt
psychok7


-2

Do MPEG Phần 14 hỗ trợ h.264 và AC3 nguyên bản mà không cần chuyển mã, bạn chỉ cần đổi tên tệp để nó có .mp4phần mở rộng thay vì .mkvphần mở rộng.


3
Nó có thể hỗ trợ các codec bên trong, nhưng điều đó không có nghĩa là nó sẽ hoạt động trong một ứng dụng không hiểu Matroska. Điều này sẽ chỉ hoạt động nếu ứng dụng hỗ trợ Matroska và xem số ma thuật thay vì phần mở rộng.
Arda Xi

Đổi tên tệp sẽ không chuyển đổi định dạng vùng chứa và nó có thể gây nhầm lẫn cho ứng dụng (và người dùng). Như @ArdaXi đã nói, ứng dụng vẫn cần hỗ trợ Matroska để chơi nó.
MestreLion

-2

Bạn có thể thử XỬ LÝ bằng cách thêm PPA của nó bằng cách nhập mã này vào thiết bị đầu cuối:

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

Đây dường như là một bộ chuyển mã video. Tôi không muốn nén lại đoạn video vì nó đã ở định dạng h.264.
Seppo Erviälä

1
Handbrake là một công cụ chuyển mã tuyệt vời, nhưng tôi sẽ không bao giờ sử dụng nó để chuyển đổi định dạng tệp.
CyberSkull

1
Tôi hoàn toàn thích Handbreak, nhưng tiếc là nó chỉ hoạt động một cách dễ dàng cho âm thanh (và phụ đề). Tôi không thể tìm cách sao chép video mà không chuyển mã video và OP đặc biệt yêu cầu chuyển đổi định dạng lossless.
MestreLion
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.