Muszę przekonwertować plik wideo z kontenera Matroska na kontener MP4. Plik Matroska zawiera jedną ścieżkę wideo h.264 i jedną ścieżkę dźwiękową AC3. Powinno być możliwe wykonanie tego bezstratnie, ale jak to zrobić przy użyciu rodzimych narzędzi Ubuntu?
Transkodowanie nie jest opcją.
Chromecast
podporyH.264
zAAC
lubMP3
wMP4
pojemniku. Przesyłanie filmów z komputera jest bardzo łatwe,Chromecast
jeśli masz Chrome z rozszerzeniem Google Cast. Po prostu przeciągnij i upuśćMP4
odpowiedni kodowanie strumienia do okna przeglądarki i rozpocznij transmisję strumieniową.Odpowiedzi:
Być może najłatwiejszym narzędziem do tego jest
ffmpeg
lubavconv
zlibav-tools
pakietu. Libav to rozwidlenie FFmpeg, na które Ubuntu przestawił się na kilka lat, aż do Ubuntu 15.04. Jest to jeden z backendów wielu narzędzi GUI wymienionych w innych odpowiedziach.Zmiana kontenera bez ponownego kodowania zawartości nie może być prostsza:
Automatycznie wykrywa konwersję kontenera Matroska do MP4 na podstawie nazw plików wejściowych / wyjściowych.
-codec copy
kopie strumieniowe lub „remiksowanie” strumieni od wejścia do wyjścia bez ponownego kodowania. Pomyśl o tym jak o kopiowaniu i wklejaniu.Domyślne zachowanie wyboru strumienia polega na wybraniu tylko jednego strumienia na typ strumienia. Na przykład, jeśli na wejściu znajdują się dwa strumienie wideo i jeden strumień audio, wówczas wybrany zostanie tylko strumień wideo o największym rozmiarze klatki. Dodaj,
-map 0
jeśli chcesz wybrać wszystkie strumienie z wejścia.Niektóre kontenery mogą nie obsługiwać niektórych formatów. Sprawdź, czy wybrany format kontenera , czy to jest
mkv
,mp4
czy nawetavi
obsługuje całą zawartość twoich plików (wideo, audio, napisy, dane itp.). Na przykładmp4
nie obsługuje napisów (.srt
plików) SubRip .źródło
avconv -i input.mkv -c:v copy -c:a libfaac output.mp4
(Użyłem ffmpeg, zakładam, że avconv ma tę samą argumentację w wierszu poleceń)-map 0
uzyskać oba strumienie audio? Jak powiedziałem w odpowiedzi: „Domyślnym zachowaniem podczas wyboru strumienia jest wybranie tylko jednego strumienia na typ strumienia”-c:s mov_text
opcji, jeśli chcesz zachować np.srt
ścieżka napisów.Uzyskaj potrzebne oprogramowanie
Wyodrębnij wideo i audio z pliku matroska
Najpierw musisz sprawdzić, jakie ścieżki zawiera plik matroska
mkvmerge --identify video.mkv
Następnie wyodrębnij wideo i audio zgodnie z ich utworami za pomocą:
mkvextract tracks video.mkv 1:video.h264 2:audio.ac3
Audio i wideo Mux do kontenera MP4
MP4Box -fps 24 -add video.h264 -add audio.ac3 video.mp4
Musiałem dodać
-fps 24
opcję, ponieważMP4Box
nie wykryłem poprawnie klatek wideo. W zależności od użyciaAC3
ścieżka audio powinna zostać ponownie zakodowana w coś innego przed multipleksowaniem.Teraz przemieściłeś strumienie z kontenera Matroska do kontenera MP4 bez utraty jakości.
EDYCJA: MP4 oficjalnie nie obsługuje dźwięku AC3, więc ścieżkę audio należy przekonwertować na obsługiwany format (np. AAC, MP3), jeśli chcesz, aby plik mógł być odtwarzany przy użyciu czegoś innego niż VLC.
źródło
Możesz użyć Avidemux
Ma dobry interfejs GUI.
Podczas konwersji z mkv na mp4 nie jest ponownie kodowany.
Konwersja jest wykonywana w ciągu minuty (dla 60-minutowego filmu).
sudo apt-get install avidemux
Otwórz plik mkv w avidemux.
Wybierz tryb awaryjny, jeśli pojawi się monit.
Pozostaw wideo jako kopię.
Wybierz Plik-> Właściwości. Sprawdź, czy kodek audio jest
aac
.aac(faac)
.copy
. (Czasami przy użyciu tej opcji dźwięk może nie być zsynchronizowany lub zniekształcony, w takim przypadku wybierz opcjęaac(faac)
).Wybierz
mp4
dla formatu.Wybierz zapisz, wybierz lokalizację i wpisz nazwę pliku z
.mp4
rozszerzeniem.Uwaga: Czasami (~ 10% szansa) może się nie powieść. Następnie użyj
handbrake(re-encode)
.Uwaga 2: istnieją dwa linki, które pomogą ci:
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
źródło
Możesz użyć mojej aplikacji, dmMediaConverter . Po prostu pozostaw „ kopiuj ” dla obu strumieni zaznaczone (bez transkodowania) i umieść .mp4 w nazwie pliku wyjściowego. Otóż to. Bardzo proste. http://dmsimpleapps.blogspot.ro/2014/04/dmmediaconverter.html
źródło
Ponieważ MPEG Part 14 obsługuje natywnie h.264 i AC3 bez transkodowania, możesz po prostu zmienić nazwę pliku, aby miał
.mp4
rozszerzenie zamiast.mkv
rozszerzenia.źródło
Możesz wypróbować HANDBRAKE , dodając jego PPA, wpisując ten kod w terminalu:
źródło