Thank you Mattias and Laurens. I am testing the code you (Laurens) have attached and it is working, but the audio is not synchronized and if I pause the audio and then I play again, it seems that it plays some kind of buffered audio and then the audio begins to sound with cuts. I am trying to find the reason of this behavior, but I write it here in case you now the solution.
Best regards. -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Laurens Voerman Sent: lunes, 23 de enero de 2012 15:12 To: OpenSceneGraph Users Subject: Re: [osg-users] Play audio files Hi All, I have ffmpeg movie audio working with osgAudio, but have been to busy to clean up the code, create an example and submit for inclusion in the osgAudio library. To avoid duplicate work I attach my current code "as is". Currently this is working part of our program, running both on linux (AMD64) and win7 (x64) . It compiles and runs on Win32 x86 but is probably never tested. attached is a zipfile with "AudioSink.h" example should be a variation on osgMovie, but should be in the osgAudio library, because osgAudio depends on osg. Laurens. Quick cut and paste from our program to show how to use this 'audioSink': // includes: #define OV_EXCLUDE_STATIC_CALLBACKS #include <osgAudio/SoundManager.h> #include <osgAudio/SoundRoot.h> #include "AudioSink.h" //init osgAudio::SoundManager::instance()->init( 16 ); osgAudio::SoundManager::instance()->getEnvironment()->setDistanceModel(osgAu dio::InverseDistance); osgAudio::SoundManager::instance()->getEnvironment()->setDopplerFactor(1); if (!noAudio) { _sceneRootGroup->addChild(new osgAudio::SoundRoot); } // play movie audio osg::ImageStream::AudioStreams& audioStreams = ffstream->getAudioStreams(); if (_playAudio && (!audioStreams.empty()) && audioStreams[0].valid()) { osg::AudioStream* audioStream = audioStreams[0].get(); osg::notify(osg::NOTICE)<<"AudioStream read ["<<audioStream->getName()<<"]"<<std::endl; osgRCAudio::AudioSink *sink; try { sink = new osgAudio::AudioSink(audioStream); } catch (...) { osg::notify(osg::WARN) << "new AudioSink failed" << std::endl; } audioStream->setAudioSink(sink); } // cleanup osgAudio::SoundManager *sndMgr = osgAudio::SoundManager::instance(); if (sndMgr->initialized()) sndMgr->shutdown(); if (osg::Referenced::getDeleteHandler()) { osg::Referenced::getDeleteHandler()->setNumFramesToRetainObjects(0); osg::Referenced::getDeleteHandler()->flushAll(); } On 1/23/2012 11:22 AM, Mattias Helsing wrote: > Hello Héctor > > You need to extend osg::AudioSink with the osgAudio code that you have > working. Have a look at the osgmovie exemple. It (optionally) > implements the osg::AudioSink interface using SDL. You need to do it > using osgAudio (or whatever sound backend you prefer). > > cheers > Mattias > > 2012/1/23 Héctor Martínez<[email protected]>: >> Hi, >> >> >> Now, the following question: is there a straight way to connect the >> audio from a video to osgAudio? I am using the ffmpeg plugin to read >> the videos and I get audioStreams as it is done in the osgmovie example. >> >> Thank you in advance. > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph. > org _______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

