Help - Search - Members - Calendar
Full Version: Skype video hijacker
Skype Community > English > Skype for Linux
mrk.its
My camera works only on ov511-2.32 beta driver, but this driver is not supported(?) by skype.

So i've created simple user-space video driver, based on skype-dsp-hijacker and user-space video driver for pccam880 (http://harmen.vanderwal.eu/pccam880/)

It creates fake video source from gstreamer pipeline defined in command line. For example:

Video test image:
CODE
skype_video_hijacker videotestsrc is-live=true


Apply some video effects to video from your v4l cam:
CODE
skype_video_hijacker v4lsrc device=/dev/video1 ! ffmpegcolorspace ! vertigotv ! ffmpegcolorspace


Download sources from: http://mrk.sed.pl/node/22/

Install gstreamer devel libraries and pkg-config. Under ubuntu:
CODE
sudo apt-get install libgstreamer0.10-dev  pkg-config

then:
CODE
tar xzf skype_video_hijacker-0.1.tgz
cd skype_video_hijacker-0.1
make
make install
./skype_video_hijacker


Enjoy!
Andypoo
This looks pretty cool. Do you know where format conversions are handled by gstreamer?

I note that this uses YUV420P as the only possible output for the Gstreamer v4l device. Is it theoretically possible to use this to capture from an RGB v4l camera, provide filters and turn it into YUV420P? If so, this could help a lot of people.

Andy.
mrk.its
QUOTE(Andypoo @ Sun Nov 25 2007, 23:39) [snapback]468107[/snapback]

This looks pretty cool. Do you know where format conversions are handled by gstreamer?

I note that this uses YUV420P as the only possible output for the Gstreamer v4l device. Is it theoretically possible to use this to capture from an RGB v4l camera, provide filters and turn it into YUV420P? If so, this could help a lot of people.

Andy.


Yes, ffmpegcolorspace plugin will do it. Pipeline like:

CODE

v4lsrc device=/dev/video1 ! ffmpegcolorspace ! videoscale


will convert from any colorspace to format acceptable by skype. In above example device is important - at present skype_video_hijacker simulates only /dev/video0 (from unknown reason other devices are recognized by skype, but don't work), so camera device must use other device file (than /dev/video0)
berkus
Didn't test it yet, but here's ArchLinux pkgbuild for anyone else willing to try:
http://aur.archlinux.org/packages.php?do_D...=1&ID=13956
Whoopie
That's why I love the linux community! wink.png

I tested the hijacker with my Logitech Quickcam Messenger using the quickcam driver from http://home.mag.cx/messenger/, because with it, you can add a module parameter "video_nr=1" for creating /dev/video1

It worked when skyping with a friend who uses the windows client. First, I was a little bit sceptical because the preview doesn't work.

Thanks a lot for your work, mrk.its!
mrk.its
QUOTE(Whoopie @ Mon Nov 26 2007, 08:10) [snapback]468207[/snapback]

I tested the hijacker with my Logitech Quickcam Messenger using the quickcam driver from http://home.mag.cx/messenger/, because with it, you can add a module parameter "video_nr=1" for creating /dev/video1

It worked when skyping with a friend who uses the windows client. First, I was a little bit sceptical because the preview doesn't work.

You can still use your primary camera driver - manually rename device file to /dev/video1.
vorcers
thanks vor your work.

But that doesn't work for my.
Not with the avatar, and not with the real video.

Here the code with the avatar:
If I press the preview button, in options menu, skype breaks down.


CODE
christian@christian ~/Desktop/skype_video_hijacker-0.1/skype_video_hijacker-0.1 $ skype_video_hijacker filesrc location=/home/christian/Desktop/skype_video_hijacker-0.1/skype_video_hijacker-0.1/avatar.jpg ! jpegdec ! videoscale ! ffmpegcolorspace
gst.c create_pipeline (152): can't create pipe: filesrc location=/home/christian/Desktop/skype_video_hijacker-0.1/skype_video_hijacker-0.1/avatar.jpg ! jpegdec ! videoscale ! ffmpegcolorspace

(<unknown>:11985): GStreamer-CRITICAL **: gst_element_set_state: assertion `GST_IS_ELEMENT (element)' failed
gst.c shim_ioctl (198): request=80685600 nr 0
gst.c shim_ioctl (310): result=-1 error=515 Unknown error 515

gst.c shim_ioctl (198): request=803c7601 nr 1
gst.c shim_ioctl (205): VIDIOCGCAP
gst.c shim_ioctl (310): result=0 error=0 Success

gst.c create_pipeline (152): can't create pipe: filesrc location=/home/christian/Desktop/skype_video_hijacker-0.1/skype_video_hijacker-0.1/avatar.jpg ! jpegdec ! videoscale ! ffmpegcolorspace

(<unknown>:11985): GStreamer-CRITICAL **: gst_element_set_state: assertion `GST_IS_ELEMENT (element)' failed
gst.c shim_ioctl (198): request=80685600 nr 0
gst.c shim_ioctl (310): result=-1 error=515 Unknown error 515

gst.c shim_ioctl (198): request=803c7601 nr 1
gst.c shim_ioctl (205): VIDIOCGCAP
gst.c shim_ioctl (310): result=0 error=0 Success

gst.c shim_ioctl (198): request=800e7606 nr 6
gst.c shim_ioctl (233): VIDIOCGPICT
gst.c shim_ioctl (310): result=0 error=0 Success

gst.c shim_ioctl (198): request=400e7607 nr 7
gst.c shim_ioctl (240): VIDIOCSPICT depth:24, colorspace:15
gst.c shim_ioctl (310): result=0 error=0 Success

gst.c shim_ioctl (198): request=80207609 nr 9
gst.c shim_ioctl (252): VIDIOCGWIN
gst.c shim_ioctl (310): result=0 error=0 Success

gst.c shim_ioctl (198): request=4020760a nr 10
gst.c shim_ioctl (256): VIDIOCSWIN
gst.c shim_ioctl (310): result=0 error=0 Success

gst.c create_pipeline (152): can't create pipe: filesrc location=/home/christian/Desktop/skype_video_hijacker-0.1/skype_video_hijacker-0.1/avatar.jpg ! jpegdec ! videoscale ! ffmpegcolorspace

(<unknown>:11985): GStreamer-CRITICAL **: gst_element_set_state: assertion `GST_IS_ELEMENT (element)' failed
gst.c shim_ioctl (198): request=80685600 nr 0
gst.c shim_ioctl (310): result=-1 error=515 Unknown error 515

gst.c shim_ioctl (198): request=803c7601 nr 1
gst.c shim_ioctl (205): VIDIOCGCAP
gst.c shim_ioctl (310): result=0 error=0 Success

gst.c shim_ioctl (198): request=800e7606 nr 6
gst.c shim_ioctl (233): VIDIOCGPICT
gst.c shim_ioctl (310): result=0 error=0 Success

gst.c shim_ioctl (198): request=400e7607 nr 7
gst.c shim_ioctl (240): VIDIOCSPICT depth:24, colorspace:15
gst.c shim_ioctl (310): result=0 error=0 Success

gst.c shim_ioctl (198): request=80207609 nr 9
gst.c shim_ioctl (252): VIDIOCGWIN
gst.c shim_ioctl (310): result=0 error=0 Success

gst.c shim_ioctl (198): request=4020760a nr 10
gst.c shim_ioctl (256): VIDIOCSWIN
gst.c shim_ioctl (310): result=0 error=0 Success

gst.c create_pipeline (152): can't create pipe: filesrc location=/home/christian/Desktop/skype_video_hijacker-0.1/skype_video_hijacker-0.1/avatar.jpg ! jpegdec ! videoscale ! ffmpegcolorspace

(<unknown>:11985): GStreamer-CRITICAL **: gst_element_set_state: assertion `GST_IS_ELEMENT (element)' failed
gst.c shim_ioctl (198): request=80685600 nr 0
gst.c shim_ioctl (310): result=-1 error=515 Unknown error 515

gst.c shim_ioctl (198): request=803c7601 nr 1
gst.c shim_ioctl (205): VIDIOCGCAP
gst.c shim_ioctl (310): result=0 error=0 Success

gst.c shim_ioctl (198): request=800e7606 nr 6
gst.c shim_ioctl (233): VIDIOCGPICT
gst.c shim_ioctl (310): result=0 error=0 Success

gst.c shim_ioctl (198): request=400e7607 nr 7
gst.c shim_ioctl (240): VIDIOCSPICT depth:24, colorspace:15
gst.c shim_ioctl (310): result=0 error=0 Success

gst.c shim_ioctl (198): request=80207609 nr 9
gst.c shim_ioctl (252): VIDIOCGWIN
gst.c shim_ioctl (310): result=0 error=0 Success

gst.c shim_ioctl (198): request=4020760a nr 10
gst.c shim_ioctl (256): VIDIOCSWIN
gst.c shim_ioctl (310): result=-1 error=22 Invalid argument
//pressing...
Starting the process...
Aborted
christian@christian ~/Desktop/skype_video_hijacker-0.1/skype_video_hijacker-0.1 $


And always if I do anything, these message appears:

(<unknown>:11736): GStreamer-CRITICAL **: gst_element_set_state: assertion `GST_IS_ELEMENT (element)' failed

is that the problem?

Hint: My OS is Gentoo Linux, an I have got a creative webcam with the ov511 2.32 driver.
the video0 device is free.

Thank you
vorcers
mrk.its
Try first your pipeline with gst-launch utility from gstreamer, i.e.:
CODE

gst-launch-0.10 filesrc location=avatar.jpg ! jpegdec ! videoscale ! ffmpegcolorspace ! autovideosink

Look at the autovideosink element I've added at the end - it's needed only for gst-launch test

If it works, it also should work in hijacker. Maybe your gstreamer instalation is not compete? gstreamer's gst-inspect utility will display all elements you have installed.
vorcers
ok, now i installed some extra plugins.

the command with the avatar works. but not skype. I get always some unknown error.

here the avatar test, and my installed plugins:

CODE
christian@christian ~/Desktop/skype_video_hijacker-0.1/skype_video_hijacker-0.1 $ gst-launch-0.10 filesrc location=avatar.jpg ! jpegdec ! videoscale ! ffmpegcolorspace ! autovideosink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Got EOS from element "pipeline0".
Execution ended after 2201000 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
FREEING pipeline ...
christian@christian ~/Desktop/skype_video_hijacker-0.1/skype_video_hijacker-0.1 $ gst-inspect-0.10
video4linux2:  v4l2src: Video (video4linux2/raw) Source
video4linux:  v4lsrc: Video (video4linux/raw) Source
wavparse:  wavparse: WAV audio demuxer
wavenc:  wavenc: WAV audio muxer
videomixer:  videomixer: Video mixer
videocrop:  videocrop: Crop
videobox:  videobox: Video box filter
udp:  udpsink: UDP packet sender
udp:  multiudpsink: UDP packet sender
udp:  dynudpsink: UDP packet sender
udp:  udpsrc: UDP packet receiver
smpte:  smpte: SMPTE transitions
rtsp:  rtspsrc: RTSP packet receiver
rtsp:  rtpdec: RTP Decoder
rtp:  rtpdepay: RTP payloader
rtp:  rtpac3depay: RTP packet depayloader
rtp:  rtpilbcpay: RTP Payloader for iLBC Audio
rtp:  rtpilbcdepay: RTP iLBC packet depayloader
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:  rtph263ppay: RTP packet payloader
rtp:  rtph263pdepay: RTP 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:  rtpmp2tdepay: RTP packet depayloader
rtp:  rtpmp2tpay: RTP MP2T audio payloader
rtp:  rtpmp4vpay: RTP MPEG-4 Video packet payloader
rtp:  rtpmp4vdepay: RTP packet depayloader
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
quicktime:  qtdemux: QuickTime demuxer
quicktime:  rtpxqtdepay: RTP packet depayloader
multipart:  multipartdemux: Multipart demuxer
multipart:  multipartmux: Multipart muxer
matroska:  matroskademux: Matroska demuxer
matroska:  matroskamux: Matroska muxer
level:  level: Level
mulaw:  mulawenc: Mu Law audio encoder
mulaw:  mulawdec: Mu Law audio decoder
alaw:  alawenc: A Law audio encoder
alaw:  alawdec: A Law audio decoder
goom:  goom: GOOM: what a GOOM!
flxdec:  flxdec: FLX audio decoder
icydemux:  icydemux: ICY tag demuxer
id3demux:  id3demux: ID3 tag demuxer
effectv:  edgetv: EdgeTV effect
effectv:  agingtv: AgingTV effect
effectv:  dicetv: DiceTV effect
effectv:  warptv: WarpTV effect
effectv:  shagadelictv: ShagadelicTV
effectv:  vertigotv: VertigoTV effect
effectv:  revtv: RevTV effect
effectv:  quarktv: QuarkTV effect
navigationtest:  navigationtest: Video navigation test
debug:  breakmydata: Break my data
debug:  navseek: Seek based on left-right arrows
debug:  progressreport: Progress report
debug:  testsink: Test plugin
efence:  efence: Electric Fence
cutter:  cutter: Audio cutter
avi:  avidemux: Avi demuxer
avi:  avimux: Avi muxer
autodetect:  autovideosink: Auto video sink
autodetect:  autoaudiosink: Auto audio sink
auparse:  auparse: AU audio demuxer
audiofx:  audiopanorama: AudioPanorama
audiofx:  audioinvert: AudioInvert
audiofx:  audioamplify: AudioAmplify
audiofx:  audiodynamic: AudioDynamic
apetag:  apedemux: APE tag demuxer
alphacolor:  alphacolor: Alpha color filter
alpha:  alpha: Alpha filter
gamma:  gamma: Video gamma correction
videobalance:  videobalance: Video balance
videoflip:  videoflip: Video flipper
jpeg:  jpegenc: JPEG image encoder
jpeg:  jpegdec: JPEG image decoder
jpeg:  smokeenc: Smoke video encoder
jpeg:  smokedec: Smoke video decoder
tcp:  tcpclientsink: TCP client sink
tcp:  tcpclientsrc: TCP client source
tcp:  tcpserversink: TCP server sink
tcp:  tcpserversrc: TCP server source
tcp:  multifdsink: Multi filedescriptor sink
subparse: subparse_typefind: srt, sub, mpsub, mdvd, smi, txt
subparse:  subparse: Subtitle parser
subparse:  ssaparse: SSA Subtitle Parser
volume:  volume: Volume
videoscale:  videoscale: Video scaler
videorate:  videorate: Video rate adjuster
videotestsrc:  videotestsrc: Video test source
typefindfunctions: video/x-ms-asf: asf, wm, wma, wmv
typefindfunctions: audio/x-musepack: mpc
typefindfunctions: audio/x-au: au, snd
typefindfunctions: video/x-msvideo: avi
typefindfunctions: video/x-cdxa: dat
typefindfunctions: video/x-vcd: dat
typefindfunctions: video/x-fli: flc, fli
typefindfunctions: application/x-id3v2: mp3, mp2, mp1, mpga, ogg, flac, tta
typefindfunctions: application/x-id3v1: mp3, mp2, mp1, mpga, ogg, flac, tta
typefindfunctions: application/x-apetag: ape, mpc, wv
typefindfunctions: audio/x-ttafile: tta
typefindfunctions: audio/x-mod: 669, amf, dsm, gdm, far, imf, it, med, mod, mtm, okt, sam, s3m, stm, stx, ult, xm
typefindfunctions: audio/mpeg: mp3, mp2, mp1, mpga
typefindfunctions: audio/x-ac3: ac3
typefindfunctions: video/mpeg-sys: mpe, mpeg, mpg
typefindfunctions: video/mpegts: ts
typefindfunctions: application/ogg: anx, ogg, ogm
typefindfunctions: video/mpeg,elementary: mpv, mpeg, mpg
typefindfunctions: video/mpeg-stream: mpv, mpeg, mpg
typefindfunctions: video/mpeg4: m4v
typefindfunctions: video/x-nuv: nuv
typefindfunctions: audio/x-m4a: m4a
typefindfunctions: application/x-3gp: 3gp
typefindfunctions: video/quicktime: mov
typefindfunctions: image/x-quicktime: qif, qtif, qti
typefindfunctions: text/html: htm, html
typefindfunctions: application/vnd.rn-realmedia: ra, ram, rm, rmvb
typefindfunctions: application/x-pn-realaudio: ra, ram, rm, rmvb
typefindfunctions: application/x-shockwave-flash: swf, swfl
typefindfunctions: video/x-flv: flv
typefindfunctions: text/plain: txt
typefindfunctions: text/uri-list: ram
typefindfunctions: application/smil: smil
typefindfunctions: application/xml: xml
typefindfunctions: audio/x-wav: wav
typefindfunctions: audio/x-aiff: aiff, aif, aifc
typefindfunctions: audio/x-svx: iff, svx
typefindfunctions: audio/x-paris: paf
typefindfunctions: audio/x-nist: nist
typefindfunctions: audio/x-voc: voc
typefindfunctions: audio/x-sds: sds
typefindfunctions: audio/x-ircam: sf
typefindfunctions: audio/x-w64: w64
typefindfunctions: audio/x-shorten: shn
typefindfunctions: application/x-ape: ape
typefindfunctions: image/jpeg: jpg, jpe, jpeg
typefindfunctions: image/gif: gif
typefindfunctions: image/png: png
typefindfunctions: image/bmp: bmp
typefindfunctions: image/tiff: tif, tiff
typefindfunctions: video/x-matroska: mkv, mka
typefindfunctions: video/x-mve: mve
typefindfunctions: video/x-dv: dv, dif
typefindfunctions: audio/x-amr-nb-sh: amr
typefindfunctions: audio/x-amr-wb-sh: amr
typefindfunctions: audio/iLBC-sh: ilbc
typefindfunctions: audio/x-sid: sid
typefindfunctions: image/x-xcf: xcf
typefindfunctions: video/x-mng: mng
typefindfunctions: image/x-jng: jng
typefindfunctions: image/x-xpixmap: xpm
typefindfunctions: image/x-sun-raster: ras
typefindfunctions: application/x-bzip: bz2
typefindfunctions: application/x-gzip: gz
typefindfunctions: application/zip: zip
typefindfunctions: application/x-compress: Z
typefindfunctions: audio/x-flac: flac
typefindfunctions: audio/x-vorbis: no extensions
typefindfunctions: video/x-theora: no extensions
typefindfunctions: application/x-ogm-video: no extensions
typefindfunctions: application/x-ogm-audio: no extensions
typefindfunctions: application/x-ogm-text: no extensions
typefindfunctions: audio/x-speex: no extensions
typefindfunctions: application/x-ogg-skeleton: no extensions
typefindfunctions: text/x-cmml: no extensions
typefindfunctions: application/x-executable: no extensions
typefindfunctions: adts_mpeg_stream: aac
typefindfunctions: audio/x-spc: spc
typefindfunctions: audio/x-wavpack: wv, wvp
typefindfunctions: audio/x-wavpack-correction: wvc
typefindfunctions: application/x-rar: rar
typefindfunctions: application/x-tar: tar
typefindfunctions: application/x-ar: a
typefindfunctions: application/x-ms-dos-executable: dll, exe, ocx, sys, scr, msstyles, cpl
typefindfunctions: video/x-dirac: no extensions
typefindfunctions: multipart/x-mixed-replace: no extensions
typefindfunctions: application/x-mmsh: no extensions
typefindfunctions: video/vivo: viv
uridecodebin:  uridecodebin: URI Decoder
queue2:  queue2: Queue
decodebin2:  decodebin2: Decoder Bin
decodebin:  decodebin: Decoder Bin
playbin:  playbin: Player Bin
gdp:  gdpdepay: GDP Depayloader
gdp:  gdppay: GDP Payloader
ffmpegcolorspace:  ffmpegcolorspace: FFMPEG Colorspace converter
audiotestsrc:  audiotestsrc: Audio test source
audioresample:  audioresample: Audio scaler
audiorate:  audiorate: Audio rate adjuster
audioconvert:  audioconvert: Audio converter
adder:  adder: Adder
coreindexers:  fileindex: A index that stores entries in file
coreindexers:  memindex: A index that stores entries in memory
coreelements:  multiqueue: MultiQueue
coreelements:  typefind: TypeFind
coreelements:  tee: Tee pipe fitting
coreelements:  filesink: File Sink
coreelements:  queue: Queue
coreelements:  identity: Identity
coreelements:  filesrc: File Source
coreelements:  fdsink: Filedescriptor Sink
coreelements:  fdsrc: Filedescriptor Source
coreelements:  fakesink: Fake Sink
coreelements:  fakesrc: Fake Source
coreelements:  capsfilter: CapsFilter
ximagesink:  ximagesink: Video sink
xvimagesink:  xvimagesink: Video sink
alsa:  alsamixer: Alsa Mixer
alsa:  alsasrc: Audio Src (ALSA)
alsa:  alsasink: Audio Sink (ALSA)
staticelements:  bin: Generic bin
staticelements:  pipeline: Pipeline object

Total count: 62 plugins, 234 features
mrk.its
In the meantime project has been renamed to gstfakevideo and is hosted on code.google.com now.

Use this command to anonymously check out the latest project source code:

CODE

svn checkout http://gstfakevideo.googlecode.com/svn/trunk/ gstfakevideo


Latest version displays a bit more descriptive error message in case of errors in pipeline definition and fixes color reversing (bad fourcc code).
heiner254
Doesn't work for the stv680 driver...
The cameras display freezes within a second after starting the program.

The camera works with gst-launch though... any ideas why this happens?
mrk.its
QUOTE(heiner254 @ Wed Nov 28 2007, 22:59) [snapback]469374[/snapback]

Doesn't work for the stv680 driver...
The cameras display freezes within a second after starting the program.

The camera works with gst-launch though... any ideas why this happens?

Does videotestsrc work (gstfakevideo ran without arguments) ? How do you launch gstfakevideo (your camera is using other than /dev/video0 device) ? Launch gstfakevideo using:

CODE

GST_DEBUG=5 GST_DEBUG_NO_COLOR=1 ./gstfakevideo 2>&1 | gzip >log.gz


try to freeze video, quit skype and send me log.gz (to: mrk(at)sed.pl)

heiner254
QUOTE(mrk.its @ Thu Nov 29 2007, 02:12) [snapback]469454[/snapback]

Does videotestsrc work (gstfakevideo ran without arguments) ? How do you launch gstfakevideo (your camera is using other than /dev/video0 device) ? Launch gstfakevideo using:

CODE

GST_DEBUG=5 GST_DEBUG_NO_COLOR=1 ./gstfakevideo 2>&1 | gzip >log.gz


try to freeze video, quit skype and send me log.gz (to: mrk(at)sed.pl)


/dev/video0 is not used by any device. I launched with
CODE

GST_DEBUG=5 GST_DEBUG_NO_COLOR=1 ./gstfakevideo v4lsrc device=/dev/video1 ! videoscale ! ffmpegcolorspace &> LOG

videotestsrc works without problems, as well as a tv-card on /dev/video2. As already mentioned, this also works fine:
CODE

./gst-launch-0.10 v4lsrc device=/dev/video1 ! videoscale ! ffmpegcolorspace ! ximagesink

I'm attaching the log...

Thanks a lot for your help!
Tallchris
Thank you.

gstfakevideo allows me to use my old Fuji finepix 2600Z camera in PC CAM mode with skype_static-2.0.0.13 on Mandriva 2007.0 (kernel 2.6.17-16mdv).

I'm using the finepix driver v 0.91.0 (as found at http://sourceforge.net/projects/fpix/).

The skype preview window does not work during a call, but my contact can see me and I can see the contact, and the audio works throughout.

I just need to figure out how to get the camera to mount as /dev/video1 rather than /dev/video0 to remove the need to go in as root and move the devices prior to launching skype.

With skype_static-2.0.0.13 in the PATH, the camera turned on and the mount point set to /dev/video1 skype is launched with the command:

./gstfakevideo v4lsrc device=/dev/video1 ! videoscale ! ffmpegcolorspace

Obviously remembering to start your video in the call.

Using:
./gstfakevideo v4lsrc device=/dev/video1 ! videoscale ! ffmpegcolorspace ! autovideosink

brings up a preview window courtesy of gstreamer-0.10, but does not allow any video to be sent.
mrk.its
QUOTE(Tallchris @ Sat Dec 1 2007, 18:14) [snapback]470346[/snapback]

Thank you.

gstfakevideo allows me to use my old Fuji finepix 2600Z camera in PC CAM mode with skype_static-2.0.0.13 on Mandriva 2007.0 (kernel 2.6.17-16mdv).

Nice, so it works not only for me smile.png

QUOTE(Tallchris @ Sat Dec 1 2007, 18:14) [snapback]470346[/snapback]

The skype preview window does not work during a call, but my contact can see me and I can see the contact, and the audio works throughout.

Do you have working xv extension in your X server? Check with xvinfo.

If you want permanently assign other video file with cam, use udev rules:
(look there for egzample: http://ubuntuforums.org/archive/index.php/t-295293.html)
blackest_knight
QUOTE(Tallchris @ Sat Dec 1 2007, 18:14) [snapback]470346[/snapback]

Thank you.

With skype_static-2.0.0.13 in the PATH, the camera turned on and the mount point set to /dev/video1 skype is launched with the command:

./gstfakevideo v4lsrc device=/dev/video1 ! videoscale ! ffmpegcolorspace

Obviously remembering to start your video in the call.

Using:
./gstfakevideo v4lsrc device=/dev/video1 ! videoscale ! ffmpegcolorspace ! autovideosink

brings up a preview window courtesy of gstreamer-0.10, but does not allow any video to be sent.


Aha !
and it was with this post i got my logitech quickcam messenger working in gutsy smile.png
gstfakevideo v4lsrc device=/dev/video0 ! ffmpegcolorspace

or

gstfakevideo v4lsrc device=/dev/video0 ! videoscale ! ffmpegcolorspace

or

gstfakevideo v4lsrc device=/dev/video0 ! ffmpegcolorspace ! vertigotv ! ffmpegcolorspace

that last one is a little strange.


appears to work however prior to this i found the video driver was set to intel for my 915 card and i needed to switch to i810 instead.

gstreamer-properties was very useful i found that the xvimagesink didnt work under the intel driver
the 810 driver supported both ximagesink and xvimagesink

I was trying all sorts to get this working it wasnt until i read the parent post i realised by ending the chain with an imagesink it meant skype receives no video , DOH !!!

It works in preview mode too.

hope this helps

btw dont forget to install the gstreamer dev package or you will fail to make and make install


tekknokrat
Hi,

is there some news with the stv0680 issue?

for me the camera runs nice with all other applications apart of skype or gstfakevideo.
The biggest size that is possible with my cam (aiptek pencam) is 320x240.

lsusb:
CODE
STMicroelectronics Imaging Division (VLSI Vision) Aiptek PenCam 1


Thanks for your efforts mrk.its its interesting stuff. I admire your knowledge!
tekknokrat
*bump*
apz
Is there a way to flip blue and red channels with gstreamer? I use quickcam messenger (with the quickcam_messenger driver shipped with vanilla kernel), and the image appears as mostly blue.
Mark_D
QUOTE(apz @ Sun Jan 20 2008, 18:32) [snapback]488243[/snapback]

Is there a way to flip blue and red channels with gstreamer? I use quickcam messenger (with the quickcam_messenger driver shipped with vanilla kernel), and the image appears as mostly blue.


I am having the same problem - I was told that the ATI graphicscard is causing it here. It would be great to find a way to swap color channels. And fiddling with both the xorg and the proprietary ATI drivers did not solve that problem.

BTW: The gstfakevideo is great for importing anykind of video into Flash as well! Simply replace the "exec skype" line in the gstfakevideo script with something like "exec firefox". You need to have the Flash-Plugin for Firefox installed, off course. Now you can use gstreamer to pipe what you want (e.g. your Skype video call) into Flash based broadcasting solutions like Ustream, Mogulus or a Red5 server. yes.png
andruty
It works for me for ID 046d:08f0 Logitech, Inc. QuickCam Messenger on Gentoo. I had to use
qcset /dev/video1 compat=dblbuf and
./gstfakevideo v4lsrc device=/dev/video1 ! ffmpegcolorspace
Thanks for the driver
Andrzej
apz
QUOTE(Mark_D @ Sat Jan 26 2008, 13:46) [snapback]490588[/snapback]

I am having the same problem - I was told that the ATI graphicscard is causing it here. It would be great to find a way to swap color channels. And fiddling with both the xorg and the proprietary ATI drivers did not solve that problem.


I've tried both, the quickcam_messenger that comes with kernel (which works, but bluish image) and qc-usb-messenger, which works if you set the dblbuf compatibility-mode. The irony, I think is, that qc-usb-messenger also has another compatibility-mode, called torgb and if you enable that, the colors are fixed and the image looks great. The downsize is, that you can have only one compatibility mode at a time, so you see only one perfect image in skype, just before it hangs as dblbuf gets turned off sadsmile.png

Oh, and I'm using the NVidia driver myself.
Melchior
QUOTE(andruty @ Sun Jan 27 2008, 17:25) [snapback]490979[/snapback]

It works for me for ID 046d:08f0 Logitech, Inc. QuickCam Messenger on Gentoo. I had to use
qcset /dev/video1 compat=dblbuf and
./gstfakevideo v4lsrc device=/dev/video1 ! ffmpegcolorspace


I've compiled gstfakevideo without problem and the binary is in the /usr/local/bin directory, the library in /usr/local/lib directory, but when i launch gstfakevideo it says that i don't have the "v4lsrc" item...

gstfakevideo v4lsrc device=/dev/video1 ! ffmpegcolorspace
gst.c create_pipeline (152): parse bin error: pas d'element "v4lsrc"
gst.c shim_open (192): Can't create pipeline, fake video not available

Where can i find that "v4lsrc" ? in wich package ?

Already installed here :
libpt-plugins-v4l
libpt-plugins-v4l2

Please give me some tips about this "v4lsrc" thing, as i'm new to Linux. Thanks !

(P.S. I'm using the "qc-usb-messenger-1.7" driver without problems in XawTv, Camstream, etc.)

RESOLVED ! (a package was missing)
Whoopie
QUOTE(apz @ Mon Jan 28 2008, 18:58) [snapback]491376[/snapback]

I've tried both, the quickcam_messenger that comes with kernel (which works, but bluish image) and qc-usb-messenger, which works if you set the dblbuf compatibility-mode. The irony, I think is, that qc-usb-messenger also has another compatibility-mode, called torgb and if you enable that, the colors are fixed and the image looks great. The downsize is, that you can have only one compatibility mode at a time, so you see only one perfect image in skype, just before it hangs as dblbuf gets turned off sadsmile.png

Oh, and I'm using the NVidia driver myself.


Hi,

could you please load the qc-usb-messenger driver like that:
modprobe quickcam compatible=6

This should enable dblbuf and torgb. It's a bit mask, and if I understood the source code correctly, bit 0 is for 16x, bit 1 for dblbuf and bit 2 for torgb. So, you have 011 which is 6.

I'm not at home at the moment, so I can't try.

Best regards,
Whoopie
Melchior
Hi,

Everything is now well settled and i am able to handle the camera video with my Skype messenger, thanks to gstfakevideo !

Just a little annoying thing.... When launching Skype with the "gstfakevideo v4lsrc device=/dev/video0 ! videoscale ! ffmpegcolorspace" command, my terminal console shows :

gst.c create_pipeline (155): pipeline created
gst.c create_pipeline (159): pipeline linked
gst.c shim_ioctl (201): request=80685600 nr 0
gst.c shim_ioctl (313): result=-1 error=515 Erreur inconnue 515

gst.c shim_ioctl (201): request=803c7601 nr 1
gst.c shim_ioctl (208): VIDIOCGCAP
gst.c shim_ioctl (313): result=0 error=0 Succès

Seems that the request "80685600 nr 0" generates an error 515

Any tips ? Thanks !
Andypoo
This may be nothing to worry about.

Skype attempts a v4l2 command first, then switches to v4l when this fails.

This is likely what you're seeing here.

Andy.
Melchior
QUOTE(Whoopie @ Fri Feb 1 2008, 14:14) [snapback]492853[/snapback]

could you please load the qc-usb-messenger driver like that:
modprobe quickcam compatible=6
This should enable dblbuf and torgb. It's a bit mask, and if I understood the source code correctly, bit 0 is for 16x, bit 1 for dblbuf and bit 2 for torgb. So, you have 011 which is 6.


That's exact, tested here. yes.png
Melchior
QUOTE(Andypoo @ Mon Feb 4 2008, 00:33) [snapback]493805[/snapback]

This may be nothing to worry about.
Skype attempts a v4l2 command first, then switches to v4l when this fails.
This is likely what you're seeing here.


Aaah O.K. thanks ! Anyway my old little cam is working very nicely here. The image received is exceptionnaly good, and my friends told me that the image i send is quite good also. I've had a very long connection (more than 1 hour) yesterday without a glitch. Now i will try to adjust even more accurately the colours (contrast), fiddling with the qc-usb-messenger driver parameters. smile.png
Abetsic
Which package was missing Melchior ?
Melchior
QUOTE(Abetsic @ Fri Feb 8 2008, 00:23) [snapback]495304[/snapback]

Which package was missing Melchior ?


Hi, it was in the "gstreamer" collection... There's a lot of different package "gstreamer" for "KUbuntu7.10 Gutsy" and i forgot an essential one, the "gstreamer0.10-plugins-base". My fault !
Anyway, all is working fine now.

Regards,
Melchior
Hi,

I am able to use my Quickcam messenger, thanks to driver "QuickCam Messenger/Communicate USB 1.7" :-) and the gstafakevideo script.

But i have a little annoying problem with my system logs...

I have read the driver FAQ and it says :

------------------------------------------------------------
Q: My log files keep filling up (but the driver works fine)!
A: use "qcset debug=0" to disable all possible messages.
If it doesn't help, send e-mail to mailing lists showing
the exact error message that fills your logs.
(especially "frame lost" message is uninteresting, it is
known to happen with some programs and will be fixed later.

------------------------------------------------------------

No matter i use "qcset debug=0", i still get tons and tons of same lines in my logs (kern.log, debug.log and sys.log), but the driver works fine.

Feb 7 11:45:36 Cherokee kernel: [ 8354.588000] quickcam [36.106095]: Ignore Chunk 42FF (len=261)
Feb 7 11:45:44 Cherokee kernel: [ 8362.804000] quickcam [44.325185]: Ignore Chunk 42FF (len=351)
Feb 7 11:45:45 Cherokee kernel: [ 8364.044000] quickcam [45.565065]: Ignore Chunk 42FF (len=341)
Feb 7 11:45:46 Cherokee kernel: [ 8364.624000] quickcam [46.144991]: Ignore Chunk 42FF (len=156)

... etc. etc. etc.

How to disable completely that ? Thank you ! wink.png

+Up
.ioannis.
Thanks a lot for this. I was just looking for something like that.

I have a Fujifilm camera with webcam capability. It outputs MJPEG which skype doesn't like. The following is what I need to get a video output using gstreamer.

gst-launch v4l2src ! decodebin ! xvimagesink

the camera is supported by the linux-uvc driver.

I've tried 'gstfakevideo', but unfortunately I get a black window. This is the command I've used

gstfakevideo v4l2src device=/dev/video1 ! decodebin

(or 'gstfakevideo v4l2src device=/dev/video1 ! decodebin ! ffmpegcolorspace')

I had to rename by /dev/video0 to video1 first. There doesn't seem to be any major error message. Other than a
"gst.c shim_ioctl (201): request=80685600 nr 0
gst.c shim_ioctl (313): result=-1 error=515 Unknown error 515"

which repeats few time, it seems that is successfully starts the process
"gst.c shim_ioctl (201): request=4020760a nr 10
gst.c shim_ioctl (259): VIDIOCSWIN
gst.c shim_ioctl (313): result=0 error=0 Success

Starting the process...
Skype Xv: Xv ports available: 33
Skype XShm: XShm support enabled
Skype Xv: Using Xv port 306"

I can see the "Gstreamer Fake video (/dev/video0)" webcam selection in skype, but the preview is black. Same thing when starting a video call. The person on the other end sees a black window

Any ideas?

Thanks
woodworm
I have a problem with my Logitech Quick Cam for Notebooks.

When I run gst-launch-0.10 v4lsrc device=/dev/video1 the LED om the cam glows then the following output appears and the LED goes off

CODE

woodworm@woodworm-pc:/usr/src/skype_video_hijacker-0.1$ gst-launch-0.10 v4lsrc device=/dev/video1
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /pipeline0/v4lsrc0: Internal data flow error.
Additional debug info:
gstbasesrc.c(1816): gst_base_src_loop (): /pipeline0/v4lsrc0:
streaming task paused, reason not-linked (-1)
Execution ended after 142699000 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
FREEING pipeline ...


And when I try to launch it with the videotestsrc source the following is returned:

CODE

woodworm@woodworm-pc:/usr/src/skype_video_hijacker-0.1$ gst-launch-0.10 videotestsrc
Setting pipeline to PAUSED ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /pipeline0/videotestsrc0: Internal data flow error.
Additional debug info:
gstbasesrc.c(1816): gst_base_src_loop (): /pipeline0/videotestsrc0:
streaming task paused, reason not-linked (-1)
Execution ended after 881000 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
FREEING pipeline ...


Has someona an idea how i could fix this problem?

thx
Long
Hi all! Thanks for hijacker, it's really cool engine with wide potentialities!

I have Logitech QuickCam Express II with gspca drivers, unfortunately, skype works bad with this configuration, utilizes 100% CPU and reduce video resolution on account of this.

But with ffmpegcolorspace transform through hijacker skype utilizes 20-40% CPU and all is OK!

However I have second problem - this is very cheap camera, it have low sensitivity and doesn't have any built-in light/color compensations. So I have written gstreamer filter for realtime color and luminosity autolevels and it really works.
sal_autolevels sample
Left picture is ./gstfakevideo v4lsrc device=/dev/video1 ! ffmpegcolorspace
Right picture is ./gstfakevideo v4lsrc device=/dev/video1 ! video/x-raw-rgb,bpp=24,depth=24 ! sal_autolevels ! ffmpegcolorspace

If anybody interested in this filter then I'll optimize it, do refactoring and publish it, please reply.
psaltz
Is this source still correct - doesn't seem to have a download area (although I do not speak Polish so I may be missing it.

Download sources from: http://mrk.sed.pl/node/22/



oops - found correct source - http://gstfakevideo.googlecode.com/svn/trunk/ gstfakevideo
yagilm
I was getting black image and i solve it by loading gspca with

$cat /etc/modprobe.d/options
CODE
...
options gspca autoexpo=0
...

The problem now is that what i get is too bright.. (It is not very bad.. but still brighter that it should be)
I tried to 'play' with gamma values but it seems nothing changes..
Can i control that with gstfakevideo ?

thank you
Long
I use Logitech QuickCam Express II with gspca drivers, and I had troubles with brightness and color too. Gstfakevideo uses gstreamer engine, so it's possible to add new gstreamer filters in gstfakevideo pipeline. So I have written gstreamer filter for autolevels, you can see it description in my previous post. You can download this filter from http://bozo.ru/salieff/gst_sal_al_plugin.tgz and install it :
CODE
tar zxf gst_sal_al_plugin.tgz
cd gst_sal_al_plugin
./configure --prefix=/usr
make
sudo make install

yagilm
no.. it doesn't work for me.. It does the video even brighter.. I will also test it tomorrow to see the reaction under bright conditions..
deloptes
Hello, seems only questions lately posted, but I have another one.

I have a ATI card and I use the proprietary driver, so skype freezes when I receive video, because there is a known problem with the uvcvideo driver, which supports the camera.

So I was wondering if I cuold use gstfakevideo to make it work with this configuration.

Does somebody has the problem solved this way and can report that it works?

thanks
Long
QUOTE (yagilm @ Sun Jun 1 2008, 00:51)
Go to the original post
no.. it doesn't work for me.. It does the video even brighter.. I will also test it tomorrow to see the reaction under bright conditions..

You can try to play with multup and multdown options, result brightness is target_brightness*multup/multdown. Initial values are multup=3 and multdown=2. You can start from
CODE

... ! sal_autolevels multup=3 multdown=3 ! ...

And increase multdown while picture dark insufficiently smile.png
ciuffi
Hi All!
I can finally use my Logitech Quickcam Web with Skype using gstfakevideo. Unfortunately the integrated mic doesn't work anymore. Here's what I get with the command:

$gstfakevideo v4lsrc device=/dev/video1 ! videoscale ! ffmpegcolorspace

or with /dev/video0 (I created video1 manually but it works the same both ways):

gst.c create_pipeline (155): pipeline created
gst.c create_pipeline (159): pipeline linked
gst.c shim_ioctl (201): request=80685600 nr 0
gst.c shim_ioctl (313): result=-1 error=515 Unknown error 515

gst.c shim_ioctl (201): request=803c7601 nr 1
gst.c shim_ioctl (208): VIDIOCGCAP
gst.c shim_ioctl (313): result=0 error=0 Success


RtApiAlsa: callback thread error (RtApiAlsa: tickStream() error, current state is PREPARED.) ... closing stream.

The only way I can make a nice call is using an external mic pluggend into the in-line of my Sound Blaster 16, but it's a bit uncomfortable. How can I use my USB camera and mic altogether?
Thanks.

Giulio
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.