Posts Tagged ‘webcam’

Installing Webcam Studio for GNU/Linux From Source on Gentoo

WebcamStudio For GNU/Linux creates a virtual webcam that can mix several video sources together and can be used for live broadcasting over Bambuser, UStream or Stickam.

Ensure you have netbeans 6.x installed:

# emerge netbeans

Create and change to the directory /usr/src/wcs:

$ mkdir /usr/src/wcs
$ cd /usr/src/wcs

Check the source out of the CVS repository:

$ svn checkout http://webcamstudio.googlecode.com/svn/trunk/ webcamstudio-read-only

JNA should have been installed with netbeans however the symlink in the trunk/libraries/ directory must be adjusted:

$ rm /usr/src/wcs/webcamstudio-read-only/trunk/libraries/jna.jar
$ ln -s /usr/share/jna/lib/jna.jar /usr/src/wcs/webcamstudio-read-only/trunk/libraries/

Start netbeans. Under Gentoo the Subversion plugin will already be installed and activated. Click Open Project under the File menu and navigate to /usr/src/wcs/webcamstudio-read-only/. Select the trunk directory and click Open Project.

Once the project has loaded click Build Project under the Run menu. It will produce output similar to:

init:
Deleting: /usr/src/wcs/webcamstudio-read-only/trunk/build/built-jar.properties
deps-jar:
Updating property file: /usr/src/wcs/webcamstudio-read-only/trunk/build/built-jar.properties
Compiling 545 source files to /usr/src/wcs/webcamstudio-read-only/trunk/build/classes
Copying 178 files to /usr/src/wcs/webcamstudio-read-only/trunk/build/classes
compile:
Created dir: /usr/src/wcs/webcamstudio-read-only/trunk/dist
Building jar: /usr/src/wcs/webcamstudio-read-only/trunk/dist/WebcamStudio.jar
Copy libraries to /usr/src/wcs/webcamstudio-read-only/trunk/dist/lib.
To run this application from the command line without Ant, try:
java -jar "/usr/src/wcs/webcamstudio-read-only/trunk/dist/WebcamStudio.jar"
jar:
BUILD SUCCESSFUL (total time: 38 seconds)

Make sure the user you are running WebcamStudio as is part of the video group.

$ groups <username>
wheel audio cdrom dialout cdrw usb users portage scanner vboxusers roccat uucp

If the user is not a part of the video group add them:

# usermod -a -G video <username>

Test the application by running:

$ java -jar "/usr/src/wcs/webcamstudio-read-only/trunk/dist/WebcamStudio.jar"

Now build and install the kernel module:

$ cd /usr/src/wcs/webcamstudio-read-only/trunk/vloopback
$ make
# make install
# modprobe webcamstudio

To make the module auto-load on boot append it to conf.d/modules:

# echo "webcamstudio" >> /etc/conf.d/modules

Install the application to /opt/:

# mkdir /opt/webcamstudio
# cp /usr/src/wcs/webcamstudio-read-only/trunk/dist/WebcamStudio.jar /opt/webcamstudio/
# cp -r /usr/src/wcs/webcamstudio-read-only/trunk/dist/lib /opt/webcamstudio/

You may encounter this error if you do not manually build and install libwebcamstudio.so:

OS is Linux
27-Oct-2011 3:48:06 PM java.util.prefs.FileSystemPreferences$2 run
INFO: Created user preferences directory.
Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'webcamstudio': libwebcamstudio.so: cannot open shared object file: No such file or directory
        at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:164)
        at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:237)
        at com.sun.jna.Library$Handler.(Library.java:140)
        at com.sun.jna.Native.loadLibrary(Native.java:374)
        at com.sun.jna.Native.loadLibrary(Native.java:359)
        at webcamstudio.exporter.vloopback.V4L2Loopback$CV4l2.(V4L2Loopback.java:75)
        at webcamstudio.exporter.vloopback.V4L2Loopback.open(V4L2Loopback.java:31)
        at webcamstudio.Main.selectOutputDevice(Main.java:221)
        at webcamstudio.Main.cboVideoOutputsActionPerformed(Main.java:1824)
        at webcamstudio.Main.access$700(Main.java:48)
        at webcamstudio.Main$5.actionPerformed(Main.java:794)
        at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1240)
        at javax.swing.JComboBox.setSelectedItem(JComboBox.java:567)
        at webcamstudio.Main.initVideoDevices(Main.java:192)
        at webcamstudio.Main.(Main.java:92)
        at webcamstudio.Main.main(Main.java:1901)

Return to /usr/src/wcs/webcamstudio-read-only/trunk/vloopback/:

$ cd /usr/src/wcs/webcamstudio-read-only/trunk/vloopback
$ gcc -c -fPIC libwebcamstudio.c -o libwebcamstudio.o    
$ gcc -shared -Wl -o libwebcamstudio.so.1.0.1  libwebcamstudio.o
# cp libwebcamstudio.so.1.0.1 /usr/lib64/
# ln -s /usr/lib64/libwebcamstudio.so.1.0.1 /usr/lib64/libwebcamstudio.so

Substitute lib/ for lib64/ on 32-bit systems. Now the application can be run from the command line:

$ java -jar "/opt/webcamstudio/WebcamStudio.jar"

Stream Webcams and Sound in Flash via RTMP with JW Player

WARNING A lot of folks have reported they can’t get the audio working. I dropped this method for http://code.google.com/p/flash-videoio/ and wouldn’t recomment wasting your time with jwplayer. flash-videoio has JavaScript hooks that let you configure most player/recorder settings on-the-fly which has huge potential when mixed with AJAX.

JW Player is a popular extensible flash (now also available in HTML5) video player. Until versions 4.5 and up it supported grabbing video and audio sources locally attached to the client machine and publishing them to a streaming server (like Flash Media Server, Red5 or C++ RTMP Server) via RTMP. This feature was abandoned due to inherent limitations of the built-in encoding capabilities of Flash Player vs. stand-alone encoding software like Flash Live Media Encoder. This situation doesn’t suit everyone however; in a video conferencing scenario users must be able to connect with as little hassle as possible and forcing them to download specialized software presents a significant enough accessibility barrier to warrant swallowing the quality losses associated with Flash Player encoding.

Using version 4.4.198 available at http://developer.longtailvideo.com/trac/browser/tags/mediaplayer-4.4?rev=885, an RTMP server and the latest version of JW Player (available here) we will make a simple broadcast and view page. Extract the contents of these archives to jwpublisher/ and jwplayer/ respectively.

Let rtmp://xxx.xxx.xxx.xxx/live be the URI to your working FMS/Red5/C++ RTMP Server application and livestream be the name of our stream. Create an index.html in jwpublisher/ to reflect:

<html lang="en">
  <head>
    <script src="swfobject.js"></script>
    <script type="text/javascript">
      var flashvars =
      {
        'streamer':                     'rtmp://xxx.xxx.xxx.xxx/live',
        'file':                         'livestream',
        'type':                         'camera',
        'controlbar':                   'bottom',
        'stretching':                   'none',
        'frontcolor':                   '86C29D',  // text & icons                  (green)
        'backcolor':                    '849BC1',  // playlist background           (blue)
        'lightcolor':                   'C286BA',  // selected text/track highlight (pink)
        'screencolor':                  'FFFFFF',  // screen background             (black)
        'id':                           'playerID',
        'autostart':                    'true'
      };

      var params =
      {
        'allowfullscreen':              'true',
        'allowscriptaccess':            'always',
        'bgcolor':                      '#FFFFFF'
      };

      var attributes =
      {
        'id':                           'playerID',
        'name':                         'playerID'
      };
      swfobject.embedSWF('player.swf', 'player', '320', '260', '9.0.124', false, flashvars, params, attributes);
    </script>
  </head>
  <body>
    <div id="playercontainer" class="playercontainer"><a id="player" class="player" href="http://get.adobe.com/flashplayer/">Get the Adobe Flash Player to see this video.</a></div>
  </body>
</html> 

Now create an index.html in jwplayer/:

<html>
<head>
<script type='text/javascript' src='jwplayer.js'></script>
</head>
<body>
<div id='mediaspace'>This text will be replaced</div>
<script type='text/javascript'>
  jwplayer('mediaspace').setup({
    'flashplayer': 'player.swf',
    'type': 'rtmp',
    'streamer': 'rtmp://xxx.xxx.xxx.xxx/live',
    'autostart': 'true',
    'bufferlength': '3,
    'file': 'livestream',
    'controlbar': 'none',
    'width': '320',
    'height': '260'
  });
</script>
</body>
</html>

Load jwpublisher/ in your browser. Flash will ask for access to your webcam if it can find one. Once the video appears load jwplayer/ and allow a few seconds for buffering. If your streaming server works you should now be watching a slightly delayed version of the video being captured from your webcam.

Return top
foxpa.ws
Online Marketing Toplist
Internet
Technology Blogs - Blog Rankings

Internet Blogs - BlogCatalog Blog Directory

Technology blogs
Bad Karma Networks

Please Donate!


Made in Canada  •  There's a fox in the Gibson!  •  2010-12