OpenVCX
    
Open Source Video Conferencing and Streaming Server
 

Installation

Quick start installation guide for OpenVSX.  Read more


 

Wowza Streaming Engine

Example showing how to use OpenVSX with Wowza Streaming Engine.  Read more


 

Publish to Youtube

Stream live content to a CDN or Youtube.  Read more


 

Flash Media Encoder

Stream live content with Flash Media Encoder RTMP.  Read more


 

QuickTime Broadcaster

Stream live content with QuickTime Broadcaster RTSP.  Read more


 

Security and Encryption

Examples showing how to protect streaming content.  Read more


 

RTMP Streaming

Use RTMP to broadcast and capture live content.  Read more


 

RTSP Streaming

Use RTSP to broadcast and capture live content.  Read more


 

FLV Streaming

Stream live content to Flash player.  Read more


 

MPEG-DASH Streaming

Stream live content using MPEG-DASH.  Read more


 

WebM/HTML5 Streaming

Stream live content using a Matroska / WebM container.  Read more


 

HTTPLive Streaming

Stream live content to Apple devices using HTTPLive.


 

Analyze H.264 contents

OpenVSX can be used as a utilitity to take a closer look at the format of H.264 video.  Read more


 

Dump a container file

OpenVSX can be used as a utilitity to take a closer look at the format of MP4 container file.  Read more


 

Extract video and audio tracks from a media container

OpenVSX can be used as a utility to extract raw video and audio contents from container files.  Read more


 

Basic streaming output examples

Examples showing how to use the commandline to create stream output.  Read more


 

HTTPLive (Apple iPhone) streaming and capture

OpenVSX contains an HTTPLive streaming server for delivering live content to Apple devices, such as iPhones and iPads


 

HTTPLive Streaming Server

Offer a live HTTPLive playlist and media content on HTTP port 8080

./bin/vsx -v --in=input.sdp --httplive=8080 --live

To view the live stream you can connect a device to http://<OpenVSX IP>:8080/httplive

To offer the content over SSL/TLS use --httplive=https://0.0.0.0:8443 or just --httplive=https://8443

To require authentication you can specify a username and password using the following standard syntax.

--httplive=https://<username>:<password>@0.0.0.0:8443

OpenVSX will create .ts media segments with a default duration of 10 seconds. To change this duration to a value of 5 seconds use--httplivechunk=5.0

The m3u8 playlist file and media segments are stored in <OPENVSX_HOME>/html/httplive/. You may want to change this path to allow another web server to serve HTTPLive content, or to use an in-memory file system. The following option changes the output directory to allow the Apache web server to serve the generated content --httplivedir=/usr/local/apache/htdocs/httplive

Both the m3u8 playlist file and media segments are named by using the file prefix out. To use a different file prefix such as myprefix add --httplivefileprefix=myprefix. This will create the files called myprefix.m3u8 and myprefix<index>.ts.

The m3u8 playlist assumes an HTTP client will load the media segments from the same directory as the playlist. To use a different URL to refer to the media segments use --httpliveurlhost=http://my-high-bandwidth-server/my-media-uri. The playlist file will then prefix each media segment with out<index>.ts file with this URL.

 

HTTPLive Adaptive Bitrate Streaming

OpenVSX is able to perform real-time media encoding to produce multiple parallel encoded outputs for the same input media stream.

This example will output three representations of the input media by transcoding the video portion to produce two lower bandwidth representations while also preserving the original encoded stream.

  • The first representation is the original video bypassing the transcoder. In this example the bitrate is 900Kb/s.
  • The second representation produces a video bitrate of 600Kb/s.
  • The third representation produces a video bitrate of 300Kb/s with a width of 320 pixels and the same aspect ratio.

--xcode="videoCodec1=passthru,videoCodec2=h264,videoBitrate2=600Kb,videoWidth3=320,videoBitrate3=300Kb" --httplivebw=950Kb,650Kb,350Kb

The --httplivebw parameter is used to define a comma separated list of available stream bandwidths in the master m3u8 playlist. The bandwidth values should account for both audio, video, and MPEG-2 TS container encapsulation overhead of each individual stream.

Producing multiple stream outputs will create a master playlist called multi.m3u8 which will contain references to each stream specific <stream-index>out.m3u8 playlist file.

To view the live stream from an Apple device can connect a device to http://<OpenVSX IP>:8080/httplive . This will load the master .m3u8 playlist containing references to each bitrate specific output.

To explicitly load a specific representation append index of the desired encoding output to the URL.

Load the original representation at 900Kb/s use the URL: http://<OpenVSX IP>:8080/httplive/1

Load the third representation at 300Kb/s use the URL: http://<OpenVSX IP>:8080/httplive/3


 

HTTPLive Capture Client

OpenVSX is able to capture live input from a remote HTTPLive capable publishing server. OpenVSX periodically reads an .m3u8 playlist file and then downloads the listed media container .ts segments just like an Apple iOS device such as an iPhone would. The captured input is re-assembled into a continuous live stream and can be re-distributed by OpenVSX.


./bin/vsx -v --capture="http://[remote host]:80/out.m3u8" --stream --live=8080 --tslive=8080 --rtmp=1935 --rtsp=1554 --httplive=8080 --delay=10 --retry --vidq=500 --audq=500

The --delay= parameter is used to delay re-streaming by the given time in seconds. This should generally be as large as the HTTPLive chunk segment duration of the publishing HTTPLive server.


Since we're increasing the delay, we should also increase the video and audio frame queue sizes used to buffer the input data before processing outgoing content. This is done by specifying a larger than default --vidq= and --audq= sizes.


 

 

 

Don't hesitate to contact us via our contact page or email us at openvcx@gmail.com.