Roku Developer Program

Join our online forum to talk to Roku developers and fellow channel creators. Ask questions, share tips with the community, and find helpful resources.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
bandal
Visitor

Videoplayer and Audio at startup of channel

Hi, I am trying to figure out how to make mp3 music start when I click my channel and have it stop when I select a Category and video when I hit Play. I use the videoplayer from the sdk

I need to be able to do this using an external xml file as I do for my video content now to change at will my mp3 selection at the start of the Channel.

It's working now
I have a function call appSound(screen) in appMain.brs and a stopSound in videoplayer.brs that works now. I just need a way to get an xml file read in to play the mp3 versus placing the http path to the mp3 in the appSound.brs.

Here is my appSound.brs content. I am still new at programming so be easy on me and if you have a complete solution let me know or PM me.
Function startSound(screen)

m.audio = CreateObject("roAudioPlayer")
item = CreateObject("roAssociativeArray")
item.Url = "http://www.xxxxx.org/roku/music/Letsride.mp3"
item.StreamFormat = "mp3"
m.audio.AddContent(item)
item.Url = "http://www.xxxxx.com/RokuDir/audio/town.mp3"
item.StreamFormat = "mp3"
m.audio.AddContent(item)
m.audio.SetLoop(true)
m.audio.Play()
' you can add more audio as this has 2 mp3's in line to play or add more.
End Function


Function stopSound()
m.audio.Stop()
End Function
0 Kudos
8 REPLIES 8
destruk
Streaming Star

Re: Videoplayer and Audio at startup of channel

It wouldn't have to be XML simply to play a music file. You could use GetToString() and then use a single line txt file with the http path for the mp3.

MP3TextTransfer=CreateObject("roUrlTransfer")
MP3TextTransfer.SetUrl("http path to text file http://myserver.com/mp3filename.txt")
MP3Filename=MP3TextTransfer.GetToString()

For multiple files if needed, a playlist like you have playing two, you could use Tokenize to break the string into a multiple part array based on a character in the string.
GetToString is faster than running an entire xml parsing routine when dealing with a tiny/limited data set.
0 Kudos
bandal
Visitor

Re: Videoplayer and Audio at startup of channel

I am missing something here and just get errors at line 7. Ahhhh. Here is what I tried. My item.Url variable is the path to my text file and inside the file is the http link to the actual mp3 file.

Function startSound(screen)

m.audio = CreateObject("roAudioPlayer")
item = CreateObject("roAssociativeArray")
item.TextTransfer=CreateObject("roUrlTransfer")
item.Url = "http://www.xxxxx.org/roku/mp3filename.txt"
MP3Filename=TextTransfer.GetToString()
item.StreamFormat = "mp3"
m.audio.AddContent(MP3Filename)
print item
print MP3Filename
m.audio.SetLoop(true)
m.audio.Play()
End Function


Function stopSound()
m.audio.Stop()
End Function
0 Kudos
destruk
Streaming Star

Re: Videoplayer and Audio at startup of channel

Wouldn't this work?

Function startSound(screen)

TextTransfer=CreateObject("roUrlTransfer")
TextTransfer.SetUrl("http://www.xxxxx.org/roku/mp3filename.txt")
MP3Filename=TextTransfer.GetToString()

m.audio = CreateObject("roAudioPlayer")
item = CreateObject("roAssociativeArray")
item.Url=MP3Filename
item.StreamFormat = "mp3"
m.audio.AddContent(MP3Filename)
m.audio.SetLoop(true)
m.audio.Play()
End Function


Function stopSound()
m.audio.Stop()
End Function
0 Kudos
bandal
Visitor

Re: Videoplayer and Audio at startup of channel

Thanks,

It does compile ok, but no music sound yet.

The contents of http://www.xxxxx.org/roku/mp3filename.txt has one line that shows only

http://www.xxxxx.org/roku/music/Letsride.mp3

It plays in VLC ok and my older function. I wondered if a CR is needed after the line and still no effect. I am close. I will mess around some more.

I am getting the correct values from my print item and print MP3Filename as shown

------ Running ------
streamformat: mp3
url: http://www.xxxxx.org/roku/music/Letsride.mp3


http://www.xxxxx.org/roku/music/Letsride.mp3

created feed connection for http://www.xxxxx.org/rokucharles/xml/shows.xml
DA
0 Kudos
destruk
Streaming Star

Re: Videoplayer and Audio at startup of channel

ergh...

m.audio.AddContent(MP3Filename)

should be

m.audio.AddContent(item)
0 Kudos
bandal
Visitor

Re: Videoplayer and Audio at startup of channel

Tried it that way and no response. How strange as my print item shows the correct path to the mp3 file itself. I will pm you the full path in the file.

DA
0 Kudos
belltown
Roku Guru

Re: Videoplayer and Audio at startup of channel

I think you need to wait on the roAudioPlayer events in order for you to hear the audio.

This code should play your mp3 file through to the end. You can modify it as necessary to keep playing until stopSound() is called.


Function startSound(screen)

TextTransfer=CreateObject("roUrlTransfer")
TextTransfer.SetUrl("http://www.xxxxx.org/roku/mp3filename.txt")
MP3Filename=TextTransfer.GetToString()

m.audio = CreateObject("roAudioPlayer")
port=CreateObject("roMessagePort")
m.audio.SetMessagePort(port)
item = CreateObject("roAssociativeArray")
item.Url=MP3Filename
item.StreamFormat = "mp3"
m.audio.AddContent(item)
m.audio.SetLoop(False)
m.audio.Play()
While True
msg = Wait (0, port)
If Type (msg) = "roAudioPlayerEvent"
If msg.IsRequestSucceeded() or msg.IsRequestFailed () or msg.IsFullResult () or msg.IsPartialResult () or msg.IsRequestInterrupted ()
Exit While
EndIf
EndIf
End While
End Function
0 Kudos
bandal
Visitor

Re: Videoplayer and Audio at startup of channel

Destruk,

Thanks, I did get it to work. Destruk found extra blank characters in my file. Looks like my editor put some hidden characters in.

Thanks belltown for the additional info.

DA
0 Kudos