Welcome to the Linux Foundation Forum!

Motion capture with "Motion" on file .mp4 with mask

I've read that the Motion program can process video files looking for motion.
I know he can do this by using masks that define precise areas to look at or ignore.
However, I absolutely cannot find an explanation of how to perform this operation on pre-existing .mp4 files, taken from security cameras.
What exactly I have to make Motion do is analyze existing files in .mp4 format, use a mask to select a precise area to be analyzed, in order to avoid movement of branches and leaves in the wind in other areas, and therefore produce video clips that contain movement as a result, also capturing 3 seconds before and 3 seconds after moving action in that area.
I know how to create the mask and configure it in the config file.
I know how to set the seconds before and after the motion detected in the config file.
I know how to set the output video format, quality, and save location in the configuration file.
But what I can't do is invoke Motion and command it to use my .mp4 file as input instead of starting waiting for a live stream from an active camera.
Motion always starts using a video stream from the camera, I can't get it to analyze the file.
I haven't found a precise tutorial on how to do this on the web.
I don't know if to specify the processing on an existing file you have to do it from the configuration file or from the command line with precise syntax.
Anyone have any idea how this question can be resolved?
Thanks in advance for your cooperation, bye.

[I have an OpenSUSE Linux machine]

Comments

  • Have you also asked OpenSUSE Forums? https://forums.opensuse.org/

  • Hello arochester.
    Thanks for the advice.
    For now I haven't asked anything in the OpenSUSE forum yet.
    From a quick search it appears that no one has ever talked about Motion in the OpenSUSE forum, so I assumed that there is less chance of getting answers about using such software than there are likely to be answers here.
    I would have turned to the OpenSUSE forum if the program had not worked, but since it works, the information that is useful to me is only operational, so I think one forum is as good as another, as long as there are those who have already taken care of it.
    If I still can't solve it here, I could easily try it in other forums as well.
    I think there is also a Motion forum, but from what I've seen it's a bit too technical for such a basic question as mine, and it's more focused on Motion's primary function, which is live streaming monitoring.
    But eventually I will also try to ask for help there.
    Apart, of course, the Motion forum, from my research, this is the only forum where the topic has been dealt with in the past, no other forum has talked about it.
    I don't know if my research was thorough enough.
    By.

  • Hello everybody.
    I solved the matter on my own by reading Motion's online documentation more carefully.
    I don't know how the information escaped me the previous times.
    In the Motion Online documentation, which can be found at this address
    https://motion-project.github.io/motion_guide.html
    selecting the item "Configuration"
    there is a paragraph called "Static files" which contains just the information I was looking for.

    This section highlights two different methods for processing an existing video file.
    One a method of reading the file directly, the other using a streaming system with a v4l2loopback device
    Both are activated by modifying and customizing the configuration file
    motion.conf
    You can modify the configuration file present as default when Motion is installed or use your own copy, specifying its use from the command line when activating Motion.

    In the direct processing mode of the video file, the processing is cyclical, ie Motion when it reaches the end of the file restarts in loop from the beginning.
    To find out when it finished processing I used a simple grep on the log file, something like
    cat motion-log.txt | grep "End of file"
    The file name and path of the log file can also be specified when Motion is activated.
    Since the processing of the file is cyclic, to notice if the saved motion events are repeated, i.e. if Motion has restarted from the beginning of the file and recognized the same motion scenes again, I use a grep on the log similar to this one
    cat motion-log.txt | grep "End of event"
    I then compare the timing to know if the events are before or after the moment the processing reached the end of the file for the first time
    Maybe a bit cumbersome but I don't think there is any other way, I don't know.
    But it works well for me.

    Since I had not found other explanations I hope it will also be useful to someone else.

  • sambul29
    sambul29 Posts: 3
    edited December 27

    renedrive

    To find out when Motion finished processing a video file for motion detection, I used a simple grep on the log file, something like
    cat motion-log.txt | grep "End of file"
    The file name and path of the log file can also be specified when Motion is activated.

    Assuming you run motion detection on a folder with multiple consecutive video files taken by the same security camera, can someone post a script sample on how to automate the processing, i.e. substitute the next file name to process with Motion upon reaching "End of file" for current file processing until all files in the folder are processed?

    Also, to log file names with found motion into a separate log file one file name per line?

  • renedrive

    Did you try to process a large files set faster by changing existing videos framerate in motion.conf as mentioned in the Motion Guide for static videos motion analysis? How long did it take to analyze one MP4 1080p 1min long video with Motion at original video framerate?

  • Unfortunately sambul29 I'm not a script guy.
    Surely automatically processing all the files in a folder would have been useful to me but I have no idea how to do it, surely for those who know the script language it won't be difficult, but I don't have the knowledge.
    Maybe with the help of an AI we could do it.
    At the moment the task for which I needed the video analysis is no longer useful to me but if I still need to process videos to recognize movement maybe I'll try with an AI to create a script, you never know.
    Regarding the issue of processing speed.
    I also read, from the original documentation, that the processing speed can change if the frame rate at which the file is examined changes.
    However, I didn't try because I needed maximum accuracy and I didn't have time problems because the analysis was done on a secondary machine.
    The analysis, set to the original frame rate of the video, takes more or less the time it would take to display it at the standard speed, so more or less 1 minute for every minute of video, just a little less.
    I'm sorry I couldn't be of much help to you.

  • sambul29
    sambul29 Posts: 3
    edited December 28

    Thanks for the update. I found a Motion package fork by tosiara, who posted a Wiki with script examples on running motion detection on a folder with video files at 10x frame rate for much faster processing. Will try shortly, hope it works with default Motion install too. I may have to build own ffmpeg version following the above project's Wiki examples, if default Motion release can't recognize my Cam HEVC video format.

  • Good to know.
    Thanks for the heads up.
    It's definitely worth a try...sooner or later... ;-)

Categories

Upcoming Training