This page explains how to use FireWire cameras with Linux and

News

  1. Capturing program for ffmpeg was significantly extended (Oct. 25, 2003.)
  2. Complete rewrite of the web page. Now explains DV camcorders too.
  3. You can use a FireWire camera as a Video4Linux device!

There are two types of FireWire video cameras

One is called DV camcorder, which usually has recording tape or disk inside, and another is called digital camera, which has no storage device inside. They use totally different software interface and you have to choose appropriate library (software interface) to use your camera.

Gnomemeeting

I will explain how to compile Gnomemeeting for using your FireWire camera. You have to install for DV camcorder, and for digital camera.
Gnomemeeting requires PWLib. So I explain compilation of PWLib.

Compilation of PWLib

Add --enable-firewireavc for DV camcorder or --enable-firewiredc to configure, then run make. This explanation applies to PWLib 1.5.2.

Compilation of Gnomemeeting

Set environment variables CXX="g++ -DTRY_1394AVC" LIBS="-lraw1394 -lavc1394 -lrom1394 -ldv" for DV camcorder and CXX="g++ -DTRY_1394DC" LIBS="-lraw1394 -ldc1394_control" for digital camera before running configure. This compilation method applies to Gnomemeeting 0.98.5.

How to use your camera

After starting Gnomemeeting, select video device in the preference menu appropriately.

Ohphone

Ohphone is another video conference program. To use your camera with ohphone, compile PWLib as above. Then compile ohphone with -DTRY_1394AVC -lraw1394 -lavc1394 -lrom1394 -ldv for DV camcorder, and with -DTRY_1394DC -lraw1394 -ldc1394_control for digital camera. Use --videodevice option to specify the device filename of the camera.

FFmpeg

DV camcorder

You can use you camcorder just adding -dv1394.

Digital camera

ffmpeg cannot capture images directly from a FireWire camera. So we need a program that captures images from a FireWire camera and feeds them into ffmpeg.

I made such a small program here. This program outputs images to standard output in the ffmpeg "rawvideo" format. This can be used as follows:

dc1394-ffmpeg -d /dev/video1394/0 -r 30 -s 320x240 -c 150 | ffmpeg -r 30 -s 320x240 -f rawvideo -i pipe: /tmp/test.mpg

Then you get an MPEG movie in /tmp/test.mpg. Full usage of dc1394-ffmpeg can be found by running it without options.

Once you succeeded in realtime encoding by ffmpeg, you can distribute live stream by

ffserver -f doc/ffserver.conf &
dc1394-ffmpeg -d /dev/video1394/0 -r 30 -s 320x240 | ffmpeg -r 30 -s 320x240 -f rawvideo -i pipe: -f audio_device -i /dev/dsp http://localhost:8090/feed1.ffm


Note that "-f audio_device -i /dev/dsp" is added. The example configuration of ffserver requires audio stream. If you don't have audio input, edit ffserver.conf and remove "-f audio_device -i /dev/dsp".

Video4Linux device

I am told that Coriander can make a digital camera look like a Video4Linux device, and make the camera usable with GnomeMeeting. FFmpeg, GnomeMeeting, and ohphone supports Video4Linux devices, and you can use a digital camera as a usual Video4Linux device.

Ryutaroh Matsumoto <Email Address>