Convert jpg to video

Video Production Asked on November 27, 2020

I have a camera which when motion is detected uploads JPG files at roughly one a second — so I want to take them and convert them back to video.

For the uploaded files

  • It sometimes skips a few uploads (up to about 3 second gaps)
  • They continue for around 20 seconds after motion has ceased
  • The files are 640×480 color 24-bit Depth and each is around 40K
  • The pictures vary in lighting between stills
  • There are no files once the motion detection has stopped — so a gap in files can be used to determine the end of video

So I want to use a script to make these into a video – I’d like to

  • Extend each JPG to the correct length of time
  • “watermark” the timestamp onto the video
  • Compress the video

For compression, I feel that the common background and large sections of unchanging video should be highly compressible

I’ll be able to write the scripts which would include
– the selection of the right set of files to include in each video
– production of an intermediate parameter file
– calculation of time span of each still image
– determination of end of movie — including still currently recording

I’m running on a Window’s laptop — but would consider a Raspberry Pi or Ubuntu system.

I’ve looked at FFmpeg but got a little lost of where to start — I did find possible-to-stream-append-images-into-an-existing-mp4. Which is close and I can start with this. However, one answer seemed to be saying that this may cause loss of fidelity with a comment saying no it won’t. Also, I am unsure about how to make the JPGs extend to different lengths and how to watermark a time stamp onto each image

So my questions are
What tool and encoding format is a good match with what I want ?

Should I make the script wait until the files are fully produced or is it possible to append one JPG file to the movie stream at a time with parameters without excessive loss of fidelity?

Is timestamping best done with a watermark on the video – or with some metadata tagging and require the renderer to display timestamps?

I have included one image from the camera

One Still Image

One Answer

I would use shell scripting thus:

  • find the creation date of the first jpeg and the creation date of the subsequent jpeg.
  • if the time difference is <= 1 second then we have the start of a sequence. If the files are named sequentially then maybe move them to a subfolder. If not then move (or copy) the files to create a sequence.
  • while the time difference is <= 1 second keep updating the last frame of the sequence
  • once we have a non-sequential file create a video using ffmpeg
  • set the new first frame to the non-sequential file
  • repeat for all the jpegs.
  • concatenate all the videos

ffmpeg can create a video from an image sequence where the files are named frame_000.jpg, frame_001.jpeg, frame_002.jpg… thus:

ffmpeg -i frame_%03d.jpg -r 1 output.mp4

the -r 1 option sets the frame rate to 1 per second. If the sequence doesn't start with 000 then you can use -start_number 123 to specify the first frame. more details here

Answered by stib on November 27, 2020

Add your own answers!

Related Questions

what is the best software that can crop and trim video?

2  Asked on October 28, 2021 by talad88955


How to put your GPS track in a video?

2  Asked on October 28, 2021 by daniel-ferreira-castro


how to change video size in Final Cut Pro

1  Asked on October 28, 2021 by bsm


How to quick select PNG image for masking in After Effects?

1  Asked on October 28, 2021 by oleksandr-osheko


How to filter out footage into one clip

1  Asked on February 19, 2021 by sanchez


Can’t apply transition effect between clips in Premiere Pro

3  Asked on February 16, 2021 by gerlof-leuhof


Extract audio from a multichannel video file

1  Asked on February 9, 2021 by yannis


Budget Mandalorian backgrounds

1  Asked on January 30, 2021 by tomh


How to read audio waveforms in NLE

0  Asked on January 28, 2021 by 5diraptor


Fix mp3float Header missing without re-encode

1  Asked on January 27, 2021 by malat


Ask a Question

Get help from others!

© 2022 All rights reserved. Sites we Love: PCI Database, MenuIva, UKBizDB, Menu Kuliner, Sharing RPP, SolveDir