live stream - get data from multimedia filter continuously

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

live stream - get data from multimedia filter continuously

Thomas Seilund
Hi All

I capture video stream from webcam and show video on screen.

The same stream goes through the 'metadata' multimedia filter as shown
below:

ffmpeg -y -f v4l2 -input_format mjpeg -s hd480 -r 30 -i /dev/video2
-filter_complex
"[0:0]select='gte(scene,0)',metadata=print:file='movement.txt',null[X]"
-map '[X]' -pix_fmt yuv420p -f xv Title

The text file 'movement.txt' gets information about each frame. BUT data
is written to text file 'movement.txt' buffered. Is there any way to
write data to text file 'movement.txt' as each frame is processed?

Thanks

Thomas S

_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: live stream - get data from multimedia filter continuously

Gyan


On 12-05-2019 10:43 PM, Thomas Seilund wrote:

> Hi All
>
> I capture video stream from webcam and show video on screen.
>
> The same stream goes through the 'metadata' multimedia filter as shown
> below:
>
> ffmpeg -y -f v4l2 -input_format mjpeg -s hd480 -r 30 -i /dev/video2
> -filter_complex
> "[0:0]select='gte(scene,0)',metadata=print:file='movement.txt',null[X]"
> -map '[X]' -pix_fmt yuv420p -f xv Title
>
> The text file 'movement.txt' gets information about each frame. BUT
> data is written to text file 'movement.txt' buffered. Is there any way
> to write data to text file 'movement.txt' as each frame is processed?

Not at present. The file protocol will buffer up to 256 kB and then
write out. There is an option to write immediately but it isn't applied
to the metadata filter as its I/O context is isolated. I plan to patch
that soon-ish.

Gyan
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: live stream - get data from multimedia filter continuously

Thomas Seilund

On 12/05/2019 19.25, Gyan wrote:

>
>
> On 12-05-2019 10:43 PM, Thomas Seilund wrote:
>> Hi All
>>
>> I capture video stream from webcam and show video on screen.
>>
>> The same stream goes through the 'metadata' multimedia filter as
>> shown below:
>>
>> ffmpeg -y -f v4l2 -input_format mjpeg -s hd480 -r 30 -i /dev/video2
>> -filter_complex
>> "[0:0]select='gte(scene,0)',metadata=print:file='movement.txt',null[X]"
>> -map '[X]' -pix_fmt yuv420p -f xv Title
>>
>> The text file 'movement.txt' gets information about each frame. BUT
>> data is written to text file 'movement.txt' buffered. Is there any
>> way to write data to text file 'movement.txt' as each frame is
>> processed?
>
> Not at present. The file protocol will buffer up to 256 kB and then
> write out. There is an option to write immediately but it isn't
> applied to the metadata filter as its I/O context is isolated. I plan
> to patch that soon-ish.
>
> Gyan
> _______________________________________________
> ffmpeg-user mailing list
> [hidden email]
> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
> To unsubscribe, visit link above, or email
> [hidden email] with subject "unsubscribe".

Thanks Gyan.

Is there another way to get the metadata, ie. lavfi.scene_score, as the
frame is processed?

Basically, I want to take some action when there is motion in the video!

Thanks Thomas S

_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: live stream - get data from multimedia filter continuously

Gyan


On 13-05-2019 12:36 AM, Thomas Seilund wrote:

>
> On 12/05/2019 19.25, Gyan wrote:
>>
>>
>> On 12-05-2019 10:43 PM, Thomas Seilund wrote:
>>> Hi All
>>>
>>> I capture video stream from webcam and show video on screen.
>>>
>>> The same stream goes through the 'metadata' multimedia filter as
>>> shown below:
>>>
>>> ffmpeg -y -f v4l2 -input_format mjpeg -s hd480 -r 30 -i /dev/video2
>>> -filter_complex
>>> "[0:0]select='gte(scene,0)',metadata=print:file='movement.txt',null[X]"
>>> -map '[X]' -pix_fmt yuv420p -f xv Title
>>>
>>> The text file 'movement.txt' gets information about each frame. BUT
>>> data is written to text file 'movement.txt' buffered. Is there any
>>> way to write data to text file 'movement.txt' as each frame is
>>> processed?
>>
>> Not at present. The file protocol will buffer up to 256 kB and then
>> write out. There is an option to write immediately but it isn't
>> applied to the metadata filter as its I/O context is isolated. I plan
>> to patch that soon-ish.
>>
>> Gyan
>> _______________________________________________
>> ffmpeg-user mailing list
>> [hidden email]
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>>
>> To unsubscribe, visit link above, or email
>> [hidden email] with subject "unsubscribe".
>
> Thanks Gyan.
>
> Is there another way to get the metadata, ie. lavfi.scene_score, as
> the frame is processed?
>
> Basically, I want to take some action when there is motion in the video!

If you increase the log level to debug or higher, you should see lines
of the form

[Parsed_select_0 @ 00000000006feb80] n:1524.000000 pts:780288.000000
t:60.960000 key:0 interlace_type:P pict_type:B scene:0.000987 ->
select:1.000000 select_out:0

The "scene:" value is what you want.

To capture this, you either redirect stderr to a file or add -report to
your command. The latter will generate a text file in PWD.

Gyan
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".