![]() |
|
![]() |
|
|
Thread Tools | Display Modes |
|
|
|
|
#1 |
|
Professional Programmer
Join Date: Jan 2006
Location: Ontario, Canada
Posts: 374
Rep Power: 0
![]() |
Streaming Sound Over a Socket
I am trying to stream sound over a socket. I am using the FMOD SoundSystem libraries to play the music. I am not expecting people to know FMOD, but maybe you guys could still help me out a bit. I can set up FMOD to stream the file when playing it, I just have to figure out how I can send the data through the socket in chucks and have FMOD playing the chunks while its doing the transferring.
I have the file sending through the socket in chunks working: // receiving end
char buf[1000] = "";
int n = 0;
std:: ofstream outFile("test.mp3", std::ios::binary);
while ((n = recv(socket, buf, sizeof(buf), 0)) > 0)
{
outFile.write(buf, n);
}
outFile.close();FMOD code to stream a file and play it: FMOD::System* system = 0;
FMOD_RESULT fres = FMOD::System_Create(&system);
fres = system->init(4, FMOD_INIT_NORMAL, 0);
FMOD::Sound* sound = 0;
fres = system->createStream("test.mp3", FMOD_CREATESTREAM, 0, &sound);
FMOD::Channel* channel = 0;
// there would be code here to set the stream buffer size accordingly.
fres = system->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);Any help at all on how to tackle this would be great.
__________________
I am Addicted to Linux! |
|
|
|
|
|
#2 |
|
Professional Programmer
Join Date: Jan 2006
Location: Ontario, Canada
Posts: 374
Rep Power: 0
![]() |
Does anyone even know if I have to set up the socket a specific way to handle streaming?
__________________
I am Addicted to Linux! |
|
|
|
|
|
#3 |
|
Expert Programmer
|
I think you are taking the wrong approach to this... writing the data to a file and having that file stream back to the audio player. You might manage to make it work, but at the cost of processing power, and what happens to streams that keep on going, the data file can not be easily trimmed.
You need to either everload the classes/functions responsible for stream the data from a file to use a socket escriptord and handle reading the data from the socket instead of the file, or you have to find a way to send data buffers into FMOD and write the data directly into the buffer as it is being received. Typically these buffers are cyclical allowing you to easily create a data stream (this is how Direct Sound generally works). I don't know FMOD very well, so that is really all the help I can give you, and I don't know how well FMOD will handle doing it the right way.
__________________
Clifford Matthew Roche <geek@cliffordroche.com> Web Hosting: http://www.crd-hosting.com Consulting: http://www.crdev-consulting.com |
|
|
|
|
|
#4 |
|
Professional Programmer
Join Date: Jan 2006
Location: Ontario, Canada
Posts: 374
Rep Power: 0
![]() |
Ok thanks for the tips. I think I will just have to research how FMOD works a bit more. I think I am going to leave that for now and finish the rest of the sockets library I am creating (I will probably start a new thread for reviews on it when I get more of it done).
__________________
I am Addicted to Linux! |
|
|
|
![]() |
| Bookmarks |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Java socket Server compile errors.. | n3o_X | Java | 3 | Nov 18th, 2007 12:39 AM |
| .NET Socket Class | hbe02 | Show Off Your Open Source Projects | 1 | Oct 7th, 2006 11:00 AM |
| how to check if the socket is still connected? | myName | C++ | 1 | Jun 14th, 2006 6:27 AM |
| Socket Server | hbe02 | C++ | 19 | May 23rd, 2006 10:14 PM |
| Socket problem | Polyphemus_ | C++ | 3 | Feb 28th, 2006 2:01 PM |