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]


  • arochester

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

  • renedrive

    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.

  • renedrive

    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
    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
    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.


Upcoming Training