Camogmgui
Contents
Webbased Graphical User Interface for camogm called camogmgui
This interface enables to directly record video to internal/external camera HDD or CF card using just the browser.
Prerequisites
To record video to a brand new HDD it has to be partitioned and formatted first.
To do so follow this guide from Steps 1 - 4.
Camogmgui will takes care of the remaining step 5 and 6 (mounting the HDD) itself.
Plans for Future Releases
- Full Audio Support
- Full Geotagging Support
Changelog
Version 0.8
- added support for USB sound devices, underlying camogm2 is still buggy though and therefore disabled
- added support for geotagging, underlying camogm2 is still buggy though and therefore disabled
- mounting of different devices/partitions like external SATA devices is now possible, still needs testing though
- updates free hdd space dynamically while recording
- added buffer graph, still unexpected behaviour
- used different method to set quicktime mov as default format
- bug fixes
No release URL this time as from now on latest source files need to be obtained directly from the CVS tree.
Version 0.7
- updated to work with 8.0 firmware
- advanced naming scheme tab added
- debug output added
- bug fixes
Version 0.6
I think we are getting close to a first major 1.0 release. As always please provide feedback.
- sensor state info added
- added some help text
- quicktime *.mov is now the default format
- the filebrowser can now go into subfolders, also create them or set them as target for recordings
- live video preview image added in expandable tab
- tabs remember their state across page reloads
- bug fixes
Version 0.5
- good bye bulky placeholder design -> Hello fancy real visual interface
- camogm is now automatically started from within the script.
- hdd can be mounted with a single click
- filebrowser is is alot fancier now
- frameskip / timelapse problem fixed
- spry applets added for even more responsive and feature rich layout
Version 0.4
Anything hdd mounting related can now be done directly inside the gui. I also added a filebrowser so recorded videos can immediately be downloaded. Advanced settings added. The whole script does not rely on any external resources anymore.
I tried starting camogm from within the script as well, but ran into some problems, stay tuned.
So still: before the script can be used camogm must be started manually via shell:
camogm /var/state/camogm_cmd &
Version 0.3
Some decent progess here. Lots of ajax scripting done to show filesize, datarate, etc. live while recording video files. Record and stop-record commands are also ajax transmitted which makes the GUI much more responsive. Stability issues seem to be solved now as well.
Again: before the script can be used camogm must be started manually via shell:
camogm /var/state/camogm_cmd &
Version 0.2
I color labeled the parts of the gui and their current grade of operation. Record Format and destination directory are now read from xml output of camogm to fill in the form. The script now checks if both camogm and compressor are running. If the compressor is not running it can be started directly in the GUI. Camogm can not be started in the GUI yet (crashes...).
Before the script can be used camogm must be started manually via shell:
camogm /var/state/camogm_cmd &
Version 0.1
Very basic functionality as of now, format/codec can be selected, target directory can be set, record start/stop, audio recording form is already in the file but not functional yet
(Wiki hosted download link will follow as soon as the wiki permits me to upload anything else than images)
Software Interface
The GUI strongly relies on AJAX requests to update contents on the fly. These AJAX commands can be (re)used from external programs as well.
Access:
http://*camera-ip*/camogmgui/camogm_interface.php
The following commands are available:
start camogm as background deamon:
camogm_interface.php?cmd=run_camogm
does nothing if camogm is already running
show camogm xml status:
camogm_interface.php?cmd=status
returns something like this:
<camogm_state> <state>"stopped"</state> <compressor_state>"running"</compressor_state> <file_name>""</file_name> <frame_number>0</frame_number> <file_duration>0.000000</file_duration> <file_length>0</file_length> <frame_period>0</frame_period> <frames_skip>0</frames_skip> <seconds_skip>0</seconds_skip> <frames_skip_left>0</frames_skip_left> <seconds_skip_left>0</seconds_skip_left> <frame_width>0</frame_width> <frame_height>0</frame_height> <format>"mov"</format> <exif>"yes"</exif> <prefix>"/var/hdd/"</prefix> <max_duration>60</max_duration> <max_length>100000000</max_length> <max_frames>16384</max_frames> <timescale>1.000000</timescale> <frames_per_chunk>10</frames_per_chunk> <buffer_overruns>-1</buffer_overruns> <buffer_minimal>12704544</buffer_minimal> <buffer_free>1332800</buffer_free> <buffer_used>18459072</buffer_used> <circbuf_rp>-1</circbuf_rp> <debug_output>"stderr"</debug_output> <debug_level>1</debug_level> <use_global_rp>"no"</use_global_rp> <kml_enable>"no"</kml_enable> <kml_used>"no"</kml_used> <kml_path>""</kml_path> <kml_horHalfFov>"20.000000"</kml_horHalfFov> <kml_vertHalfFov>"15.000000"</kml_vertHalfFov> <kml_near>"40.000000"</kml_near> <kml_height_mode>"map ground level"</kml_height_mode> <kml_height>"10.000000"</kml_height> <kml_period>2</kml_period> <kml_last_ts>0.000000</kml_last_ts> </camogm_state>
start recording:
camogm_interface.php?cmd=start
stop recording:
camogm_interface.php?cmd=stop
rename file:
camogm_interface.php?cmd=file_rename&file_old=ABC&file_new=XYZ
returns errors if the file names are the same or if the target file name already exists.
mount partition:
mount the default partition /dev/hda1 at /var/hdd. Also create the required directory:
camogm_interface.php?cmd=mount
You can also supply 2 more arguments specifying custom partition and mountpoint:
For example:
camogm_interface.php?cmd=mount&partition=/dev/hdb1&mountpoint=/var/externalhdd
unmount partition:
To unmount a previously mounted partition you need to supply the mountpoint:
For example:
camogm_interface.php?cmd=umount&mountpoint=/var/externalhdd
list devices: Shows xml information about connected media no matter if they are mounted or not:
camogm_interface.php?cmd=listdevices
with only the internal HDD this returns:
<camogm_interface> <command>listdevices</command> <listdevices> <item> <partition>/dev/hda1</partition> <size>37.25 GB</size> <mountpoint>/var/hdd</mountpoint> <filesystem>ext2</filesystem> </item> </listdevices> </camogm_interface>
create directory: creates a new directory
Example creating a new directory called "newdir" in the /subdir/ which has to exist already:
camogm_interface.php?cmd=mkdir&name=/subdir/newdir
Get remaining free HDD Space:
camogm_interface.php?cmd=get_hdd_space
is HDD mounted:
camogm_interface.php?cmd=get_hdd_space
returns either the mountpoint or "no HDD mounted"
create HDD symlink:
camogm_interface.php?cmd=create_symlink
makes the HDD available over http by placing a symlink in the correct directory.
List files:
camogm_interface.php?cmd=list_files&dir=/
returns an xml tree of the available files at a specified path with details like size and creation date:
<file> <type>mov</type> <name>1226615834_588046.mov</name> <path>1226615834_588046.mov</path> <size>2545355</size> <date>13 Nov 2008 22:37:15</date> </file>
set camogm record directory:
camogm_interface.php?cmd=set_prefix&prefix=XYZ
Tell camogm to record to this specified path. Also creates/sets a cookie called "directory" with the same value.
init the camera compressor:
camogm_interface.php?cmd=init_compressor
check USB audio hardware:
camogm_interface.php?cmd=check_audio_hardware
Returns connected (hotplugable) USB audio devices.
Play sound over USB audio device:
camogm_interface.php?cmd=test_audio_playback&soundfile=XYZ
Tests audio hardware by playing back a specific soundfile.
set quicktime as recording format:
camogm_interface.php?cmd=setmov
Tells camogm to use quicktime mov as format.