Kısa sorun : Bir video URL'sinden bazı ekran görüntülerini belirli zamanlarda çekmek istiyorum ancak tüm videoyu okumak istemiyorum.
Diyelim ki bazı url’lerde depolanan bir videom var https://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_30mb.mp4 ). Videonun boyutu büyük ancak videoda arayabiliriz.
Şimdi videonun 4 ekran görüntüsünü / küçük resmini çekmek istiyorum. Videonun boyutu 100s ise, 20s, 40s, 60s ve 80s ekran görüntüleri çekmek istiyorum.
Öğreticisini kullanarak wiki: Videonun her X saniyesinde bir küçük resim görüntüsü oluşturur bunu yapabilirim
ffmpeg -i 'https://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_30mb.mp4' -vf fps=1/20 img%03d.jpg
Ancak bu yaklaşımla ilgili sorun, ekran görüntülerini döndürmeden önce tüm girişi okumaktır. Ancak girdi aranabilir olduğu için bu israf gibi görünüyor. Daha iyi bir yaklaşım pozisyonları aramak ve onları almaktır. Şimdilik gibi bir şey kullanıyoruz
for i in 20 to 80 step 20
ffmpeg -noaccurate_seek -ss {i} -i 'https://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_30mb.mp4' -vframes 1 out-{i}.png
Bu iş gibi görünüyor ama yine de her ffmpeg'i çalıştırmak biraz zaman alıyor ve her ffmpeg, gereksiz görünen aynı video URL'sinin başlığının kodunu çözüyor. Tek bir ffmpeg çağrısında bu yinelenen eserlerin kaldırılabilmesi için herhangi bir yol var mı?
Not; Sadece ffmpeg kullanarak bir cevaba gerek yoktur. Ayrıca mpv / mplayer veya vlc veya Linux'ta bulunan herhangi bir oynatıcı / dönüştürücüyü kullanabiliriz.