jameszah / ESP32-CAM-Video-Recorder-junior

Simple fast version of ESP32-CAM-Video-Recorder
GNU General Public License v3.0
293 stars 56 forks source link
24fps avi esp32 esp32-cam esp32-cam-video-recorder gopro mjpeg ov2640 realtime sd-card video-recorder wifi

ESP32-CAM-Video-Recorder-junior

Simple fast version of https://github.com/jameszah/ESP32-CAM-Video-Recorder

ESP32-CAM-Video-Recorder-junior

This program records an mjpeg avi video to the sd card of an ESP32-CAM.

You can just compile, download, power-on ... and it will record a series of 30 minute, HD videos, 12.5 fps on your SD card ... while you read on ...

Although if you put your ssid and password, and timezone into the config.txt file, and put that file on the SD card, things will be nicer! You can read the comments in config.txt and set your desired recording length, framesize, and internet on/off in there.

Star History

Star History Chart

Check out https://github.com/jameszah/ESP32-CAM-JAMCAM with builtin video clipping, reduce framerate, and rebuild index, plus video display, ... and snakes!

Update Jan 7, 2021 - One-Click Installer

Click here for a one-click installer of the current version of the program. It is pre-compiled, and it will run with no-internet, and the standard HD recording, or you can edit the config.txt and put it on a sd card, and then wifi will start and you can watch streaming video, and download your videos to your browser and computer/phone.

https://jameszah.github.io/ESP32-CAM-VideoCam/

Update Jan 2, 2021 - updates for Arduino 1.8.19 and esp32-arduino 2.0.2

You need all the files from the v58 folder:
https://github.com/jameszah/ESP32-CAM-Video-Recorder-junior/tree/master/v58

esp32-arduino 2.0.2 busted a few things (mutexes, some sd_mmc chnages)
Obviously, you need the wifi running for all these wifi features - but you can do the simple recording with switch control without the wifi.

The main screen is the same, except for the link to the esp32_sd_file_manager to download or edit the avi's and config.txt.

Then there is the streaming screen (not shown) and the photos screen below - you can 10 photos at 3 second intervals.

This is the esp32_sd_file_manager_screen:

  1. SD space and used space
  2. GOTO ROOT DIR - takes you to the root
  3. Folders are white - click on it to enter that folder
  4. Files are blue/orange - click on the file to download it to your browser / computer
  5. "D" "R" and "E" to delete, rename, or edit the files - only edit text files
  6. Download all files to get the entire folder shown (not the sub folders)
  7. You can also upload files in the "File Drop Zone" Read more about it here https://github.com/jameszah/ESPxWebFlMgr/tree/master/esp32_sd_file_manager

This system will download to Windows and Android, and presumably others.

There is a problem with Android downloading to the browser in a Sansumg phone - it saves the .avi file with a ".phps" file type. You can delete that and it will be recongnized as an .avi and will play properly, but I don't know where the "phps" comes from. ???

(Jan 12, 2022 - add date and time to files)

Here is the download file dialog on Windows.

You can also end recording and reboot from the webpage.

Under good conditions, you can download at about 2 Mbps while recording, 3 Mbps when not recording, from an esp32 max of about 3.5 Mbps.

Update Dec 28, 2021 - new version with http browser file tranfer to download movies

You need all the files from the v57 folder:
https://github.com/jameszah/ESP32-CAM-Video-Recorder-junior/tree/master/v57
Using this library to transfer files to your computer or phone:
https://github.com/jameszah/ESPxWebFlMgr/tree/master/esp32_sd_file_manager

Stay tuned for instructions.


Here is a timelapse sample, recorded and uploaded to Youtube. The settings were framesize UXGA (13), quality 15, 1 fps, 1800 seconds long, speedup 30 times. Click the image and it will take you to Youtube to see it.

Click to see on Youtube

Here is a realtime sample, recorded and uploaded to Youtube. The settings were framesize HD (11), quality 14, max fps or zero interval, 30 seconds long, speedup 1 times. It came out at about 12.4 fps. Lowering the quality slightly -- higher quality number -- will make the bytes per frame smaller, and keep the speed at the camera maximum of 12.5 fps for HD. Click the image and it will take you to Youtube to see it.

Click to see on Youtube

Update Jun 10, 2021 - new program to check out

It records a video and sends it to your Telegram account - no SD card!

https://github.com/jameszah/ESP32-CAM-Video-Telegram

Update May 13, 2021 - v50lpmod for Arduino 1.8.13, and esp32-arduino core 1.06 - mod to fix broken jpeg

This is the same as the last version with a small mod to fix the broken jpeg problem. The critical line is here:

esp_err_t set_ps = esp_wifi_set_ps(WIFI_PS_NONE);

It sets the modem to no power saving. The power saving had put the modem to sleep for a time, and when it awoke, it caused a disturbance in the i2s system (my theory), that caused the i2s camera to become confused, and create a bad jpeg.

Read more here for my journey to this solution (2-3 months I think!)

https://github.com/espressif/esp32-camera/issues/244#issuecomment-831561336

Update Apr 19, 2021 - v50 for Arduino 1.8.13, and esp32-arduino core 1.06

Updated version I have been using.

Uses the current Arduino IDE 1.8.13, and the current esp32-arduino core 1.06, which handles the ov5640 camera in additon to the normal ov2640.

Framerates have improved - the ov2640 will record at 12.5 fps on regular HD 1280x720.

Also you can put a config file onto the SD card, called config.txt which will set all the parameters of the recording. See the config.txt file included here. So you can compile and install the version here, and then control everything by editing config.txt on the SD card. Much simpler even if you are working at your dev computer.

You can run full-speed at any framesize and quality, or timelapse, and stream or not stream as desired.

There is a issue with the esp32 camera and wifi that interact, so when the wifi is turned on, you will have an occasional broken frame -- one frame of the movie that will look odd. If you shut off the wifi, it should be perfect.

The config.txt has parameters to run without wifi, or start wifi to get the current time and then shut off, or use WiFi-Man wifi with streaming, or use WiFi ssid from the config file, and have it controlled with the pin 13 switch, to switch it on to look through the viewfinder, then switch it off to get a perfect recording.

Ground pin 12, so stop recording. And ground pin 13 to enable disable wifi, using the same hardware defined below.

Has the file delete code included, so it will delete old videos as long as the camera is running.

Also, this has tasks and mutexes and priorities, in defiance of the original design. All that makes sure that the camera and the sd and the wifi, can all operate at full speed without blocking each other. You can record the streaming video with VLC on your coomputer if you like.

Update Jan 04, 2021 - Streaming GOPRO with WiFiManager

v10x-wifiman - added WiFiManager to set your wifi ssid and password using your phone

https://github.com/jameszah/ESP32-CAM-Video-Recorder-junior/blob/master/ESP32-CAM-Video-Recorder-junior-10x.wifiman.ino

Update Sep 28, 2020 - ESP32-CAM "GOPRO"

v10 - fast and just one version

Update Sep 24, 2020 - ESP32-CAM "gopro"

v09 - faster version - controlled by switches

Update Sep 20, 2020 - very fast

v07 - faster version - should operate at full speed of camera

Update Sep 13, 2020 - adding complexity

v02 - basic version

v04 - added wifi, time, stream @ 5 fps, and photos @ 1 fps

Original Sep 12, 2020

by James Zahary Sep 12, 2020 jamzah.plc@gmail.com

https://github.com/jameszah/ESP32-CAM-Video-Recorder-junior

https://github.com/jameszah/ESP32-CAM-Video-Recorder

jameszah/ESP32-CAM-Video-Recorder is licensed under the
GNU General Public License v3.0

jameszah/ESP32-CAM-Video-Recorder-junior is licensed under the
GNU General Public License v3.0

The is Arduino code, with standard setup for ESP32-CAM