Skip to main content
Participant
October 31, 2010
Question

Compositing, Stitching, Mixing?

  • October 31, 2010
  • 1 reply
  • 1180 views

Hello

Wondering if FMS/Encoder could handle the following scenario in a relatively 'out of the box' way:

Given:

- Source video media on the server/web storage, either as solid assets or pre-fragmented into defined 'clip' segments

- Source 'overlay' media on the server/web storage, as video-with-alpha assets

- Source audio media on the server/web storage

Given a '3 layer' playlist where the desired outcome is to:

- Stitch together the selected clips (regions from within the source video media) from various sources into a single, solid video asset.

- Composite the 'overlay' media using normal alpha compositing into that asset at variable times (defined by the user).

- Mix the audio media into the solid asset (mixing with any audio contained in the original source clips).

Producing a cached, solid video asset that can be viewed/transcoded/retrieved from the server.

I don't see anything about compositing videos or mixing an audio into a stream. The desired output format would be high quality (as a source for later transcoding, so ... as close to HD as possible). Realtime compositing/rendering is not a requirement.

The following scenarios come to mind:

1)

Write our own DirectShow device that provides the pre-composited input as frames to Flash Video Encoder. That is, assuming the encoder/server does not provide a vehicle for compositing/mixing.

2)

We see that there is a way to use 'DVR' like/on-demand functions of the streaming server to stitch. That solves part of our problem (stitching together clip fragments from multiple origin source videos). But it doesn't solve the problem of compositing video frames on top of them, or mixing different audio with them.

3)

Is there any way to use SSAS to essentially replicate the behavior of our 'client side' player, which actually does all this compositing in realtime (it composites the 2 layers into a single bitmap data, and we could technically have it mix the various audio channels into a single byte array of the stereo audio output per frame if we needed to)? IE can we write our own 'provider' for encoding that would render frame data purely within ActionScript then provide it as the equivalent to a 'camera object' or whatever the encoder needs to do its thing?...

From a high level POV what we are trying to do is develop a rendering solution for a realtime UGC video toolset that we've developed on the Flash client platform. Our current solution requires a custom player (that 'performs' all the user's edits/choices in realtime) and we are trying to eliminate that in favor of a flattened media asset that can be pushed to any CDN (or streamed from our own service).

Thanks,

Neil Voss
alinear LLC

    This topic has been closed for replies.

    1 reply

    Graeme Bull
    Community Expert
    Community Expert
    October 31, 2010

    Nope. FMS doesn't do any of that. It serves the video files, that's about as far as you are going to get. The only thing that runs through my mind about your app ideas that can somewhat resemble what you want is playing a playlist of files. But you are already doing that client side and that can't change.

    It is possible to combine files on the server side, but it's not efficient and takes exactly as long as the videos are on the server. So combining two 5 minute videos will take 10 minutes.

    ultravossAuthor
    Participant
    November 1, 2010

    Well from what I can see Flash (Interactive) Media Server has a fair bit more capability than conventional serving ... Not that I see anything dealing with compositing or mixing data beyond maybe hacking the live encoder by feeding it our own input.  We've found a way to do what was described using a mix of other stuff (ffmpeg, image magic, sox) but it seemed worth it to explore FMS to see if it could be leveraged.  This is for a rendering situation. Realtime availability of a render would be nice but unexpected. The client player can still perform the mixes in realtime (so within the normal player and environment the user sees no delay between saving and publishing)... this is just a way to syndicate the result, allow it to be downloaded, and offer it up for devices that don't support Flash.  Thx N