Ffmpeg kullanarak altyazı videodan nasıl çıkarılır?


34

Videodan altyazıyı .srtdosya olarak çıkarmaya çalışıyorum , aşağıdaki komutu kullandım:

FFMPEG -i mytestmovie.mkv -vn -an -codec:s:0.1 srt sub.srt

Ancak, Tanınmayan seçenek olarak bir hata aldım. codec:s:0:1 Öyleyse, bana tam komutu ve altyazıyı .srtvideoda nasıl ayıklayacağımı söyler misiniz ?


umair: komut isteminde bana söyleyeyim
vijay

Bende de aynı problem var. Bunu sonunda işe aldın mı?
Maxime Labelle

Yanıtlar:


51

Basit:

ffmpeg -i Movie.mkv -map 0:s:0 subs.srt
  • -i : Girdi dosyası URL'si / yolu.
  • -map : Bir veya daha fazla giriş akışını çıkış dosyası için kaynak olarak atayın.
  • s: 0 : Altyazı akışını seçin.

2
Bu benim için gömülü altyazılı bir MP4 dosyası ile çalıştı.
Rubens Mariuzzo 18:16

11
Bu ilk altyazı parçasını indirir. Birkaç tane varsa 0:s:1, ikincisini 0:s:2indirmek, üçüncüsünü indirmek için kullanın, vb.
Fabien Snauwaert,

5
@ jm3 Bir dosyadan tüm altyazı akışlarını otomatik olarak çıkarmanın, dil tanımlayıcılarının isimlerini yazmanın herhangi bir yolunu biliyor musunuz (örneğin eng, fre, dut vs.)?
Fr.

Büyük MKV kabından (~ 4 gb) çıkarırken neden bu kadar yavaş?
kullanıcı25

Aynı anda daha fazla altyazı çıkarmak -mapiçin her bir dosya için parametreleri kopyalamanız gerekir . Ayrıca dahil -c copysadece bunu işlemeye çalışırken olmadan dosya ayıklar böylece: ffmpeg -i Movie.mkv -c copy -map 0:s:0 subs.01.srt -c copy -map 0:s:1 subs.02.srt. Yine de uzun zaman alacaktır çünkü ffmpeg, altyazı akışlarının tüm bölümlerini bulmak için tüm video dosyasını okumalıdır.
Radek Pech

8

-codec:s:0:1yanlış. Eğer kullanırsanız -codec:s:0o zaman ffmpeg kullanırsanız, çıkışına geçirilen ilk altyazı akışı için belirtilen codec'i kullanacaktır -codec:s:1o zaman ikinci altyazı akışının vb için kullanacak

Ayrıca kullanabilirsiniz -codec:sseçmek için bütün çıkış altyazı akışları veya -codec:2olursa olsun ne olduğu, üçüncü çıkış akışı seçin.

Büyük olasılıkla kafanız karışır, çünkü -mapseçenek farklı şekilde davranır - orada, seçilen akışın hangi girişten geldiğini seçmeniz gerekir. (bu nedenle, -map 0:s:0ilk altyazı akışını ilk girişten alır ve çıktıya besler). Ancak, -mapgirişlerden hangi akışları almak istediğinizi seçmek içindir; akış eşlemesi kullanan diğer seçeneklerin çoğu, seçildikten sonra akışlarda kullanım içindir (bu nedenle, hangi giriş dosyasının alınacağını belirtmeniz gerekmez), çıkışa aktarılır.


evilsoup: E: \ FFMpeg_Latest> ffmpeg -i E: \ Routine \ routine.mkv -vn -an -map 0: s: 0 srt E: \ Routine \ sub.srt komutunu kullanırdım: 'srt' için uygun bir çıktı biçimi bulamadı, bana videoda bir altyazı çıkarma komutunu söyleyebilir misiniz ...
vijay

2
Deneyin: ffmpeg -i E:\Routine\routine.mkv -map 0:s:0 E:\Routine\sub.srt(ffmpeg çıktı dosya adından srt altyazı istediğinizi algılamalıdır)
evilsoup

Kullandım: ffmpeg -i film.mp4 -vn -an -codec:s srt film.srttüm altyazıları srt dosyasına kopyalamalı.
Stuart,

@Stuart tüm altyazıları
çıkarmıyor

1
@ evilsoup -codec:seşittir, -codec:s:0böylece tüm altyazıları seçmez ... ilk metin parçasını
çıkarır
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.