Since I seemed to be at a dead-end with VLC I went back to the node.js / Gstreamer webm example I got working and tried to get it to read from a streaming source and convert to webm (since I already have that part working; only change one item at a time!).

After some tweaking I got it to read from the WMS mmsh stream (in WMV9 format) and convert to webm and display on Chrome and the Nexus 4 (but not the smaller Androids).

Here are the arguments that are currently working. Note that I still have the audio test source, so it’s not converting the audio yet.

tcpServer.listen(function() {
    var cmd = 'gst-launch-0.10';
    var options = null;
    var args =
    ['mmssrc', 'location=mmsh://', //'is-live=1',
    '!', 'asfdemux',
    '!', 'ffdec_wmv3',
//      '!', 'video/x-raw-rgb,framerate=30/1',
    '!', 'ffmpegcolorspace',
    '!', 'vp8enc', 'speed=2',
    '!', 'queue2',
    '!', 'm.', 'audiotestsrc', 'is-live=1',
    '!', 'audioconvert',
    '!', 'vorbisenc',
    '!', 'queue2',
    '!', 'm.', 'webmmux', 'name=m', 'streamable=true',
    '!', 'tcpclientsink', 'host=localhost',

Okay, what’s next? What have I done?

  • I’ve shown I can read MMSH from the existing setup with Gstreamer
  • I’ve shown I can transcode WMV9/asf with Gstreamer, at lest the video portion
  • I’ve shown I can generate webm video for my Nexus 4 and Chrome with Gstreamer

I need to see about at least some of the following:

  • Can Gstreamer produce h264/mp4a/mp4 that works in Android (and ultimately iOS)
  • As a fallback for older browsers, can Flash read whatever I end up feeding to mobile devices?
  • Can I use something to receive RTMP stream from Wirecast, and if I can do I even need to transcode at all?
  • What servers do I need to serve video/mp4 over rstp, rtp, http or even hls if possible?
  • Do any clients besides Flash read RTMP, and is that something I want to look at? (I think no in both cases)