RESISTANCE IS FUTILE !!!

Forward 3 steps ?

WhoooHooo :

This is a streamed live image from a Java Application which opened the webcam of my laptop - streamed over the network to a Java client application .. Yay .. I think this is progress..   It's supposed to be H264, I'll need to check on the details.   Endgoal is to have a live stream with audio & video from MRL Service to a webpage (HTML5) ...  So still have some more steps to look into...

The current set of dependencies is :

Webcam ->  webcam-capture.sarxos.pl  - this looks to be the shiznit on Java Webcam ... big projects use it, the project seems to be very active, and it worked out of the box for me YAY ... (round of applause for Sarxos.pl !!!!

Streaming - Xuggler - this one scares me a little, I remember eons ago (in tech time) it seemed like the promise of Java AV streaming ... but it died a sudden death .. now there seems to be fragments lingering on in github, with the word deprecated being thrown around...

As far as I can make out - this does not include the scarey yet powerful beast FFMPEG ...

More news to come ...

Trying to stream FFMPEG using the new JavaCV 1.1 & OpenCV3.0 ..  Grrr ... Back two steps

22:41:17.434 [opencv_videoProcessor] INFO  c.m.opencv.OpenCVFilterFFmpeg - initRecorder ffmpeg.1446619277434.mp4
Exception in thread "opencv_videoProcessor" java.lang.NoClassDefFoundError: Could not initialize class org.bytedeco.javacpp.avutil
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:266)
at org.bytedeco.javacpp.Loader.load(Loader.java:413)
at org.bytedeco.javacpp.Loader.load(Loader.java:381)
at org.bytedeco.javacpp.avcodec$AVPacket.<clinit>(avcodec.java:1405)
at org.bytedeco.javacv.FFmpegFrameRecorder.<init>(FFmpegFrameRecorder.java:149)
at org.myrobotlab.opencv.OpenCVFilterFFmpeg.initRecorder(OpenCVFilterFFmpeg.java:90)
at org.myrobotlab.opencv.OpenCVFilterFFmpeg.imageChanged(OpenCVFilterFFmpeg.java:70)
at org.myrobotlab.opencv.OpenCVFilter.preProcess(OpenCVFilter.java:109)
at org.myrobotlab.opencv.VideoProcessor.run(VideoProcessor.java:459)
at java.lang.Thread.run(Thread.java:722)
 

I'm guessing I don't have the msvc runtime which was used to compile ffmpeg... Wonder if this relates to kwatters problem at all....

 

 

OpenCV can be a big pain ! ...  Because it was originally written in C++ and bridging so much code into MyRobotLab's Java can be a logistical nightmare.
Thanks to the genius of Samuel Audet and his JavaCPP & JavaCV projects - much of OpenCV is accessable ... but it still can be a big pain in the ass...  Right now on the develop branch Alessandruino & I can get it to work (albiet at ~15fps), but its giving Captain Kwatters a big black screen of nothingness :(

One of the naturally nice parts of MRL (MyRobotLab) framework is that we can "evolve" by adding new "better" services.  MRL is like a toy chest, and the services like OpenCV is one of the many toys.  If the toy is broken all the time, maybe its time to add a "better" toy. Bwa ha haaaa !  

I've been keeping my eye on BoofCV.  I remember loading an Android demo and being very impressed with the speed and capability. 

So here is the "beginnings" of the new BoofCV Service !!!   29 FPS and only 5 minutes getting all the dependencies together !   Whoa !

References:


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
kwatters's picture

mrl services / pub/sub interfaces for streaming data

streaming data is a bit different from interrupt driven data...  Primary use case is to remotely attach to streaming video data with low latency.  All efforts in that direction are amazing!  Thank you GroG! 

We have a firehose of information like this, streams of audio/video that demand that they're delivered ontime..  I wonder if there's some improvements to the framework that would allow for more effecient passing of streams between services.. not just objects.. (streams don't serialize well.. i get that, that's why this is a difficult topic.)

(I know this could become a big change to how things work, I just want to help start a conversation around handling streaming data in mrl.)