Konwertuj MKV z dźwiękiem DTS na wideo MP4 z dźwiękiem AAC lub AC3


13

Mam film o rozdzielczości 4,3 GB 720p i chcę przekonwertować ten MKV z dźwiękiem DTS na wideo MP4 z dźwiękiem AAC lub AC3.

Czasami dostaję:

ffmpeg: unrecognized option '-c:v'

…i:

aac unrecognized

¬ i inne podobne rzeczy.

Chcę, aby ten film miał mały rozmiar, taki jak te znalezione na stronach z torrentami.


Czy możesz nam pomóc i podać dokładne polecenie, którego używasz, oraz pełne, nieoszlifowane wyjście wygenerowane przez FFmpeg? Z jakiego systemu operacyjnego korzystasz? I wreszcie: czy mają korzystać FFmpeg? Proszę edytować swoje pytanie.
slhck

Odpowiedzi:


19

Upewnij się, że korzystasz z najnowszej wersji FFmpeg . W systemach Windows i Linux kompilacje statyczne są dostępne ze strony głównej. W systemie macOS można zainstalować FFmpeg za pośrednictwem Homebrew .

Następnie w najprostszym przypadku uruchom:

ffmpeg -i input.mkv -c:v libx264 -c:a aac out.mp4

Ustawianie jakości wideo

Do sterowania jakość obrazu, ustaw ten crfparametr , który domyślnie 23. Dolna oznacza lepszą jakość, ale wyższe rozmiar pliku. Wypróbuj wartości od 19 do 26, aby zobaczyć, co najlepiej pasuje. Możesz także ustawić określoną szybkość transmisji, w zależności od wymaganego rozmiaru pliku. Tutaj na przykład 500 kBit / s:

ffmpeg -i input.mkv -c:v libx264 -crf 23 …
ffmpeg -i input.mkv -c:v libx264 -b:v 500k …

W przypadku audio możesz również ustawić szybkość transmisji, za pomocą -b:a.

Wielokanałowy dźwięk

Jeśli Twój strumień audio korzysta z wielu kanałów (np. Dźwięk 5.1), musisz użyć innego kodera AAC ( libfdk_aac). Ten koder nie jest dostępny w kompilacjach statycznych, ale można go uzyskać we wstępnie paczkowanych wersjach ffmpeg / Homebrew.

ffmpeg -i input.mkv -c:v libx264 -crf 23 -c:a libfdk_aac -b:a 384k out.mp4

Kopiowanie wszystkich strumieni

W przypadku, gdy plik wejściowy zawiera więcej niż jeden strumień wideo, audio i napisów, ffmpeg domyślnie nie konwertuje wszystkich.

Służy -map 0do instruowania ffmpeg, aby pobierał wszystkie strumienie z pliku wejściowego ( więcej informacji na stronie Wiki FFmpeg ). Jest to przydatne do zachowania różnych języków i napisów, które mogą być w oryginale.

ffmpeg -i input.mkv -c:v libx264 -c:a aac -map 0 out.mp4

2

MKV to tylko kontener. Możesz mieć wideo MPEG-4 wewnątrz .mkvkontenera.

Moja propozycja jest następująca:

Wciśnij plik do .mkvkontenera:

mkvmerge -o newfile.mkv inputfile.m4v

Pobierz mkvdts2ac3.shskrypt tutaj i uruchom następujące polecenie:

mkvdts2ac3.sh newfile.mkv

Gotowy!

Mój telewizor obsługuje AC3, ale nie DTS, więc ta konfiguracja robi mi cuda.

Należy pamiętać, że mkvdts2ac3.shma pewne podstawowe wymagania dotyczące zależności. Zobaczysz je po uruchomieniu skryptu.


root @ Frenzen: ~ / Downloads / 2.Days.In.New.York.2012.720p.BluRay.X264- 7SinS # mkvmerge -o 7s-2days-in-ny-720p.mkv inputfile.m4v mkvmerge v3.0.0 (' Rozłączaj Hang-upy ”) zbudowany 29 grudnia 2009 00:24:14 Błąd: Plik źródłowy„ inputfile.m4v ”nie mógł zostać pomyślnie otwarty lub pobieranie jego rozmiaru przez wyszukiwanie do końca nie działało. root @ Frenzen: ~ / Downloads / 2.Days.In.Nowy.York.2012.720p.BluRay.X264-7SinS #
dale

Brzmi jak uszkodzony plik wejściowy.
UtahJarhead

@dale Czy możesz dołączyć wynik, o który prosiłem, w komentarzu do twojego pierwotnego pytania? Pomoże nam to rozwiązać problem.
slhck

Ponadto, UtahJarhead, OP wydaje się chcieć pliku wynikowego MP4 z pliku wejściowego MKV. Nie ma m4vpliku, dlatego twoje polecenie nie działa. Ponadto Dale użył niewłaściwej składni, określając swój istniejący plik jako dane wyjściowe i dając inputfile.m4vjako dane wejściowe, co oczywiście nie istnieje.
slhck

MP4 to kodek, a nie kontener. mkv to kontener, a nie kodek. To tak, jakby powiedzieć, że chcą zrobić garaż z Cadillaca. Jaki kodek to wejściowy plik .mkv, ponieważ może to mieć znaczenie.
UtahJarhead

1

Możesz to zrobić:

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

Lub jeśli nie ma radości, spróbuj naprawić wewnętrzny strumień bitów

Konwersja do stereo i asc:

ffmpeg -i input.mkv -c:v copy -c:a libfaac    \
-bsf:a aac_adtstoasc -ac 2 -ar 48000 -ab 256k \
out.mkv

Jeśli jest to 5.1, surround, a głosy są słabo słyszalne, to dlatego, że okno dialogowe znajduje się na kanale środkowym i słychać tylko dźwięk off-mike z kanałów R & L, ale muzyka i efekty dźwiękowe są boom.

Możesz to zrekompensować za pomocą filtra Dolby-II, aby zmniejszyć kanał surround i kanał środkowy podzielić na stereo i połączyć je wszystkie w prawy i lewy kanał stereo.

ffmpeg -i input.mkv -c:v copy -c:a libfaac -bsf:a aac_adtstoasc   \
  -af aresample=matrix_encoding=dplii -ac 2 -ar 48000 -ab 256k    \
  out.mkv

0

Jak powiedział @UtahJarhead , MKV jest kontenerem. Zasadniczo chcesz przekonwertować dźwięk DTS na AC3 lub AAC.

Najlepszym sposobem na to jest użycie FFmpeg dla audio i MKVToolNix do połączenia audio i wideo.

Jeśli wolisz GUI zamiast poleceń, opisałem tutaj, jak to zrobić: Konwertuj nieobsługiwany dźwięk z wideo .


1
Powinieneś opisać ten proces tutaj, wtedy i tylko wtedy, podając link do pobrania. Do aplikacji.
Ramhound,

@Ramhound Właśnie zredagowałem odpowiedź
IvanRF
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.