Як конвертувати MKV відео у відео без втрат MP4, сумісні з пристроями iOS в Windows?


10

Я новачок у FFmpeg (Windows), і мені потрібна допомога.

Я хочу перетворити свої MKV на MP4 з якомога меншими втратами якості. MKV виготовлені з MakeMKV і містять серед іншого саундтрек DTS. Вони без втрат. Причиною, яку я хочу конвертувати, є те, що я планую передавати її на iPad та Apple TV. iPad не підтримує DTS та MKV. MKV - це і DVD, і Blu-Ray. MKV містять відео, саундтреки та субтитри.

Я спробував це, але не отримав звуку завдяки саундтреку DTS:

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

Хтось може мені допомогти?

Які кодеки я повинен використовувати? MP4 найкращий для Apple?


1
Чи є конкретні версії iPad та Apple TV, на які ви орієнтовані, чи хочете підтримати їх?
логіан

2
Примітка: MP4 не є кодеком. Це просто формат файлу ("контейнер").
slhck

У мене найновіший iPod Air. У мене найновіший Apple TV. Я знаю, що MP4 є контейнером, а не кодеком :)
Striky

Будь ласка, включіть трохи інформації про один із ваших типових даних. Повного виходу консолі ffmpeg -i input.mkvбуде достатньо.
логіан

Я спробував ffmpeg -i input.mkv -c: v copy -c: копія output.mp4 Це грало, але не отримало звуку, оскільки Apple не відтворює DTS. Спробували також ffmpeg -i input.mkv-строгий експериментальний -c: v copy -c: aac -b: 192k -q: 6 output.mp4, але фільм (і відео, і звук) не грав на моєму iPad Air (як потоковий, так і завантажений).
Страйк

Відповіді:


22

MP4 - це справді найкращий формат для пристроїв та програмного забезпечення Apple. DTS також дійсно не підтримується, багато файли відео MP4 містять дві аудіодоріжки, одну DTS та одну AAC.

Є кілька кодерів, усі вони задокументовані на вікі ffmpeg . Який кодек доступний, залежить від того, як було складено ffmpeg. libfdk_aac дасть найкращі результати, але завдяки тому, що цей кодек є невільним, він не завжди доступний.

Речі, які ви можете спробувати (я ставлю їх у порядку моєї сприйнятої якості, найкраще спочатку)

ffmpeg -i input.mkv -c:v copy -c:a libfdk_aac -b:a 128k output.mp4
ffmpeg -i input.mkv -strict experimental -c:v copy -c:a aac -b:a 192k output.mp4
ffmpeg -i input.mkv -c:v copy -c:a libfaac -b:a 192k output.mp4

Якщо ви також хочете зберегти доріжку DTS, використовуйте -mapпрапор.

Чи не безпосередньо використання для OP, але програма OS X subler робить цей процес дуже легко.

EDIT: Коментарі tl; dr? OP вирішила проблему за допомогою наступної команди

ffmpeg -i input.mkv -strict experimental -map 0:0 -map 0:1 -map 0:2 -map 0:3 -c:v copy -c:a aac -b:a 384 -c:s copy output.mp4

Порада: якщо -c:s copyсубтитри не працюють, спробуйте -c:s mov_text.
Рятували мене неодноразово.


Я не думаю, що режим VBR внутрішнього кодера AAC працює за призначенням. Востаннє я перевіряв, чи було порушено. Краще перейдіть з CBR і використовуйте VBR для інших кодерів ( libfdkі libfaac)
slhck

Я також читав, що libfdk_aac дасть найкращий результат. Я завантажив 32-бітну статичну версію для Windows (git-9722a6a (2014-05-24)). Як я можу перевірити, чи є у мене кодек libfdk? Редагувати: я отримую невідомий кодер 'libfdk_aac'. ДЕ Я можу його завантажити або є майже такий же хороший аудіокодек?
Страйк

Спробували обидва ffmpeg -i input.mkv -c: v copy -c: a libfdk_aac -b: вихід 128k.mp4 та ffmpeg -i input.mkv -c: v copy -c: libfaac -b: вихід 192k .mp4 Не йдіть :(
Striky

@Striky "No go :(" Я спробував останню команду зі свіжим ffmpeg від Homebrew, працює для мене. Чи можете ви дати більш детальну інформацію про те, чому це не працює для вас?
jornane

@slhck: Я просто спробував -c:a aac -q:a 6налаштування і порівняв результат з -c:a libfaac -b:a 192k, на мою думку, кодек AAC дає кращі результати, ніж libfaac , але оскільки кодеки знаходяться в стадії розробки, це може змінитися. libfdk_aac , ймовірно, дасть ще кращі результати, але я зараз не маю його доступних.
jornane

0

Я знаю, що це старе питання - і вже є відповідь - але я хотів поділитися деякими командами, якими я користуюся з FFmpeg на macOS.

Відео x264 кодує MP4 з аудіо AAC від MKV

Базова конверсія MKV з MP4 в ньому, але перетворення аудіо в AAC на 128 к. Зверніть увагу на відображення: -map 0:0означає першу ( 0) доріжку з вихідного входу ( 0) і -map 0:1означає другу ( 1) доріжку з того ж вхідного джерела ( 0). Мені подобається це робити в тих випадках, коли є кілька аудіозаписів, щоб я міг зробити щось на зразок вибору, -map 0:3щоб отримати третю доріжку.

ffmpeg -i input.mkv \
       -c:v copy \
       -c:a aac -b:a 128k \
       -map 0:0 -map 0:1 \
       output.mp4 \
       ;

Відео HEVC / x265 кодує MP4 з аудіо AAC від MKV

Це схоже на вищевказану команду x264, але натомість використовує HEVC / x265, щоб отримати менший розмір файлу з тим самим - якщо не кращою якістю - відео з вихідного MKV. Зауважте, що я віддаю перевагу масштабуванню відео з iOS до 720 під час використання HEVC / x265; якість мого відтворення без надмірного шуму є надійною на моїх MacBook, iPad та iPhone. Просто переконайтесь, що обладнання та ОС підтримують відтворення HEVC / x265. І будьте попереджені: HEVC / x265 дуже інтенсивний процесор, тому якщо ваша машина не має великої потужності процесора, це може зайняти стільки днів, скільки день, щоб кодувати 90 хвилин відео.

ffmpeg -i input.mkv \
       -vf scale=-1:720 \
       -c:v libx265 -crf 20 \
       -c:a aac -b:a 128k \
       -threads 4 \
       -tag:v hvc1 \
       -map 0:0 -map 0:1 \
       output.mp4 \
       ;

Ось розбивка кожного з основних параметрів, окрім вхідних та вихідних файлів.

  • -vf scale=-1:720: Масштабуйте відеоролик до висоти 720 та автоматично обчислюйте ширину. Зверніть увагу , що FFmpeg може вдавитися деяким MKVs з причин , я не 100% ясно , так що ви повинні явно встановити ширину з чим - щось на зразок цього: -vf scale=1280:720. Експериментуйте і подивіться, що працює для вас.
  • -c:v libx265 -crf 20: libx265Кодек кодування відео. -crf 20Є CRF (фактор константи швидкості) . CRF за замовчуванням, якщо ви не вказуєте, це 28, але - на даний момент - знайдіть якість, яка буде майже значною ... Мех. Я вважаю за краще 20, оскільки це дуже хороший баланс між якістю та розміром файлу.
  • -threads 4: Мені подобається вказувати кількість потоків. 4 - це те, з чим зараз може працювати моя система, але іноді я зворочую її до 2 або 3. Більше число швидше, якщо у вас достатньо процесорів для роботи.
  • -tag:v hvc1: Магічне налаштування метаданих, яке потрібно встановити на пристроях iOS для правильного відтворення відео HEVC / x265.

І ось про це!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.