WebM and VP8 streaming live from Flumotion

We did it! Today we managed to get Flumotion to stream live over http a test signal encoded in Vp8 and muxed in the WebM container.

The below screenshot shows Firefox webm developer preview playing it back in browser!

It requires patches to GStreamer and to Flumotion. So what you need is:

Thanks to Google for opening up vp8 and throwing the HTML5 video tag’s codec race wide open! Thanks to Collabora (especially Sebastian Dröge) and Entropy Wave (especially David Schleef) for getting the GStreamer plugins in shape! Thanks to Mark Nauwelaerts for fixing bits in the matroska muxer so it doesn’t output small buffers then seek every ebml tag! Thanks to Andoni Morales and Xavier Queralt for also putting in a lot of time after hours to work together to have the streaming working quick-smart.

I believe we are the first free software live streaming solution to have VP8 in WebM streaming live to browsers, if we are not we are definitely one of the first. This makes me very proud. We still have work to do to clean up the patches we have done and push them upstream to GStreamer and to Flumotion. There is still some work to do in cleaning up the patches and get them upstream in GStreamer and Flumotion but the hard part is done.

UPDATE: All the patches have landed into GStreamer and Flumotion so no need to use my repositories any more, just get from upstream! Also we have an official demo up at  http://www.flumotion.com/demosite/webm/

45 Responses to “WebM and VP8 streaming live from Flumotion”

  1. wulczer Says:

    Awesomeness to the nth degree!

  2. DZPM Says:

    Nice! :)

  3. pepribas Says:

    great!!

  4. WebM & VP8 Streaming Live From Flumotion Says:

    […] We believe we are the first free software live streaming solution to have VP8 in WebM streaming live to browsers, if we are not we are definitely one of the first. Find out how we did it here. […]

  5. Gerbrand Oudenaarden Says:

    Brilliant!

  6. walo Says:

    Would it be possible to stream to an icecast2 with vp8???????

    thanks.

  7. admin Says:

    walo, I don’t think icecast2 supports vp8 in ogg or vp8 in webm. Flumotion with the git rep mentioned in this blog post supports both.

  8. alvinator Says:

    Great job guys! It makes me proud to be a Flumotion employee. :)

  9. phil Says:

    Where’s the PR? :D

    Just joking, good work!

  10. walo Says:

    ok, but, ¿can i install a flumotion server? or it isn’t free???? i want to stream in vp8 from a webcam client with flumotion-admin to a server, so ¿what do i have to do?

    yo [at] alvarolara [dott] com is my email address please, contact me!!!

    thanx

  11. Kapil Agrawal Says:

    Woho, this is cool Zaheer.
    Congrats :)

  12. Edward Hervey Says:

    Awesome. I had no idea webm (or rather matroska) was streaming-friendly. And yay on Mark fixing the muxer !

    Regarding the icecast question, if it can silently forward formats it doesn’t know about, one should be able to use a gstreamer pipeline (with latest -base) to create a ogg/vorbis/vp8 stream and push it out to icecast for streaming. Problem is that the ogg mapping for vp8 is still unofficial (read “only gstreamer-based players should be able to handle it”).

    Carry on the good work :)

  13. Richard Kimber Says:

    This is great. Are there any implications for adaptive bitrate streaming?

  14. Lino Says:

    That’s excellent (and very quick) work!

    Thanks for this, I can’t wait to see all the code unleashed in stable releases.

  15. thomas.apestaart.org » Flumotion streaming VP8 in Ogg and WebM Says:

    […] company), a bunch of our hackers got excited too and executed on the match made in heaven. Zaheer’s blog has all the details, and yesterday all I did was check out a bunch of code and run this simple […]

  16. pdfan Says:

    while select webm flumotion shows error message:
    Worker ‘localhost’ is missing GStreamer element ‘vp8enc’.
    Please install the necessary GStreamer plug-ins that provide these elements and restart the worker.

    devices are webcam and soundcard, and the ogg works.
    all the package are installed with some thing like the following:

    autogen.sh –prefix=/usr
    make install

    how to setup GStreamer with support for element ‘vp8enc’?

  17. pdfan Says:

    all packages are from the git provided in ths page

  18. pdfan Says:

    so I guess I might have missed some configure args concerning webm/vp8

  19. admin Says:

    pdfan, do you have /usr/lib/libvpx.so on your system?

  20. pdfan Says:

    yes, libvpx is installed, and ffmpeg installed with google webm patch, and it can save stream to webm file, but the live feed not work.

    your demo just plays several seconds in my webm firefox and then stalled foreve.

  21. xpto Says:

    I need support webm on my Apache, how to make this?

  22. ylatuya Says:

    @pdfan: Do you have the vp8 encoder gstreamer plugin installed too?
    The libvpx build system is horrible and ‘make install’ doesn’t install the headers in the right place and most likely it hasn’t been selected to be built because the headers were not found by the gstreamer’s ./configure script
    Chek that when you run ./configure for gst-plugins-bad, this plugin is marked to be compiled.
    For instance we needed to copy manually the libvpx headers to /usr/local/include/libvpx.

  23. Zaheer Abbas Merali » Blog Archive » N900 and Maemo5 playing vp8/webm live stream Says:

    […] Friday, we got flumotion to stream vp8/webm live.Details on a previous blog post. On the weekend and today (Monday), I set up a live stream from a TV channel from DVB to output in […]

  24. N900 and Maemo5 playing vp8/webm live stream | Maemo Nokia N900 Says:

    […] Friday, we got flumotion to stream vp8/webm live.Details on a previous blog post. On the weekend and today (Monday), I set up a live stream from a TV channel from DVB to output in […]

  25. pdfan Says:

    gentoo linux: gstreamer search libvpx *h in /usr/include/vpx, so the *h files need be put in /usr/include/vpx.

    with webm the vp8 start work, but the URL is inactive, after a while (no more than 1 minute) encoder-video will stop. debug show 3 error messages:

    1 encoder-video error message: after a while

    Internal error in component.
    Posted on Wed 26 May 2010 02:08:20 AM CST.

    Debug information:
    failure twisted.spread.pb.PBConnectionLost: [Failure instance: Traceback (failure with no frames): : Connection was closed cleanly.
    ]

    2. mixer-audio-video: at start

    Could not setup component.
    Posted on Wed 26 May 2010 02:07:19 AM CST.

    Debug information:
    failure at flumotion/component/feedcomponent.py:348: create_pipeline(): componet “muxer” can not find attribule “is-live”

    3. overlay-video: at start

    Internal GStreamer error.
    Posted on Wed 26 May 2010 02:07:20 AM CST.

    Debug information:
    Internal GStreamer error
    gst-stream-error-quark: 1
    gstbasesrc.c(2550): gst_base_src_loop (): /GstPipeline:pipeline-overlay-video/GstAppSrc:source:
    streaming task paused, reason not-negotiated (-4)

    with ogg, it works well, the URL is active, but still shows one error at start, the same as error message in overlay-video.

    Internal GStreamer error.
    Posted on Wed 26 May 2010 02:07:20 AM CST.

    Debug information:
    Internal GStreamer error
    gst-stream-error-quark: 1
    gstbasesrc.c(2550): gst_base_src_loop (): /GstPipeline:pipeline-overlay-video/GstAppSrc:source:
    streaming task paused, reason not-negotiated (-4)

  26. ylatuya Says:

    @pdfan: the ‘is-live’ property is part of the patches added by zaheer and xqueralt to the matroska muxer. If this property is missing that’s because you are not using zhaeer’s gst-plugins-good branch from github ;)

  27. pdfan Says:

    I reinstalled gobject-introspection, pygobject, pygi, gst-python, libvpx, gstreamer, gst-plugins-base/bad/good(zaheer’s)/ugly/etc. flumotion. webm still not work with 2 error messages:

    ========= flumotion-admin GUI error messages
    1.muxer-audio-video

    Could not setup component.
    Posted on Wed 26 May 2010 10:40:37 AM CST.

    Debug information:
    failure at flumotion/component/feedcomponent.py:348: create_pipeline(): no property “is-live” in element “muxer”

    2.overlay-video

    Internal GStreamer error.
    Posted on Wed 26 May 2010 10:40:38 AM CST.

    Debug information:
    Internal data flow error.
    gst-stream-error-quark: 1
    gstbasesrc.c(2550): gst_base_src_loop (): /GstPipeline:pipeline-overlay-video/GstAppSrc:source:
    streaming task paused, reason not-negotiated (-4)

  28. pdfan Says:

    flumotion-admin -d5 -v DEBUG
    ========= DEBUG component moods(just enumerated not in the order showed up):

    encoder-audio 0
    encoder-audio 2
    encoder-audio 3
    encoder-video 1
    encoder-video 2
    encoder-video 3
    http-audio-video 1
    http-audio-video 2
    http-audio-video 3
    muxer-audio-video 3
    muxer-audio-video 5
    overlay-video 2
    overlay-video 3
    overlay-video 5
    porter-http 0
    porter-http 2
    porter-http 3
    producer-audio 0
    producer-audio 2
    producer-audio 3
    producer-video 0
    producer-video 2
    producer-video 3

    ========= DEBUG warnings/errors/fails
    LOG [31296] twisted May 26 10:39:58 [Broker,client] /usr/lib64/flumotion/python/flumotion/admin/gtk/adminwindow.py:642: gtk.GtkWarning: Refusing to add non-unique action ‘user@localhost:51950′ to action group ‘Actions’
    LOG [31296] twisted May 26 10:39:58 [Broker,client] /usr/lib64/flumotion/python/flumotion/admin/gtk/adminwindow.py:642: gtk.GtkWarning: Refusing to add non-unique action ‘user@localhost:47152′ to action group ‘Actions’
    LOG [31296] twisted May 26 10:39:58 [Broker,client] /usr/lib64/flumotion/python/flumotion/admin/gtk/adminwindow.py:642: gtk.GtkWarning: Refusing to add non-unique action ‘user@localhost:59276′ to action group ‘Actions’
    LOG [31296] twisted May 26 10:39:58 [Broker,client] /usr/lib64/flumotion/python/flumotion/admin/gtk/adminwindow.py:642: gtk.GtkWarning: Refusing to add non-unique action ‘user@localhost:35721′ to action group ‘Actions’
    LOG [31296] twisted May 26 10:40:04 [Broker,client] /root/.flumotion/scenario-steps/f650be69fc5095363a9d609d5bae1308/flumotion/scenario/steps/productionsteps.py:155: exceptions.DeprecationWarning: Use the new widget gtk.Tooltip
    LOG [31296] twisted May 26 10:40:04 [Broker,client] /root/.flumotion/scenario-steps/f650be69fc5095363a9d609d5bae1308/flumotion/scenario/steps/productionsteps.py:157: exceptions.DeprecationWarning: Use the new widget gtk.Tooltip
    LOG [31296] twisted May 26 10:40:04 [Broker,client] /root/.flumotion/scenario-steps/f650be69fc5095363a9d609d5bae1308/flumotion/scenario/steps/productionsteps.py:159: exceptions.DeprecationWarning: Use the new widget gtk.Tooltip
    DEBUG [31296] “user@localhost:34616″ adminmodel May 26 10:40:18 baseavatar : callRemote(getEntryByType, u’webm-muxer’, ‘wizard’): (flumotion/common/medium.py:155)
    LOG [31296] twisted May 26 10:40:20 [Broker,client] /usr/lib64/flumotion/python/flumotion/ui/kiwipatches.py:43: gtk.GtkWarning: GtkSpinButton: setting an adjustment with non-zero page size is deprecated
    LOG [31296] twisted May 26 10:40:35 [Broker,client] /usr/lib64/flumotion/python/flumotion/admin/gtk/adminwindow.py:1230: exceptions.DeprecationWarning: Please use the set_ kwarg instead
    LOG [31296] components May 26 10:40:37 stateSet: state , key messages, value (flumotion/admin/gtk/componentlist.py:368)
    LOG [31296] components May 26 10:40:38 stateSet: state , key messages, value (flumotion/admin/gtk/componentlist.py:368)
    LOG [31296] twisted May 26 10:40:39 [Broker,client] /usr/lib64/python2.6/site-packages/kiwi/ui/objectlist.py:967: exceptions.DeprecationWarning: Use the new widget gtk.Tooltip
    DEBUG [31296] adminwindow May 26 10:40:47 have message (flumotion/admin/gtk/adminwindow.py:1252)
    DEBUG [31296] adminwindow May 26 10:40:47 message id overlay-video-gst-stream-error-quark-1 (flumotion/admin/gtk/adminwindow.py:1253)
    DEBUG [31296] adminwindow May 26 10:41:12 have message (flumotion/admin/gtk/adminwindow.py:1252)
    DEBUG [31296] adminwindow May 26 10:41:12 message id GStreamer error: could not parse component pipeline. (flumotion/admin/gtk/adminwindow.py:1253)
    LOG [31296] twisted May 26 10:41:12 [-] /usr/lib64/flumotion/python/flumotion/admin/gtk/adminwindow.py:337: gobject.Warning: gsignal.c:2390: instance `0xcc9180′ has no handler with id `119′
    LOG [31296] components May 26 10:41:38 stateSet: state , key messages, value (flumotion/admin/gtk/componentlist.py:368)
    LOG [31296] twisted May 26 10:41:53 [-] /usr/lib64/flumotion/python/flumotion/admin/gtk/statusbar.py:76: exceptions.DeprecationWarning: use gtk.Statusbar.remove_message
    LOG [31296] twisted May 26 10:41:57 [Broker,client] /usr/lib64/flumotion/python/flumotion/admin/gtk/statusbar.py:100: exceptions.DeprecationWarning: use gtk.Statusbar.remove_message
    LOG [31296] components May 26 10:41:57 stateSet: state , key messages, value (flumotion/admin/gtk/componentlist.py:368)
    LOG [31296] twisted May 26 10:42:05 [-] /usr/lib64/flumotion/python/flumotion/admin/gtk/adminwindow.py:898: exceptions.DeprecationWarning: Please call disconnectByFunction instead
    LOG [31296] twisted May 26 10:42:05 [-] /usr/lib64/flumotion/python/flumotion/admin/gtk/adminwindow.py:899: exceptions.DeprecationWarning: Please call disconnectByFunction instead
    LOG [31296] twisted May 26 10:42:05 [-] /usr/lib64/flumotion/python/flumotion/admin/gtk/adminwindow.py:900: exceptions.DeprecationWarning: Please call disconnectByFunction instead
    DEBUG [31296] FPBClientFactory May 26 10:42:05 Lost connection to IPv4Address(TCP, ‘localhost’, 34616): failure : Connection to the other side was lost in a non-clean fashion: Connection lost. (flumotion/admin/admin.py:75)
    LOG [31296] twisted May 26 10:42:05 [Broker,client] connection lost to IPv4Address(TCP, ‘localhost’, 34616), reason >

  29. pdfan Says:

    how to set flumotion to use gst-plugins-good only and not use gst-plugins-base/bad/ugly

  30. solca Says:

    First was Cherokee HTTP server:

    http://www.alobbs.com/1386/Streaming_WebM_VP8_one_day_later.html

    Anyway you rock too!

  31. pdfan Says:

    ========= source files containing ‘is-live’
    # find ./gstreamer ./gst-plugins-base ./gst-plugins-bad ./gst-plugins-good ./flumotion -type f | xargs grep -i is-live | cut -d: -f1 | sort -u | grep ^[.] | grep -E “[.]c$|[.]h$” | grep -v /tests/
    ./gst-plugins-bad/gst/asfmux/gstasfmux.c
    ./gst-plugins-base/gst-libs/gst/app/gstappsrc.c
    ./gst-plugins-base/gst/audiotestsrc/gstaudiotestsrc.c
    ./gst-plugins-base/gst/videotestsrc/gstvideotestsrc.c
    ./gst-plugins-good/ext/soup/gstsouphttpsrc.c
    ./gst-plugins-good/gst/flv/gstflvmux.c
    ./gstreamer/plugins/elements/gstfakesrc.c

    ========= source files containing ‘webm’
    # find ./gstreamer ./gst-plugins-base ./gst-plugins-bad ./gst-plugins-good ./flumotion -type f | xargs grep -i webm | cut -d: -f1 | sort -u | grep ^[.] | grep -E “[.]c$|[.]h$” | grep -v /tests/
    ./gst-plugins-base/gst-libs/gst/pbutils/descriptions.c
    ./gst-plugins-base/gst/typefind/gsttypefindfunctions.c
    ./gst-plugins-good/gst/matroska/matroska-demux.c
    ./gst-plugins-good/gst/matroska/matroska-ids.h
    ./gst-plugins-good/gst/matroska/matroska-mux.c

  32. pdfan Says:

    ========= there’s no is-live in ‘webmmux: Element Properties:’
    # gst-inspect-0.10 -a |grep webm
    matroskademux: video/webm
    webmmux: Factory Details:
    webmmux: Long name: WebM muxer
    webmmux: Class: Codec/Muxer
    webmmux: Description: Muxes video/audio/subtitle streams into a WebM stream
    webmmux: Author(s): GStreamer maintainers
    webmmux: Rank: primary (256)
    webmmux:
    webmmux: Plugin Details:
    webmmux: Name: matroska
    webmmux: Description: Matroska stream handling
    webmmux: Filename: /usr/lib64/gstreamer-0.10/libgstmatroska.so
    webmmux: Version: 0.10.22.2
    webmmux: License: LGPL
    webmmux: Source module: gst-plugins-good
    webmmux: Binary package: Gentoo GStreamer Ebuild
    webmmux: Origin URL: http://www.gentoo.org
    webmmux:
    webmmux: GObject
    webmmux: +—-GstObject
    webmmux: +—-GstElement
    webmmux: +—-GstMatroskaMux
    webmmux: +—-GstWebMMux
    webmmux:
    webmmux: Implemented Interfaces:
    webmmux: GstTagSetter
    webmmux:
    webmmux: Pad Templates:
    webmmux: SINK template: ‘video_%d’
    webmmux: Availability: On request
    webmmux: Has request_new_pad() function: gst_matroska_mux_request_new_pad
    webmmux: Capabilities:
    webmmux: video/x-vp8
    webmmux: width: [ 16, 4096 ]
    webmmux: height: [ 16, 4096 ]
    webmmux: framerate: [ 0/1, 2147483647/1 ]
    webmmux:
    webmmux: SINK template: ‘audio_%d’
    webmmux: Availability: On request
    webmmux: Has request_new_pad() function: gst_matroska_mux_request_new_pad
    webmmux: Capabilities:
    webmmux: audio/x-vorbis
    webmmux: channels: [ 1, 2147483647 ]
    webmmux: rate: [ 1, 2147483647 ]
    webmmux:
    webmmux: SRC template: ‘src’
    webmmux: Availability: Always
    webmmux: Capabilities:
    webmmux: video/webm
    webmmux:
    webmmux:
    webmmux: Element Flags:
    webmmux: no flags set
    webmmux:
    webmmux: Element Implementation:
    webmmux: Has change_state() function: gst_matroska_mux_change_state
    webmmux: Has custom save_thyself() function: gst_element_save_thyself
    webmmux: Has custom restore_thyself() function: gst_element_restore_thyself
    webmmux:
    webmmux: Element has no clocking capabilities.webmmux:
    webmmux: Element has no indexing capabilities.
    webmmux: Element has no URI handling capabilities.
    webmmux:
    webmmux: Pads:
    webmmux: SRC: ‘src’
    webmmux: Implementation:
    webmmux: Has custom eventfunc(): 0x7f7fbeb6f780
    webmmux: Pad Template: ‘src’
    webmmux:
    webmmux: Element Properties:
    webmmux: name : The name of the object
    webmmux: flags: readable, writablewebmmux:
    webmmux: String. Default: null Current: “webmmux0″
    webmmux: writing-app : The name the application that creates the matroska file.
    webmmux: flags: readable, writablewebmmux:
    webmmux: String. Default: null Current: “GStreamer Matroska muxer”
    webmmux: version : This parameter determines what Matroska features can be used.
    webmmux: flags: readable, writablewebmmux:
    webmmux: Integer. Range: 1 – 2 Default: 2 Current: 2
    webmmux: min-index-interval : An index entry is created every so many nanoseconds.
    webmmux: flags: readable, writablewebmmux:
    webmmux: Integer64. Range: 0 – 9223372036854775807 Default: 0 Current: 0

    ========= all Elements with ‘is-live’ Property
    # gst-inspect-0.10 -a | grep -i is-live
    fakesrc: is-live : True if the element cannot produce data in PAUSED
    videotestsrc: is-live : Whether to act as a live source
    appsrc: is-live : Whether to act as a live source
    audiotestsrc: is-live : Whether to act as a live source
    souphttpsrc: is-live : Act like a live source
    asfmux: is-live : Whether this stream should be treated as a live stream, meaning that it doesn’t need an index or header updates when done.
    gltestsrc: is-live : Whether to act as a live source

  33. pdfan Says:

    http://www.alobbs.com/1386/Streaming_WebM_VP8_one_day_later.html is file streaming not live streaming as you see the same video every time you start over it. but zaheer’s page plays the realtime TV and you see different news every time your start over it.

  34. admin Says:

    pdfan, you need the webmlive branch from my github.

    Also we were the first to do LIVE streaming of webm, Cherokee just does serving of files at a speed just above the bitrate of the file but still files.

  35. pdfan Says:

    maybe I missed a patch that set the is-live property for webm?

  36. pdfan Says:

    ======== sources checked out
    git clone git://anongit.freedesktop.org/gstreamer/gstreamer gstreamer
    git clone git://anongit.freedesktop.org/gstreamer/gst-plugins-base gst-plugins-base
    git clone git://anongit.freedesktop.org/gstreamer/gst-plugins-bad gst-plugins-bad
    git clone git://github.com/zaheerm/gst-plugins-good gst-plugins-good
    git clone git://github.com/zaheerm/Flumotion flumotion

    how to check out webmlive and how to install it?

  37. pdfan Says:

    # grep git: *
    gst-plugins-good.doap:

    autogen.sh will git update some thing ( the common folder) from “git://anongit.freedesktop.org/gstreamer/gst-plugins-good” instead of git://github.com/zaheerm/gst-plugins-good

  38. admin Says:

    @pdfan

    cd gst-plugins-good ; git checkout webmlive

  39. pdfan Says:

    # git checkout webmlive

    then is-live is ok, but both ogg/webm URL always inactive. DEBUG shows:

    WARN [14950] “Webcam” default May 26 17:58:01 something bad happened: no framerate selected? (flumotion/component/producers/webcam/wizard_gtk.py:188)

    repeated many times.

  40. admin Says:

    @pdfan looks like an issue with the webcam producer, please come on #fluendo on irc.freenode.net in irc and ask there, we can give interactive help hopefully.

  41. ylatuya Says:

    @solca: what Cherokee did is not live streaming, but streaming a static file through progressive download, which is very different.

  42. pdfan Says:

    # ldd /usr/lib64/gstreamer-0.10/libgstvp8.so
    linux-vdso.so.1 => (0x00007fffdb5ff000)
    libgsttag-0.10.so.0 => /usr/lib/libgsttag-0.10.so.0 (0x00007fbf8793a000)
    libgstvideo-0.10.so.0 => /usr/lib/libgstvideo-0.10.so.0 (0x00007fbf87731000)
    libgstbase-0.10.so.0 => /usr/lib/libgstbase-0.10.so.0 (0x00007fbf874ef000)
    libgstreamer-0.10.so.0 => /usr/lib/libgstreamer-0.10.so.0 (0x00007fbf87203000)
    libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x00007fbf86fb7000)
    libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0x00007fbf86db2000)
    libxml2.so.2 => /usr/lib/libxml2.so.2 (0x00007fbf86a50000)
    libdl.so.2 => /lib/libdl.so.2 (0x00007fbf8684c000)
    libz.so.1 => /lib/libz.so.1 (0x00007fbf86633000)
    libm.so.6 => /lib/libm.so.6 (0x00007fbf863af000)
    libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0x00007fbf861aa000)
    libpthread.so.0 => /lib/libpthread.so.0 (0x00007fbf85f8c000)
    librt.so.1 => /lib/librt.so.1 (0x00007fbf85d83000)
    libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007fbf85a7c000)
    libc.so.6 => /lib/libc.so.6 (0x00007fbf85705000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fbfa80bc000)

  43. pdfan Says:

    libvpx bug is the cause: https://bugzilla.gnome.org/show_bug.cgi?id=619916 , it will be fixed soon

  44. Olek Says:

    Please show us something from real webcam, with preview in Firefox and in webcam program! :) Nice.

  45. walo Says:

    Hi all:

    These days i’ve been understandig how flumotion works, and now, i’ve got flumotion configure and working, with ogg theora, now i want to stream with vp8.

    I’ve installed 0.62 version of flumotion, all the gstreamers, the libvpx, but nothing else matters, in flumotion’s assistant, it doesn’t appear the webm/vp8 codec, but if i type in a shell gst-inspect | grep vp8, it appears:

    vp8: vp8dec: On2 VP8 Decoder
    vp8: vp8enc: On2 VP8 Encoder

    so i think the codec is installed.

    How can i configure flumotion in order to have webm/vp8 streaming???

    THanks

Leave a Reply