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.

dołek
źródło
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
slhck
źródło
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.

Utah Jarhead
źródło
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
Chris Reid
źródło
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 .

IvanRF
źródło
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