Log in Register

Login to your account

Username *
Password *
Remember Me

Create an account

Fields marked with an asterisk (*) are required.
Name *
Username *
Password *
Verify password *
Email *
Verify email *
Captcha *

 

How do i get recorder running ?

1. Download HDTubeRecorder / FXTubeREcorder latest package from http://rtmpworld.com/downloads/commercial-product-downloads

2. Extract it to your web server folder (into a subfolder or root)

3. Edit config.php and set your rtmp url (rtmp://serverip/applicationname)

4. Go to the folder using your browser and run the page.

 

How do i get mobile friendly output from recorder ?

Use ffmpeg to convert flv to mobile friendly mp4 using H264/AAC encoders provided in ffmpeg. Mail us at support[AT]flashvisions.com for paid assistance.

 

How to check if my Red5 is working properly ?

1. Open http://red5serverip:5080/demos/publisher.html

2. Enter rtmp://red5serverip/oflaDemo in server and press connect

3. You should now see message in the console stating Connection successful. This would mean your Red5 is up and running.

 

Why don't i see camera video on screen in recorder, when i know i have a camera?

Flash plugin will not be able to acquire the camera device on your computer/laptop if its already acquired by some other software such as skype or any other voip application.

 

Why is my recorder's record button disabled ?

If recorder is unable to connect to your rtmp server it will stay disabled. Thus you must check with your host and make sure that your rtmp server is running and your rtmp application application is deployed and running on server.

 

Why is my recorder not recording video ? Or Why don't i get video in playback of recorded content ?

If you are using Red5 , note that older versions are not capable of H264 video decoding when recording. Make sure you use Red5 1.0 or above. Same goes for other RTMP servers as well. Make sure your RTMP server is capable of handling H264 data coming from your recorder. You can switch to the older video codec "Sorenson" to ensure older RTMP servers are able to handle / decode video data from recorder.

* To change codec: Edit flashservices/Services/FXTubeRecorder.php file and set: $settings['videocodec'] = "Sorenson"; in the loadSettings function.

 

How do i manage multiple instances of recorder on the same page with different settings ?

1. Below is the sample embed code for recorder which uses swfobject to place recorder swf into a div called fxtuberecorder:

{codecitation class="brush: javascript; gutter: true;"}

<script src="/js/swfobject.js" language="javascript"></script>

<script language="javascript" type="text/javascript">

function onHTMLDOMReady(){

var flashvars={};

flashvars.serviceLocation = "relative-path-to-flashservices-from-site-root";

flashvars.myvariable = "myvalue";

var params={};

params.base = "http://full-path-to-swf-directory/";

params.wmode="opaque";

params.allowscriptaccess="always";

var attributes={};

attributes.id="recorder1";

attributes.name="recorder1";

swfobject.embedSWF("swf/QuickCapture.swf","fxtuberecorder","320","240","11.1.0","swf/playerProductInstall.swf",flashvars,params,attributes);

}

swfobject.addLoadEvent(onHTMLDOMReady);

</script>

<div id="fxtuberecorder"></div>

{/codecitation}

 

2. Below is the signature and body code of loadSettings() function in /flashservices/Services/FXTubeRecorder.php file :

{codecitation class="brush: javascript; gutter: true;"}

function loadSettings($objectId, $configuration)

{

$settings["licencekey"] = LICENCEKEY;

$settings["controlbar"] = CONTROLBAR;

$settings["publishName"] = uniqid("fxtuberecorder_");

$settings["destination"] = $this->destination;

$settings["autoSaveSession"] = false;

$settings["recordtime"] = RECORDTIME;

$settings["server"] = $this->server;

$settings["recordMode"] = $this->recordmode;

$settings["userPresets"] = file_get_contents($this->encoderPresets);

$settings["videocodec"] = "H264Avc";

$settings["forceQuality"] = "HD SIF LOW";

$settings["stageVideoSupport"] = false;

return $settings;

}

{/codecitation}

*In the above function the passed param $objectId is the flash object id set in the page as:

{codecitation class="brush: javascript; gutter: true;"}

attributes.id="recorder1";

attributes.name="recorder1";

{/codecitation}

Thus $objectId is "recorder1". To use multiple instances of recorder, you can dynamically assign a different id/name to each instance with javascript and use the same in FXTubeRecorder.php to differentiate between instances.

 

*$configuration refers to flashvars object set on page as:

{codecitation class="brush: javascript; gutter: true;"}

flashvars.serviceLocation = "relative-path-to-flashservices-from-site-root";

flashvars.myvariable = "myvalue"

{/codecitation}

 

Which can be accessed in loadSettings() as :

{codecitation class="brush: javascript; gutter: true;"}

$myvariable = $configuration['myvariable'];

{/codecitation}

Example of using $objectId to distinguish recorder instances:

{codecitation class="brush: javascript; gutter: true;"}

function loadSettings($objectId, $configuration)

{

$settings["licencekey"] = LICENCEKEY;

$settings["controlbar"] = CONTROLBAR;

$settings["publishName"] = uniqid("fxtuberecorder_");

$settings["destination"] = $this->destination;

$settings["autoSaveSession"] = false;

$settings["server"] = $this->server;

$settings["recordMode"] = $this->recordmode;

$settings["userPresets"] = file_get_contents($this->encoderPresets);

$settings["videocodec"] = "H264Avc";

$settings["forceQuality"] = "HD SIF LOW";

$settings["stageVideoSupport"] = false;

 

if($objectId == 'recorder1')

$settings["recordtime"] = 500;

else if($objectId == 'recorder2')

$settings["recordtime"] = 800;

 

return $settings;

{/codecitation}

How do i register the recorder for javascript interactions ? Or How to enable javascript API ?

 

1. Define a global hook function onBroadcasterReady the the page as shown below. Function receives the id of the recorder swf object on the html page. you can then use swfobject (js prototype) to obtain the reference.

{codecitation class="brush: javascript; gutter: true;"}

var broadcaster;

function onBroadcasterReady(objid){

broadcaster = swfobject.getObjectById(objid); // or use dom function document.getElementById(objid);

}

{/codecitation}

2. Register the callback functions to handle callback events

{codecitation class="brush: javascript; gutter: true;"}

broadcaster.addNotificationListener("SESSIONSAVESUCCESS","onSaveSuccess");

broadcaster.addNotificationListener("SESSIONSAVEFAILED","onSaveFailed");

function onSaveSuccess(objid,params){

var streamname=eval(params)[0];

var duration=eval(params)[1];

// do something when recording was saved successfully

}

function onSaveFailed(objid,params){

}

{/codecitation}

3. The Full code (using swfobject) looks like this:

{codecitation class="brush: javascript; gutter: true;"}

<script src="/js/swfobject.js" language="javascript"></script>

<script language="javascript" type="text/javascript">

function onHTMLDOMReady(){

var flashvars={};

flashvars.serviceLocation = "relative-path-to-flashservices-from-site-root";

flashvars.myvariable = "myvalue";

var params={};

params.base = "http://full-path-to-swf-directory/";

params.wmode="opaque";

params.allowscriptaccess="always";

var attributes={};

attributes.id="recorder1";

attributes.name="recorder1";

swfobject.embedSWF("swf/QuickCapture.swf","fxtuberecorder","320","240","11.1.0","swf/playerProductInstall.swf",flashvars,params,attributes);

}

swfobject.addLoadEvent(onHTMLDOMReady);

 

function onBroadcasterReady(objid){

broadcaster = swfobject.getObjectById(objid);

broadcaster.addNotificationListener("SESSIONSAVESUCCESS","onSaveSuccess");

broadcaster.addNotificationListener("SESSIONSAVEFAILED","onSaveFailed");

}

 

function onSaveSuccess(objid,params){

var streamname=eval(params)[0];

var duration=eval(params)[1];

// do something when recording was saved successfully

}

 

function onSaveFailed(objid,params){

}

 

</script>

<!-- the swf holder in your webpage -->

<div id="fxtuberecorder"></div>

{/codecitation}