Difference between revisions of "VideoRecording"

From WebOS Internals
Jump to navigation Jump to search
(svn info)
Line 166: Line 166:
  
 
== SVN repository ==
 
== SVN repository ==
Public SVN up at:  http://devel.ccrook.com/webos/camcorder
+
Public SVN up at:  http://devel.ccrook.com/webos/camcorder<br>
username: default
+
username: default<br>
password: default
+
password: default<br>
  
  
 +
Relies on Prelease for launching shell scripts.  Use Flashlight App! to install it before attempting to run.
 +
<br>
 +
Currently stop button doesn't work.
  
 
== ToDo  ==
 
== ToDo  ==

Revision as of 17:20, 7 August 2009

At your command line (after accessing linux):

(make sure FS is rw)
<source lang="bash"> mount -o remount,rw / gst-launch camsrc ! palmvideoencoder ! filesink location=/media/internal/downloads/foo.mts mount -o remount,ro / </source> - No GUI
- No sound (need a muxer plugin? verify alsasrc works)
- Frame rate seemed pretty decent too.
- Video is H.264 at 480x320.
- Image is rotated 90 degrees CCW

other useful gstreamer commands:

gst-inspect (shows list of sources to pipe through, mostly decoders/demuxers) <source lang="text"> root@castle:/var/home/ccrook# gst-inspect palmvideodecoder: palmvideodecoder: palmvideodecoder palmaudiodecoder: palmaudiodecoder: palmaudiodecoder wavparse: wavparse: WAV audio demuxer wavenc: wavenc: WAV audio muxer udp: udpsink: UDP packet sender udp: multiudpsink: UDP packet sender udp: dynudpsink: UDP packet sender udp: udpsrc: UDP packet receiver typefindfunctions: application/x-id3v2: mp3, mp2, mp1, mpga, ogg, flac, tta typefindfunctions: application/x-id3v1: mp3, mp2, mp1, mpga, ogg, flac, tta typefindfunctions: audio/mpeg: mp3, mp2, mp1, mpga typefindfunctions: video/mpeg4: m4v typefindfunctions: audio/x-m4a: m4a typefindfunctions: application/x-3gp: 3gp typefindfunctions: video/quicktime: mov typefindfunctions: audio/x-wav: wav typefindfunctions: adts_mpeg_stream: aac typefindfunctions: audio/x-amr-nb-sh: amr typefindfunctions: audio/x-amr-wb-sh: amr rtsp: rtspsrc: RTSP packet receiver rtsp: rtpdec: RTP Decoder rtsp: rtspgoogle: Google RTSP Extension gstrtpmanager: gstrtpbin: RTP Bin gstrtpmanager: gstrtpclient: RTP Client gstrtpmanager: gstrtpjitterbuffer: RTP packet jitter-buffer gstrtpmanager: gstrtpptdemux: RTP Demux gstrtpmanager: gstrtpsession: RTP Session gstrtpmanager: gstrtpssrcdemux: RTP SSRC Demux rtp: rtpdepay: RTP depayloader rtp: rtpac3depay: RTP packet depayloader rtp: rtpdvdepay: RTP DV Depayloader rtp: rtpdvpay: RTP DV Payloader rtp: rtpilbcpay: RTP Payloader for iLBC Audio rtp: rtpilbcdepay: RTP iLBC packet depayloader rtp: rtpg726depay: RTP packet depayloader rtp: rtpg726pay: RTP packet payloader rtp: rtpg729depay: RTP packet depayloader rtp: rtpg729pay: RTP Payloader for G729 Audio rtp: rtpgsmdepay: RTP packet depayloader rtp: rtpgsmpay: RTP GSM audio payloader rtp: rtpamrdepay: RTP packet depayloader rtp: rtpamrpay: RTP packet payloader rtp: rtppcmadepay: RTP packet depayloader rtp: rtppcmudepay: RTP packet depayloader rtp: rtppcmupay: RTP packet payloader rtp: rtppcmapay: RTP packet payloader rtp: rtpmpadepay: RTP packet depayloader rtp: rtpmpapay: RTP packet payloader rtp: rtpmpvdepay: RTP packet depayloader rtp: rtpmpvpay: RTP MPEG2 ES video payloader rtp: rtph263ppay: RTP packet payloader rtp: rtph263pdepay: RTP packet depayloader rtp: rtph263depay: RTP H263 packet depayloader rtp: rtph263pay: RTP packet payloader rtp: rtph264depay: RTP packet depayloader rtp: rtph264pay: RTP packet payloader rtp: rtpL16pay: RTP packet payloader rtp: rtpL16depay: RTP packet depayloader rtp: asteriskh263: RTP packet parser rtp: rtpmp1sdepay: RTP packet depayloader rtp: rtpmp2tdepay: RTP packet depayloader rtp: rtpmp2tpay: RTP MP2T audio payloader rtp: rtpmp4vpay: RTP MPEG-4 Video packet payloader rtp: rtpmp4vdepay: RTP packet depayloader rtp: rtpmp4apay: RTP packet payloader rtp: rtpmp4adepay: RTP packet parser rtp: rtpmp4gdepay: RTP packet depayloader rtp: rtpmp4gpay: RTP packet payloader rtp: rtpspeexpay: RTP packet payloader rtp: rtpspeexdepay: RTP packet depayloader rtp: rtpsv3vdepay: RTP packet depayloader rtp: rtptheoradepay: RTP packet depayloader rtp: rtptheorapay: RTP packet depayloader rtp: rtpvorbisdepay: RTP packet depayloader rtp: rtpvorbispay: RTP packet depayloader rtp: rtpvrawdepay: RTP packet depayloader rtp: rtpvrawpay: RTP packet payloader queue2: queue2: Queue quicktime: qtdemux: QuickTime demuxer quicktime: rtpxqtdepay: RTP packet depayloader playback: playbin: Player Bin playback: playbin2: Player Bin 2 mulaw: mulawenc: Mu Law audio encoder mulaw: mulawdec: Mu Law audio decoder mobirtspsrc: mobirtspsrc: MobiRtspSrc ffmpeg: ffdec_alac: FFMPEG ALAC (Apple Lossless Audio Codec) decoder ffmpeg: ffdec_qcelp: FFMPEG QCELP / PureVoice decoder ffmpeg: ffdeinterlace: FFMPEG Deinterlace element ffmpeg: ffaudioresample: FFMPEG Audio resampling element uridecodebin: decodebin2: Decoder Bin uridecodebin: uridecodebin: URI Decoder decodebin: decodebin: Decoder Bin coreindexers: memindex: A index that stores entries in memory coreelements: capsfilter: CapsFilter coreelements: fakesrc: Fake Source coreelements: fakesink: Fake Sink coreelements: fdsrc: Filedescriptor Source coreelements: fdsink: Filedescriptor Sink coreelements: filesrc: File Source coreelements: identity: Identity coreelements: queue: Queue coreelements: filesink: File Sink coreelements: tee: Tee pipe fitting coreelements: typefind: TypeFind coreelements: multiqueue: MultiQueue video4linux2: camsrc: Video (video4linux2/raw) Source avi: avidemux: Avi demuxer avi: avimux: Avi muxer avi: avisubtitle: Avi subtitle parser audiotestsrc: audiotestsrc: Audio test source audiorate: audiorate: Audio rate adjuster audioconvert: audioconvert: Audio converter alsa: alsamixer: Alsa mixer alsa: alsasrc: Audio source (ALSA) alsa: alsasink: Audio sink (ALSA) alaw: alawenc: A Law audio encoder alaw: alawdec: A Law audio decoder palmvideosink: palmvideosink: palmvideosink palmvideoencoder: palmvideoencoder: palmvideoencoder palmqcelpdemux: palmqcelpdemux: palmqcelpdemux palmqcelpdemux: audio/x-gst-fourcc-sqcp: no extensions palmmp3demux: palmmp3demux: palmmp3demux palmjpegencfilesink: palmjpegencfilesink: palmjpegencfilesink palmhttpsrc: palmhttpsrc: Palm HTTP Source Element palmamrdemux: palmamrdemux: palmamrdemux adpcmdecoder: palmadpcmdecoder: ADPCM Decoder palmaacdemux: palmaacdemux: palmaacdemux staticelements: bin: Generic bin staticelements: pipeline: Pipeline object

Total count: 36 plugins, 129 features </source>

Additional reference from XO Laptop site:

http://wiki.laptop.org/go/Programming_the_camera
http://wiki.laptop.org/go/GStreamer#Using_gst_at_the_command_line

Currently looking at ways to use the camera preview pipe as a method of video recording through the WebOS GUI by diverting it to the filesystem.

File of interest: /usr/lib/luna/luna-media/palmInitMedia.js


More on the camera module: http://www.st.com/stonline/products/literature/bd/14404/vx6852.htm


SVN repository

Public SVN up at: http://devel.ccrook.com/webos/camcorder
username: default
password: default


Relies on Prelease for launching shell scripts. Use Flashlight App! to install it before attempting to run.
Currently stop button doesn't work.

ToDo

1.) Figure out proper way to freevideosink via a homebrew app (killing gst-launch properly)
2.) Mux in sound from alsasrc

"gst-launch alsasrc ! alsasink" will give you sound from the mic playing back through the speakers, verifying alsasrc. It quickly loses resolution though, and starts giving "can't keep up with audio source" errors. --Zinge 08:23, 7 August 2009 (UTC)

3.) Implement preview screen (possibility: send video through palmvideosink, then to palmvideoencoder so its still accessible for preview?)
4.) Get Videos app to display recorded video files
5.) Video conferencing via UDPsink?