Bir M4v video dosyasına altyazı eklemek için FFMPEG kullanma


5

Ffmpeg kullanarak bir video dosyasına altyazı ekleme sorunları yaşıyorum.

Bu komutu kullanıyorum:

ffmpeg -i movie_input.m4v -newsubtitle subtitles.srt -acodec copy -vcodec copy movie_output.m4v

Bu komut satırı örneğini çeşitli derslerde buldum ama bazı nedenlerden dolayı (yeni bir ffmpeg sürümü?) Bana şunu veriyor:

Unrecognized option 'newsubtitle'

Ffmpeg kullanarak nasıl altyazı ekleyebileceğime dair bir ipucu?

Teşekkürler!

PS Bir bash betiğinde otomatikleştirilebilecek bir çözüme ihtiyacım var, bu nedenle Subler gibi programları kullanmak bu göreve uygun değil.

Yanıtlar:


9

-newsubtitleffmpeg'in eski sürümlerinden eski bir seçenektir; daha modern versiyonlarda komut aşağıdaki gibi görünecektir:

ffmpeg -i input.m4v -i subtitle.srt -map 0 -map 1 -c copy -c:s mov_text output.m4v

-i input.m4v -i subtitle.srt ffmpeg'e bu iki dosyayı girdi olarak kullanmasını söyler.

-map 0 -map 1 ffmpeg'e giriş numarası 0 ve giriş numarası 1'deki tüm akışları kullanmasını söyler.

Bu doğrudan ilgili olmadığını, ama tek tek akışları seçebilir -map: -map 0:v, giriş 0 dan tüm video akışı seçecek -map 1:s, giriş 1'den tüm altyazı akışları seçecek -map 0:0, giriş 0 dan akışı 0 (ilk akışı) seçersiniz -map 1:a:0ilk seçersiniz giriş 1'in ses akışı.

-c copyffmpeg'e tüm akışları yeniden kodlamadan girmeden kopyalamasını sağlarken , geçersiz kılmadan -c:s mov_text sonra-c copy altyazı akışının kopyalama ayarını geçersiz kılarken MP4 kabının içerebileceği bir forma yeniden kodlar.


Ffmpeg kullanarak altyazıları m4v dosyasına yazmanın bir yolu var mı?
Koray Tugay

@KorayTugay Evet . Bu bağlantıda bulunmayan herhangi bir yardıma ihtiyacınız olursa, bir soru sormaktan çekinmeyin (ve ile etiketlemeyi unutmayın ffmpeg).
evilsoup

Kafam karıştı çünkü buradaki örnekler m4v içermiyor.
Koray Tugay

6

FFmpeg 0.9 ile -newsubtitleseçenek kaldırıldı. Tüm girdi dosyalarının video / ses / altyazı akışlarını çıktıya eklemek istiyorsanız, -mapseçenekleri kullanın , örneğin:

ffmpeg -i movie_input.m4v -i subtitles.srt -c:v copy -c:a copy -c:s mov_text \
-map 0 -map 1 out.m4v

Bu, video ve ses akışlarını kopyalar, ancak mov_textMP4 için resmi olarak desteklenen tek altyazı formatı olan altyazıları kodlar . SRT varsayılan olarak çalışmaz.

Buradaki mapseçenekler, ilk dosyadan ( 0) ve ikinci dosyadan ( 1) gelen tüm akışların kopyalanacağını belirtir , örneğin orijinalinizde birden fazla ses akışı olsa bile çalışır.

mapSeçeneğin nasıl kullanılacağına dair ayrıntılı bir makale için FFmpeg wiki'ye bakın .

Bu seçenekleri Changelog'dan kaldırma nedeni :

-newvideo / -newaudio / -newsubtitle seçenekleri kaldırıldı. Sadece düzensiz ve kafa karıştırıcı değillerdi, aynı zamanda gereksizdi. Avconv'da -map seçeneği çıktı dosyasında yeni akışlar oluşturacak ve girdi akışlarını bunlarla eşleştirecektir. Örnek: avconv -i INPUT -map 0 OUTPUT, ilk girdi dosyasındaki her akış için bir çıkış akışı oluşturur.

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.