ffmpeg parçaları hareketsiz çıkar


15

Ağ üzerinden rtsp içeriği yayınlayabilen bir IP güvenlik kameram (192.168.0.8) var.

Bu (RAW) içeriği, bilgisayarımdan sonraki ffmpeg komutunu kullanarak değişiklik yapmadan kaydedebiliyorum:

ffmpeg -i "rtsp://192.168.0.8/stream=0.sdp" -acodec copy -vcodec copy test-raw.mp4

Ayrıca anında yeniden boyutlandırabilirim:

ffmpeg -i "rtsp://192.168.0.8/stream=0.sdp" -vf  "scale=640:-1" test640.mp4

Ancak yalnızca hareket algılama parçaları içeren video nasıl kaydedilir?

Ffmpeg'in sahne değişikliği filtrelerini kullanarak çözmeyi denedim , ama şans yok.

Amacım - birisinin kameranın yanına gittiğini algılayan ve video dosyasına kaydettiği ortak video izleme çözümüne sahip olmak. Akıştan anında yapmanın mümkün olmayabileceğini anlıyorum, bu yüzden önce büyük dosyayı kaydetmek, daha sonra başka bir ffmpeg komutuyla işlemek ve sadece hareket algılanmış parçalar içeren yeni video dosyası oluşturmak benim için sorun değil. Bana tam olarak neyi daha fazla araştırmam gerektiğini tavsiye edebilirseniz, gerçekten minnettar olacağım.

Kamera akışım ses olmadan iletiliyor. Böylece, orijinal videodan görüntü kümesi oluşturabilir, sonra uygun görüntüleri seçebilir ve görüntülerden yeni video kaydedebilirim.


Bu sistemi uygulamak mı yoksa kullanıma hazır bir ürün bulmak mı istiyorsunuz?
Woeitg

@WOEITG Ubuntu 15.04+ için herhangi bir ücretsiz çalışma çözümüne ihtiyacım var
rfedorov

Windows için, hareket algılamaya kaydetmek üzere ayarlayabileceğiniz ispy adlı bir yazılım parçası var. Linux çözümü talep ettiğiniz için zoneminder.com benzer bir ürün olmalıdır. Maalesef, sorunuza doğrudan bir
yanıtım yok

Yanıtlar:


7

Ne yaparım dedin aynen böyle yapmak, ve akışın büyük bir dosyaya kaydetme, daha sonra kullanmak select FFMPEG filtresi ile sceneardışık karelerin benzerlik karşılaştırır ifadesi,: select=gt(scene\,0.003)mesela. Sayı ne kadar yüksek olursa, çerçeveler arasındaki değişiklik o kadar fazla göz ardı edilir, hızlı testte, uğraştığınız çekim türüne bağlı olarak 0.00001-0.00005 kadar düşük bir seviyeye gitmeniz gerekebilir.

Bunu , video karelerinin "başlangıç ​​zamanını" değiştiren setpts filtreyle birleştirin ve şuna benzer bir sonuç elde edersiniz (25 kare / sn video için):

ffmpeg -i input.mp4 -vf "select=gt(scene\,0.003),setpts=N/(25*TB)" output.mp4

Dikkat edin, -vcodec copyvideo filtreleri kullanırken kullanamazsınız.

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.