ffmpeg: Mengubah MKV ke MP4 lossless

8

Saya baru mengenal ffmpeg (windows), dan butuh bantuan. Saya ingin mengonversi MKV saya ke MP4 dengan sesedikit mungkin kehilangan kualitas. MKV dibuat dengan makemkv, dan berisi antara lain soundtrack DTS. Mereka tidak rugi. Alasan saya ingin mengonversi, adalah bahwa saya berencana untuk mengalirkannya ke iPad dan apple tv. iPad tidak mendukung DTS dan MKV. MKV adalah DVD dan BR. MKVs berisi video, soundtrack dan subtitle.

Saya sudah mencoba ini, tetapi tidak mendapatkan suara karena soundtrack DTS: ffmpeg -i input.mkv -c: v copy -c: a copy output.mp4

Adakah yang bisa membantu saya?

Codec apa yang harus saya gunakan? MP4 apakah yang terbaik untuk apel?

Menyerang
sumber
1
Apakah ada iPad dan Apple TV versi spesifik yang Anda targetkan, atau Anda ingin mendukung semuanya?
Logan
1
Catatan: MP4 bukan codec. Ini hanya format file ("wadah").
slhck
Saya memiliki iPod Air terbaru. Saya memiliki Apple TV terbaru. Saya tahu MP4 adalah wadah dan bukan codec :)
Striky
Harap sertakan beberapa informasi tentang salah satu input khas Anda. Keluaran konsol lengkap dari ffmpeg -i input.mkvsudah cukup.
llogan
Saya sudah mencoba ffmpeg -i input.mkv -c: v copy -c: a copy output.mp4 Ini memang diputar tetapi tidak ada suara karena apel tidak memainkan DTS. Saya juga sudah mencoba ffmpeg -i input.mkv -perimental ketat -c: v copy -c: aac -b: a 192k -q: a 6 output.mp4 tetapi film (baik video dan suara) tidak diputar dengan lancar pada saya iPad Air (streaming dan diunduh).
Striky

Jawaban:

19

MP4 memang format terbaik untuk perangkat dan perangkat lunak Apple. DTS juga memang tidak didukung, banyak file video MP4 berisi dua trek audio, satu DTS dan satu AAC.

Ada beberapa encoders yang tersedia, semuanya didokumentasikan pada wiki ffmpeg . Codec mana yang tersedia tergantung pada bagaimana ffmpeg dikompilasi. libfdk_aac akan memberikan Anda hasil terbaik, tetapi karena codec ini tidak bebas, itu tidak selalu tersedia.

Hal-hal yang dapat Anda coba (saya menempatkannya sesuai dengan kualitas yang saya rasakan, terbaik terlebih dahulu)

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

Jika Anda ingin mempertahankan trek DTS juga, gunakan -mapbendera.

Tidak langsung digunakan untuk OP, tetapi subler program OS X membuat proses ini sangat mudah.

EDIT: Komentar tl; dr? OP memecahkan masalah dengan perintah berikut

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

TIP: jika -c:s copyuntuk terjemahan tidak berfungsi, coba -c:s mov_text.
Menyelamatkan saya pada beberapa kesempatan.

jornane
sumber
Saya tidak berpikir mode VBR encoder internal AAC berfungsi sebagaimana dimaksud. Terakhir kali saya memeriksa itu rusak. Lebih baik pergi dengan CBR, dan gunakan VBR untuk encoders lain ( libfdkdan libfaac)
slhck
Saya juga membaca bahwa libfdk_aac akan memberikan hasil terbaik. Saya telah mengunduh versi statis 32-bit untuk Windows (git-9722a6a (2014-05-24)). Bagaimana saya dapat memeriksa apakah saya memiliki codec libfdk? Sunting: Saya mendapatkan encoder tidak dikenal 'libfdk_aac'. DI MANA saya bisa mengunduhnya, atau ada codec audio yang hampir sama bagusnya?
Striky
Telah mencoba kedua ffmpeg -i input.mkv -c: v copy -c: a libfdk_aac -b: a 128k output.mp4 dan ffmpeg -i input.mkv -c: v copy -c: libfaac -b: output 192k .mp4 No go :(
Striky
@ Striky "No go :(" Saya mencoba perintah terakhir dengan ffmpeg baru dari Homebrew, bekerja untuk saya. Bisakah Anda memberikan rincian lebih lanjut mengapa itu tidak bekerja untuk Anda?
jornane
@ Slhck: Saya baru saja mencoba -c:a aac -q:a 6pengaturan dan membandingkan hasilnya dengan -c:a libfaac -b:a 192k, menurut saya codec aac memberikan hasil yang lebih baik daripada libfaac , tetapi karena codec sedang dalam pengembangan, ini dapat berubah. libfdk_aac mungkin akan memberikan hasil yang lebih baik, tapi saya belum memilikinya saat ini.
jornane