Camogmgui

From ElphelWiki
Revision as of 03:12, 19 January 2010 by OneArtPlease (talk | contribs) (Plans for Future Releases)
Jump to: navigation, search

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

camogmgui Version 0.8

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

camogmgui_0_7.zip



camogmgui Version 0.6

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

camogmgui_0_6.zip



camogmgui Version 0.5

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

camogmgui_0_5.zip



camogmgui Version 0.4

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 &

camogmgui_0_4.zip



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 &

camogmgui_0_3.zip



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 &

camogmgui_0_2.zip



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)

camogmgui.tar.gz

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.