Преобразование MKV со звуком DTS в видео MP4 с аудио AAC или AC3

13

У меня есть фильм с разрешением 4,3 ГБ в формате 720p и я хочу преобразовать этот MKV со звуком DTS в видео MP4 со звуком AAC или AC3.

Я иногда получаю:

ffmpeg: unrecognized option '-c:v'

…и:

aac unrecognized

И другие подобные вещи.

Я хочу, чтобы этот фильм был небольшого размера, как на торрент-сайтах.

дол
источник
Можете ли вы помочь нам, пожалуйста, и дать нам точную команду, которую вы используете, и полный неразрезанный вывод, который производит FFmpeg? На какой операционной системе вы работаете? И наконец: вы должны использовать FFmpeg? Пожалуйста, отредактируйте свой вопрос.
slhck

Ответы:

19

Убедитесь, что вы используете последнюю версию FFmpeg . Для Windows и Linux статические сборки доступны на домашней странице. Для macOS вы можете установить FFmpeg через Homebrew .

Затем в простейшем случае запустите:

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

Настройка качества видео

Для контроля качества видео, установите в crfпараметр , который по умолчанию 23. Lower означает лучшее качество, но больший размер файла. Попробуйте значения между 19 и 26, чтобы увидеть, что подходит лучше всего. Вы также можете установить определенную скорость передачи данных, в зависимости от того, какой размер файла вы хотите. Вот, например, 500 кбит / с:

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

Для аудио вы также можете установить скорость передачи данных с помощью -b:a.

Многоканальный звук

Если ваш аудиопоток использует несколько каналов (например, звук 5.1), вам необходимо использовать другой кодер AAC ( libfdk_aac). Этот кодировщик недоступен в статических сборках, но его можно получить с помощью предварительно упакованных / Homebrew версий ffmpeg.

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

Копирование всех потоков

Если ваш входной файл содержит более одного потока видео, аудио и субтитров, ffmpeg по умолчанию не преобразует их все.

Используйте -map 0для указания ffmpeg взять все потоки из входного файла ( для получения дополнительной информации см. Вики FFmpeg ). Это полезно для сохранения разных языков и субтитров, которые могут быть в оригинале.

ffmpeg -i input.mkv -c:v libx264 -c:a aac -map 0 out.mp4
slhck
источник
2

MKV это просто контейнер. Вы можете иметь видео MPEG-4 внутри .mkvконтейнера.

Мое предложение таково:

Вставьте файл в .mkvконтейнер:

mkvmerge -o newfile.mkv inputfile.m4v

Получите mkvdts2ac3.shскрипт, доступный здесь, и выполните эту команду:

mkvdts2ac3.sh newfile.mkv

Выполнено!

Мой телевизор поддерживает AC3, но не DTS, так что эта настройка делает чудеса для меня.

Обратите внимание, что mkvdts2ac3.shесть некоторые требования к зависимости, которые являются очень основными. Вы увидите их, когда запустите скрипт.

UtahJarhead
источник
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 (' Повесьте свои зависания », созданный 29 декабря 2009 г. 00:24:14 Ошибка: исходный файл« inputfile.m4v »не может быть успешно открыт, или получение его размера путем поиска до конца не работает. root @ Frenzen: ~ / Downloads / 2.Days.In.New.York.2012.720p.BluRay.X264-7SinS #
Дейл
Похоже, поврежден входной файл.
UtahJarhead
@ dale Не могли бы вы включить вывод, о котором я вас просил, в комментарии к вашему первоначальному вопросу? Это поможет нам решить вашу проблему.
Slhck
Кроме того, UtahJarhead, OP, кажется, хочет получить файл результатов MP4 из входного файла MKV. У него нет m4vфайла, поэтому ваша команда не работает. Кроме того, Дейл использовал неправильный синтаксис, указав свой существующий файл в качестве вывода и предоставив в inputfile.m4vкачестве ввода, который, очевидно, не существует.
Slhck
mp4 - это кодек, а не контейнер. MKV - это контейнер, а не кодек. Это все равно что сказать, что они хотят сделать гараж из Кадиллака. Какой кодек является входным .mkv файлом, потому что это может иметь значение.
UtahJarhead
1

Вы можете сделать это:

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

Или, если нет радости, попробуйте исправить внутренний поток битов

Преобразование в стерео и asc:

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

Если это 5.1, объемный звук и голоса плохо слышны, это потому, что диалог находится на центральном канале, и вы слышите только микрофон с каналов R & L, но музыка и звуковые эффекты быстро развиваются.

Вы можете компенсировать это с помощью фильтра Dolby-II, чтобы уменьшить объемный канал, а центральный канал разделить на стерео, и объединить их в правый и левый стереоканалы.

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

Как сказал @UtahJarhead , MKV - это контейнер. По сути, вы хотите конвертировать аудио DTS в AC3 или AAC.

Лучший способ сделать это - использовать FFmpeg для аудио и MKVToolNix для объединения аудио и видео.

Если вы предпочитаете графический интерфейс вместо команд, я описал, как это сделать здесь: конвертировать неподдерживаемое аудио из видео .

IvanRF
источник
1
Вы должны описать процесс здесь, тогда и только тогда, предоставьте ссылку на скачивание приложения.
Ramhound
@Ramhound Я только что отредактировал ответ
IvanRF