Skip to main content
Participant
February 23, 2011
Question

A few questions

  • February 23, 2011
  • 1 reply
  • 556 views

Hi, we're well underway to getting a good solution using FMG and FMS and have already bought licenses, but I have a couple questions.

1) What format are the .raw and .nm files that FMG can play in the playfile workflow? I assume .nm is some form of nellymoser, but what container? I tried using nellymoser audio inside a flv container and it was garbled. What can be used to record these files?

2) I can't seem to proxy a recorded stream to a call leg. Whenever I set it up using the following code, I only hear the last second of audio on the phone:

this.tempstream = Stream.get("newstream");

this.tempstream.onStatus = function(info) {

     trace("tempstream fun: " + info.code);

}

LegService.pushNewStream(legid, "newstream");

this.tempstream.play("recordedfile", 0);

I have tried playing with the buffer time and start position and it seems to slightly change things, but I never get usable playback.

That's enough to start, thanks in advance for any tips.

This topic has been closed for replies.

1 reply

February 25, 2011

The .raw audio files stored within FMG for playback is Headerless Raw file encoded as 16-bit signed PCM in Mono, 8000KHz. Such raw file with custom audio can be generated using most audio editing tools. On other hand, .nm is different than .flv; and may not be created by tools. For now, when required, it is optimal to feed .raw file.

I only hear the last second of audio on the phone:

- The SSAS routine to kickstart feed using Stream.play() should be triggered when "messege.indication.answer"/"messege.indication.answer" is received in handler CallLegService.onLegMessage(info);  it is not done already, making such a change should help as it is possible that the initial portion of file was skipped before call was answered.

yiln45uAuthor
Participant
February 25, 2011

Thanks for the format info, that helped and I was able to record my own.

- The SSAS routine to kickstart feed using Stream.play() should be triggered when "messege.indication.answer"/"messege.indication.answer" is received in handler CallLegService.onLegMessage(info);  it is not done already, making such a change should help as it is possible that the initial portion of file was skipped before call was answered.

Moving this code to execute on message.indication.answer seems to make no difference. I should also mention that I'm playing a 42 second file and still only hearing the last second. I've tried files of various lengths and it doesn't seem to make a difference. I have also added a line that does this.tempstream.record() and played back the recorded stream to ensure that it's playing all the way through in the FMS app and it is.

Any other ideas? Does the codec / bitrate of the stream I'm proxying make a difference?

Thanks.

February 25, 2011

The cause is somewhere right around. try few things to see if it helps in getting closer and catch it.

  1) How  about making a SSAS playlist is made by calling stream.play 5 time; it should make live stream available for longer duration.

     this.tempstream.play("recordedfile");

     this.tempstream.play("recordedfile");

            .

            .

     this.tempstream.play("recordedfile");

   2) In #1 above, "newStream" should also be playable on flashplayer for 42x5= 3.5 minutes.

If stream doesn't playback for longer duration in #1 & # 2 above, what happens if no server side publishing is done; and direct recorded file name is provided to LegService  i.e.

             LegService.pushNewStream(legid, "recordedfile");