im starting a new page as the [[https://wiki.idiot.io/esp32-cam|old one]] is a bit outdated.
==== TTgo ====
**playing with the (in)(not)famous [[https://wiki.idiot.io/esp32-cam?s[]=ttgo#ttgo_t-journal|TTGO]] T-Journal**
> //goal:// creating a tamper-proof system for scientific data by linking them and their metadata to an unfalsifiable signature in the blockchain.
more informations on this research page: [[BIDI2021]]
{{https://hostb.org/XP2/32F1DC93-9109-4FF5-B208-E2CD2DF35649.jpeg?1024}}
Receiving the HTTP Stream (multipart/x-mixed-replace | Content-Type: image/jpeg ):
vlc http://172.20.10.8 #(IP of the board)
Saving a Picture with FFMPEG:
ffmpeg -y -i http://172.20.10.8 -ss 0 -vframes 1 -vcodec mjpeg -f image2 tomato.jpg
Saving + Adding a SHA256 MetaData:
ffmpeg -y -i http://172.20.10.8 -ss 0 -vframes 1 -vcodec mjpeg -f image2 tomato.jpg && exiv2 -M"set Exif.Photo.UserComment F902F4FD763A551D5387C224D34A9C9A0B383850386EC1509EB232A49DE5D5F9" tomato.jpg
Reading the MetaData:
exiv2 tomato.jpg
File name: tomato.jpg
File size: 8974 Bytes
MIME type: image/jpeg
Image size: 800x600
Exif comment: F902F4FD763A551D5387C224D34A9C9A0B383850386EC1509EB232A49DE5D5F9
{{https://hostb.org/YYY/tomato.jpg?600}}
==== TTgo CAMERA PLUS bigiot ====
T-Camera Plus Esp32-Dowdq6 8Mb Spram Camera Module Ov2640 1.3 Inch Display Rear Camera(Fish-Eye Rear Camera)
{{:pasted:20210608-054837.png?300}}
* [[http://www.lilygo.cn/prod_view.aspx?TypeId=50030&Id=1272&FId=t3:50030:3|productPage]] [[https://archive.is/wip/oteCt|archive]]
* [[https://www.aliexpress.com/item/4000246417333.html|aliexpress]]
* https://github.com/Xinyuan-LilyGO/esp32-camera-plus-bigiot
* OG firmware https://github.com/Xinyuan-LilyGo/esp32-camera-screen
* https://github.com/CurtisIreland/electronics/tree/master/ESP32-TTGOCamera/Camera-TTGO> [[https://www.youtube.com/watch?v=m4Go1i1oBZM|youtube]]
==== TTGO Camera Plus Standalone Camera firmware ====
https://www.instructables.com/Arduino-Selfie-Camera/
https://github.com/moononournation/arduino-selfie-camera
{{https://hostb.org/13KK/EED3DC25-0688-44F4-BD4A-573AB902BDDE.jpeg?600}}
Install Arduino IDE https://linuxhint.com/install_arduino_ide_debian_10/
Install ESP32 in the Board manager and choose "ESP32 Dev"" or install manually thanks to (Debian) https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/debian_ubuntu.md
I had this error:
File "/home/me/Arduino/hardware/espressif/esp32/tools/esptool/esptool.py", line 38, in
import serial
ImportError: No module named serial
I have fix this issue with following steps:
Download the pyserial package from: https://pypi.org/project/pyserial/#files
tar zxvf pyserial-3.0.tar.gz
cd pyserial
sudo python setup.py install
Open the .ino file after downloading code from https://github.com/anonette/NonFungibleScience/tree/main/CAM
Compile and Transfer
==== AI-thinker ====
using the esp-cam32 [[https://github.com/Ai-Thinker-Open/Ai-Thinker-Open_ESP32-CAMERA_WAN|AI-thinker]] module.
{{:pasted:20210516-145903.png?600}} {{:pasted:20210516-145830.png?400}} \\
via[[https://randomnerdtutorials.com/esp32-cam-ai-thinker-pinout|randomNerd]]
{{:pasted:20210521-093456.png?300}} \\
output of [[https://github.com/espressif/arduino-esp32/tree/master/libraries/ESP32/examples/Camera/CameraWebServer|CameraWebServer]]\\
gstreamer to file
gst-launch-1.0 souphttpsrc location=http://192.168.0.85:81/stream do-timestamp=true ! multipartdemux ! image/jpeg,width=640,height=480 ! matroskamux ! filesink location=mjpeg.mkvD
The above pipeline reads a motion JPEG stream from an IP camera using the HTTP protocol, encoded as mime/multipart image/jpeg parts, and writes a Matroska motion JPEG file. The width and height properties are set in the caps to provide the Matroska multiplexer with the information to set this in the header. Timestamps are set on the buffers as they arrive from the camera. These are used by the mime/multipart demultiplexer to emit timestamps on the JPEG-encoded video frame buffers. This allows the Matroska multiplexer to timestamp the frames in the resulting file.
or aas simple as
{{:pasted:20210522-150547.png}}
==== python/ffmpeg/opencv====
install conda env
sudo apt install libgl1-mesa-glx libegl1-mesa libxrandr2 libxrandr2 libxss1 libxcursor1 libxcomposite1 libasound2 libxi6 libxtst6
wget -P /tmp https://repo.anaconda.com/archive/Anaconda3-2020.02-Linux-x86_64.sh
bash /tmp/https://repo.anaconda.com/archive/Anaconda3-2020.02-Linux-x86_64.sh
conda create --name opencv -c conda-forge opencv
conda activate opencv
pip install opencv-contrib-python
python testSource.py
['FFMPEG', 'GSTREAMER', 'INTEL_MFX', 'MSMF', 'V4L2', 'CV_IMAGES', 'CV_MJPEG', 'UEYE']
['GSTREAMER', 'MSMF', 'V4L2', 'UEYE']
copypaste [[https://www.bojankomazec.com/2020/12/webcam-capture-with-ffmpeg-and-opencv.html|this]] to [[https://gist.github.com/5shekel/998a572599a5147c3927|this]]
https://github.com/easytarget/esp32-cam-webserver
=== invest time in ===
https://github.com/geeksville/Micro-RTSP - library which can be used to serve up RTSP streams from resource constrained MCUs