VideoRecording

From WebOS Internals
Revision as of 20:21, 6 August 2009 by Cpcrook (talk | contribs)
Jump to navigation Jump to search

At your rooted command line:

(make sure FS is rw)
<source lang="text"> 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


ToDo

1.) Figure out proper way to freevideosink via a homebrew app
2.) Implement preview screen (possibility: send video through palmvideosink, then to palmvideoencoder)
3.) Get Videos app to display recorded video
4.) Video conferencing via UDPsink?