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

Reply via email to