ffmpegは動きのない部分を削除します


15

ネットワーク経由でrtspコンテンツをブロードキャストできるIPセキュリティカメラ(192.168.0.8)があります。

コンピューターから次のffmpegコマンドを使用して、変更せずにその(RAW)コンテンツを保存できます。

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

その場でサイズを変更することもできます。

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

しかし、モーション検出パーツのみを含むビデオのみを保存するにはどうすればよいですか?

ffmpegのシーン変更フィルターを使用して解決しようとしましたが、運はありません。

私の目標-誰かがカメラの近くを移動していることを検出し、それをビデオファイルに保存する一般的なビデオ監視ソリューションを使用すること。ストリームからオンザフライで実行することはできない可能性があることを理解しているため、最初に大きなファイルを保存してから、別のffmpegコマンドで処理し、動きが検出された部分のみを含む新しいビデオファイルを生成してもかまいません。どうすればもっと研究すべきか、アドバイスをいただければ、本当にありがたいです。

カメラストリームが音声なしで送信されます。したがって、元のビデオから一連の画像を生成し、適切な画像を選択して、画像から新しいビデオを保存できます。


このシステムを実装するか、すぐに使用できる製品を探しますか?
-Woeitg

@WOEITG Ubuntu 15.04+用の無料の作業ソリューションが必要なだけです
rfedorov

Windowsには、動き検出で記録するように設定できるispyと呼ばれるソフトウェアがあります。Linuxソリューションを要求しているので、zoneminder.comも同様の製品でなければなりません。残念ながら、あなたの質問に対する直接的な答えはありませんが、答えも
欲しい

回答:


7

私がやることは、あなたが言ったとおりに行い、ストリームの大きなファイルを保存してから、select FFMPEGフィルターscene式で使用して、連続するフレームの類似性を比較 select=gt(scene\,0.003)します。数値が大きいほど、フレーム間の変更は無視されます。クイックテストでは、処理するフッテージの種類に応じて、0.00001〜0.00005まで低くする必要があります。

それをビデオフレームの「開始時間」を変更するsetpts filterと組み合わせると、次のような結果になります(25fpsビデオの場合):

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

-vcodec copyビデオフィルターを使用する場合は使用できません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.