Nasıl mkv dosyasını kayıpsız olarak .mp4 dosyasına dönüştürmek?


119

Bir video dosyasını Matroska kapsayıcısından mp4 kapsayıcısına dönüştürmem gerekiyor. Matroska dosyası bir h.264 video parçası ve bir AC3 ses parçası içeriyor. Bunu kayıpsız bir şekilde yapmak mümkün olmalı, ancak yerel Ubuntu araçlarıyla nasıl yapılır?

Kodlama bir seçenek değildir.


Bu soruya bakınız .
İkili yaşam

2
Bu özellikle onunla uyumlu olan dosyalara Samsung TV'de çalmıyor Matroska dosyaları dönüştürmek için bir çözümdür
knocte

Yıllar geçtikçe bunu bir kabın içinde veya kabının içinde Chromecastdestek olarak çok faydalı buldum . Google yayın uzantısına sahip Chrome'unuz varsa , bilgisayarınızdan video yayınlamak çok kolaydır . Bir tarayıcı penceresine doğru akış kodlamalarını içeren bir tane sürükleyip bırakın ve akışa başlayın. H.264AACMP3MP4ChromecastMP4
Seppo Erviälä

Yanıtlar:


164

Belki bunun için en kolay araçtır ffmpeg, ya avconvgelen libav-toolspaketin. Libav, Ubuntu'nun 15.04'e kadar birkaç yıllığına geçtiği FFmpeg çatalı. Diğer cevaplarda belirtilen GUI araçlarının çoğu için arka uçlardan biridir.

İçeriği yeniden birleştirmeden konteyneri değiştirmek daha kolay olamazdı:

ffmpeg -i input.mkv -codec copy output.mp4
  • Giriş / çıkış dosya adlarına bağlı olarak bir Matroska'dan MP4'e konteyner dönüştürmeyi otomatik olarak algılar.

  • -codec copyakış, yeniden kodlamadan girdiden çıktıya akışları kopyalar veya "yeniden mux'ler". Bir kopyala yapıştır gibi düşünün.

  • Varsayılan akış seçimi davranışı, akış türü başına yalnızca bir akış seçmektir. Örneğin, girişinizde iki video akışı ve bir ses akışı varsa, yalnızca en büyük kare boyutuna sahip video akışı seçilecektir. -map 0Girişteki tüm akışları seçmek istiyorsanız ekleyin .

  • Bazı kaplar bazı formatları desteklemeyebilir. Yani seçtiğiniz olmadığını kontrol konteyner , biçim olması onu mkv, mp4hatta avitüm desteği vardır içeriğin dosyalarınızın (video, ses, altyazılar, veri, vb). Örneğin, mp4SubRip altyazılarını ( .srtdosyaları) desteklemiyor.


6
Sesi AAC'ye dönüştürmek ve videoyu AVC olarak bırakmak için: avconv -i input.mkv -c:v copy -c:a libfaac output.mp4(ffmpeg kullandım, avconv'un burada aynı komut satırının aynı olduğunu varsayıyorum)
saat

@ camh: Söylediğin şey çalışıyor ama lütfen 2 şeye dikkat et: 1) AVC veya başka bir şey olursa olsun, videoyu olduğu gibi bırakacak; 2) Sadece AAC'ye değil aynı zamanda
mkv'den mp4'e

1
@AquariusPower: OP'nin akışları yeniden eşleştirmek istemediğinin farkında olun: yalnızca kabı dönüştürmek ve tüm akışları saklamak istiyor.
MestreLion,

2
@AquariusPower: -map 0Her iki ses akışını da basitçe denediniz mi?
Cevapta

1
-c:s mov_textÖrn. Saklamak gerekirse, seçeneği kullanın . srtaltyazı parçası.
Seppo Erviälä

25

Gerekli yazılımı edinin

sudo apt-get install gpac mkvtoolnix

Video ve sesi matroska dosyasından çıkarın

Öncelikle matroska dosyasının hangi parçaları içerdiğini kontrol etmeniz gerekir.

mkvmerge --identify video.mkv

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

Ardından video ve sesleri izlerine göre şöyle yapın:

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%

Mp4 muhafaza içine Mux ses ve video

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 24Seçenek eklemek zorunda kaldım, çünkü MP4Boxvideo fps’yi doğru algılayamadım. Kullanıma bağlı olarak, AC3ses parçası karıştırmadan önce başka bir şeye yeniden kodlanmalıdır.

Artık hiç bir kalite kaybı yaşamadan matroska kabından mp4 kabına akarsuları karıştırdınız.

EDIT: MP4 resmi olarak AC3 sesini desteklemez; bu nedenle, dosyanın VLC'den başka bir şeyle oynatılabilmesini istiyorsanız, ses parçasının desteklenen bir formata dönüştürülmesi gerekir (örn. AAC, MP3).


1
Bu altyazı izleriyle çalışacak mı?
CyberSkull

11

Avidemux'u kullanabilirsiniz

İyi bir GUI arayüzüne sahiptir.

Mkv'den mp4'e dönüştürülürken yeniden kodlanmaz.

Dönüştürme bir dakika içinde yapılır (60 dakikalık bir video için).

  1. sudo apt-get install avidemux

  2. Mkv dosyasını avidemux'ta açın.

  3. İstenirse güvenli modu seçin.

  4. Videoyu kopya olarak bırakın.

  5. Dosya-> Özellikler'i seçin. Ses kodeğinin olup olmadığını kontrol edin aac.

    1. Ses çözücüsü aac DEĞİL ise, öğesini seçin aac(faac).
    2. Aksi takdirde, bırakın copy. (Bazen bu seçeneği kullanarak ses, senkronize olmayabilir veya bozuk olabilir, bu durumda aac(faac)bunun yerine seçin .)
  6. mp4Format için seçin .

  7. Kaydet'i seçin, konum seçin ve .mp4uzantı olarak bir dosya adı yazın .

Not: Bazen (~% 10 şans) başarısız olabilir. O zaman kullan handbrake(re-encode).

Not2: Size yardımcı olacak iki bağlantı vardır:

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


Bir cazibe gibi çalıştı. Kabul edilen cevabın ardından eşitleme sorunları yaşadım, ancak bununla değil.
moraes

çok iyi çalışıyor
psychok7


-2

MPEG Bölüm 14, h.264 ve AC3'ü yerel olarak kodlama olmadan desteklediğinden, dosyayı bir .mp4uzantı yerine bir uzantıya sahip olacak şekilde yeniden adlandırabilirsiniz .mkv.


3
İçindeki codec bileşenlerini destekleyebilir, ancak bu Matroska'yı anlamayan bir uygulamada çalışacağı anlamına gelmez. Bu, yalnızca uygulama Matroska'yı destekliyorsa ve uzantı yerine sihir numarasına bakarsa işe yarar.
Arda Xi

Dosyayı yeniden adlandırmak kap formatını dönüştürmez ve uygulamanın (ve kullanıcıların) kafasını karıştırır. @ArdaXi'nin dediği gibi, uygulamanın oynamak için Matroska'yı desteklemesi gerekecek.
MestreLion

-2

Bu kodu terminale yazarak PPA'yı ekleyerek HANDBRAKE'ı deneyebilirsiniz :

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

Bu bir video kod çözücü gibi görünüyor. Video parçasını zaten h.264 biçiminde olduğu için tekrar sıkıştırmak istemiyorum.
Seppo Erviälä

1
El freni harika bir kod çözücüdür, ancak onu dosya formatı dönüşümü için asla kullanmam.
CyberSkull

1
Handbreak'i kesinlikle seviyorum ama maalesef sadece ses (ve altyazı) için kayıpsız çalışıyor. Videoyu dönüştürmeden kopyalamanın bir yolunu bulamadım ve OP özellikle kayıpsız format dönüştürme istedi.
MestreLion
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.