Saya sudah mencoba untuk menghapus stream audio yang tidak diperlukan dari file MKV (Matroska). Alasan mengapa saya ingin melakukan ini adalah untuk menghindari keharusan memilih secara manual aliran yang diinginkan di Windows Media Player.
File input memberikan info ffmpeg berikut:
Stream #0.0: Video: mpeg4, yuv420p, 704x396 [PAR 1:1 DAR 16:9], 29.98 tbr, 1k tbn, 29.98 tbc
Stream #0.1(eng): Audio: aac, 24000 Hz, 5.1, s16
Stream #0.2(jpn): Audio: aac, 24000 Hz, 5.1, s16
Stream #0.3(eng): Subtitle: 0x0000
Stream #0.4(eng): Subtitle: 0x0000
Stream #0.5: Attachment: 0x0000
Stream #0.6: Attachment: 0x0000
Karena saya ingin stream 0, 1 dan 3 (sub), perintah ffmpeg saya terlihat seperti ini:
ffmpeg -i input.mkv -map 0:0 -map 0:1 -map 0:3 -vcodec copy -acodec libmp3lame -newsubtitle test.mkv
yang anehnya memberikan kesalahan:
At least one output file must be specified
Menghapus subtitle:
ffmpeg -i input.mkv -map 0:0 -map 0:1 -vcodec copy -acodec libmp3lame test.mkv
berikan saya ini:
Number of stream maps must match number of output streams
Sepertinya saya tidak begitu mengerti cara kerja opsi "peta". Apakah seseorang akan membantu saya mencari tahu?
--atracks
opsi tidak ada lagi, sebagai gantinya orang harus menggunakan salah satu--audio-tracks
atau--video-tracks
.Cobalah
-f
untuk memaksa format yang ditentukan:sumber
Sebenarnya ada dua masalah terpisah di sini:
Di baris perintah pertama, urutan parameter mungkin salah. Saya pikir
-newaudio
switch harus di akhir, setelah nama file output.Baris perintah kedua, "Menghapus subtitle", karena file input memiliki subtitle, Anda perlu menggunakan
-sn
sakelar untuk menghapusnya. Kalau tidak, tampaknya FFmpeg ingin setidaknya satu yang ditentukan dalam-map
daftar.sumber
Dalam perintah pertama Anda, Anda tidak menentukan bahwa test.mkv adalah file output Anda. Sepertinya Anda perlu mengubah bagian itu menjadi sesuatu seperti
... -c copy test.mkv
atau menentukan seperti codec... -c:s copy test.mkv
.Dan tidak yakin apa yang dilakukan
-newsubtitle
bendera itu di sana. Tetapi jika Anda memiliki file subtitle yang ingin Anda tambahkan, Anda harus dapat melakukan flag input lain-i input.srt
. Lihat tautan ini untuk itu.Dalam perintah kedua Anda, saya pikir sepertinya Anda mencoba memetakan aliran video dan mencoba menyalinnya. Jadi, Anda mungkin ingin mencoba menghapus
-vcodec copy
instruksi dan itu hanya akan berhasil. :)sumber
l
penentu aliran .