ffmpeg ve iFrame çıktıları ve JPEG kalitesi


1

Bir soruna bir çözüm arıyordum ve seyahatlerimde, yaptığım şeyle bağlantılı olan ve 2. soruyu soran bir şeye rastladım.

Bu iki soruyu da burada topladım. İstemezsem istenirse 2 ayrı soruya ayıracağım.

Bir RTSP strteam'den ffmpeg kullanarak ip kameramdan bir görüntü çıkarmanın yolunu arıyordum.

Buldum ve bu oldu (Bir DOS komut isteminde test ettim)

ffmpeg -i rtsp://192.168.0.8/video_1 -f image2 -s 360x240 -vf fps=fps=10/60 img%3d.jpg

Görüntünün kalitesini kontrol etmenin bir yoluna bakıyordum. Servral jpeg'leri bir video dosyasına kodladığımda bunu kullanacağımı hatırlıyorum:

-f image2 -r FPS-i  + MyPath + \img%05d.jpg -crf 23  -y -r 'FPS' + 'oggOut.ogg'

Burada kalite -crf 23 kullanılarak ayarlanır, burada 23 görüntünün kalitesini ayarlar. Sayı ne kadar düşükse kalite o kadar iyi.

1. komut satırımda görüntü kalitesini belirtmenin bir yolu var mı? CRF'yi her yere koymayı denedim, ancak bayrak tanınmıyor.

Bir çözüm ararken bu sayfayı buldum:

Bir akıntıdan jpeg koymanın bazı örnekleri

Bu sayfadaki son örnek belirtilen:

Bu, her I karede bir küçük resim oluşturur

Bir i-Frame'in önceki ve mevcut karelerde bir değişiklik olduğunu anladım. Bunu test ettiğimde bana bir görüntü akışı verdi. Bir I-Frame'in ne olduğunu yanlış anladım mı?


1
Sorunuzun altındaki FFMPEG sayfasının ilk satırı, kullanılacak olan olacaktır. Bununla birlikte, FFMPEG kameranızdan canlı bir akış aldığından, cevaptaki zaman ayarını kullanamazsınız. Oluşturmak istediğiniz her küçük resim için komutu tekrarlamanız gerekecektir.
Kinnectus

@BigChris Merhaba, Ben sadece bu şimdi kendim için çalıştı. Sadece basestream.length özelliği kullanılamadığında akışın sonuna kadar okumaya çalışıyorum.
Andrew Simpson

Görüntü akışı, "her I karede bir küçük resim oluştur" örneğinden beklediğiniz gibi değil mi?
llogan

@ LordNeckbeard Merhaba, öğreneceğim çok şey var biliyorum ama lütfen bir I-Frame nedir?
Andrew Simpson

Yanıtlar:


2

JPG çıktı kullanımı için -q:v kaliteyi kontrol etmek. Menzil 2-31. Daha düşük bir değer daha yüksek bir kalitedir ve bu nedenle daha yüksek dosya boyutudur.

-crf seçenek libx264 (H.264 video) ve libvpx (VP8 / VP9 video) kodlayıcılar tarafından kullanılır, ancak değerler bu kodlayıcılar arasında değişir. Bu mjpeg (JPG görüntüleri / MJPEG videosu) veya libtheora (Theora videosu) için değildir.

Ayrıca, bulabilirsiniz ölçekli video filtresi daha esnek olmak -s çünkü sadece bir boyut tanımlayabilirsiniz ve en / boy oranını koruyarak filtre diğerini otomatik olarak sağlar: -vf fps=1/6,scale=360:-1. kullanma -s belirli bir boyuta zorlamak, kıvrılmış veya uzatılmış bir çıktıya yol açabilir.

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.