Pertanyaan Remux ke MKV tetapi tambahkan semua aliran menggunakan FFmpeg


Saya mencoba mengotomatisasi FFmpeg untuk me-remux semua file video di direktori yang diberikan ke MKV. Saya sedang menggunakan

ffmpeg -i $INPUT -c copy $OUTPUT.mkv

Namun, beberapa aliran dilewati dengan cara itu - misalnya, jika ada 2 streaming audio, hanya 1 yang masuk ke file keluaran.

Bagaimana saya menentukan itu semua stream dari input harus disalin ke output?

Karena saya mencoba mengotomatisasi FFmpeg, akan lebih baik jika perintah tidak berubah untuk setiap file, yaitu secara manual menetapkan semua aliran dengan -map akan mengharuskan saya untuk mengurai pertama setiap file. Saya akan melakukan ini jika perlu, tetapi jika ada solusi yang lebih baik saya lebih suka itu.


6
2018-02-24 08:02


asal


Jawaban:


Bagaimana saya menentukan bahwa semua aliran dari input harus disalin ke output?

Itu -map pilihan dapat melakukan ini, dengan shortcut -map 0.

Sebagai contoh:

ffmpeg -i input.mkv -c copy -map 0:0 -map 0:2 output.mkv

untuk menyalin aliran 0: 0 dan 0: 2 ke output.mkv.

ffmpeg -i input.mkv -c copy -map 0 output.mkv

untuk menyalin semua input stream dari input 0 (input.mkv) ke output (bahkan jika ada beberapa aliran video, audio atau subtitle).

Itu -map nilai sesuai dengan nomor input (0 adalah masukan pertama, 1 adalah input kedua, dll): Jika Anda menambahkan input tambahan (-> input 1), dan juga ingin menyalin semua konten, maka Anda perlu menambahkan -map 1.

Kamu dapat memakai ffprobe untuk menganalisis file dan melihat aliran mana yang dipetakan di mana. Mencoba -fflags +genpts jika kamu mendapatkan unknown timestamp kesalahan. Untuk tutorial mendetail, lihat halaman FFmpeg Wiki di -map pilihan.


15
2018-02-24 14:25