Thanks froggs. Sent from my iPhone
On 2011-12-01, at 5:25 AM, Tobias Leich <em...@froggs.de> wrote: > Great! > > So I will add RWOps support today, I'll drop you a note when its done. > > Cheers, FROGGS > > Am 30.11.2011 23:09, schrieb Alexander Becker: >> Hi! >> >> The example code in your link gives me version 1.2.11 on Win 7 x64 with >> strawberry perl 5.12.2 built for MSWin32-x64-multi-thread. >> >> HTH, >> Alex >> >> [code] >> use SDL::Mixer; >> use SDL::Version; >> >> my $version = SDL::Mixer::linked_version(); >> >> printf("%d.%d.%d\n", $version->major, $version->minor, $version->patch); # >> prints "1.2.11" for me >> [/code] >> >> -----Ursprüngliche Nachricht----- >> Von: Tobias Leich [mailto:em...@froggs.de] >> Gesendet: Mittwoch, 30. November 2011 13:18 >> An: Alexander Becker >> Cc: 'breno'; sdl-devel@perl.org >> Betreff: Re: How to play an mp3 file from a database >> >> Hi, can you please check what version of libSDL_mixer do you have installed? >> >> http://sdl.perl.org/SDL-Mixer.html#linked_version >> >> In case you have 1.2.7 or better we can add support for RWOps objects. >> So you dont need temp files. >> >> Cheers, FROGGS >> >> >> Am 29.11.2011 20:37, schrieb Alexander Becker: >>> Hi breno, >>> >>> thank you for the quick response. It helped. >>> I had a look into mixer_samples.t and line 106 states, that >>> quick_load_WAV is not (yet? Who do I have to bribe with what to get it?) >> implemented. >>> Here is a working piece of code using temporary files. Of course, you >>> need a database containing audio files. >>> >>> Best regards, >>> Alex >>> >>> [code] >>> #!perl >>> >>> use strict; >>> use warnings; >>> use utf8; >>> use DBI; >>> use SQL::Abstract::Limit; >>> use File::Temp; >>> use SDL; >>> use SDL::Audio; >>> use SDL::Mixer; >>> use SDL::Mixer::Samples; >>> use SDL::Mixer::Channels; >>> use SDL::Mixer::Music; >>> SDL::init(SDL_INIT_AUDIO); >>> SDL::Mixer::init( MIX_INIT_MP3 | MUS_MP3 ); >>> >>> unless( SDL::Mixer::open_audio( 44100, AUDIO_S16SYS, 2, 4096 ) == 0 ) { >>> Carp::croak "Cannot open audio: ".SDL::get_error(); } >>> >>> my $buffer = get_audio_buffer(); >>> >>> # -- write audio buffer to temp file >>> my $fh = File::Temp->new( UNLINK => 1, SUFFIX => '.mp3' ); >>> $fh->unlink_on_destroy( 1 ); print $fh $buffer; my $fname = >>> $fh->filename; >>> >>> # close the handle or the temfile will have some sort of lock on it >>> and cannot be read $fh->close(); >>> >>> my $background_music = SDL::Mixer::Music::load_MUS( $fname ); >>> >>> unless( $background_music ) { >>> Carp::croak "Cannot load music file [buffer from DB]: " . >>> SDL::get_error(); >>> } >>> >>> SDL::Mixer::Music::play_music( $background_music,0 ); >>> >>> sleep(6); >>> >>> SDL::Mixer::Music::halt_music(); >>> SDL::Mixer::close_audio; >>> exit(0); >>> >>> >>> >>> sub get_audio_buffer { >>> my $sql = SQL::Abstract::Limit->new( limit_dialect => 'LimitXY' >>> );; >>> >>> my $table = 'audio_files'; >>> my @fields = (qw/audio/); >>> my %where = ( >>> id => 2, >>> ); >>> my @order = (); >>> my $limit = 1; >>> my $offset = 0; >>> my ( $stmt, @bind ) = $sql->select( $table, \@fields, \%where, >>> \@order, $limit, $offset ); >>> my $database = 'database_name'; >>> my $db_host = 'your_host'; >>> my $db_port = '3306'; >>> my $dsn = "DBI:mysql:database=$database;host=$db_host;port=$db_port"; >>> my $username = 'username'; >>> my $password = 'password'; >>> my $dbh = DBI->connect($dsn, $username, $password) or die('Cannot >>> connect to DB: ' . DBI->errstr()); >>> my $sth = $dbh->prepare( $stmt ); >>> $sth->execute( @bind ); >>> >>> my ($buffer) = $sth->fetchrow_array(); >>> >>> return $buffer; >>> } # /get_audio_buffer >>> [/code] >>> >>> -----Ursprüngliche Nachricht----- >>> Von: breno [mailto:oainikus...@gmail.com] >>> Gesendet: Dienstag, 29. November 2011 06:34 >>> An: Alexander Becker >>> Cc: sdl-devel@perl.org >>> Betreff: Re: How to play an mp3 file from a database >>> >>> On Mon, Nov 28, 2011 at 8:13 PM, Alexander Becker < > wrote: >>>> Dear all! >>>> >>> Hi there! >>> >>>> I just tried the example code of the SDL Manual where you play some >> music. >>>> By the SDL manual, I refer to the one that is hidden at the bottom of >>>> the sdl.perl.org page, so that you really have to search for it in >>>> order to find it - and even then you have to get along with an ugly >>>> github >>> interface. >>> There's a new project website under way, but we're missing people to >>> work in it. Please join #sdl in irc.perl.org if you want to help us >>> get it right :) >>> >>>> So, in general: Is there a way to play mp3 files? >>> Yup. >>> >>> If your libsdl was compiled with mp3 support, all you have to do >>> (iirc) is set the MIX_INIT_MP3 (for effects) and MUS_MP3 (for audio) >>> flags when you call SDL::Mixer::init(): >>> >>> SDL::Mixer::init( MIX_INIT_MP3 | MUS_MP3 ); >>> >>> then use load_MUS() and play_music() from SDL::Mixer::Music to play >>> mp3 files as background music, or load_WAV() from SDL::Mixer::Samples >>> to play mp3 effects (yes, the function is named load_WAV() but plays >>> different formats too if they're available). >>> >>> The documentation in SDL::Mixer, SDL::Mixer::Music and >>> SDL::Mixer::Samples should be helpful, as some of the test files >>> (t/mixer_music.t comes to mind). >>> >>>> And in particular: is there a way to play mp3 files that are in a >>> variable? >>>> Or do I have to work with temporary files? >>>> >>> Not sure. I *think* SDL::Mixer::quick_load_WAV( $buffer ) might do the >>> right thing. You'll have to test it though. >>> >>> Cheers, >>> >>> breno >>> ----- >>> eMail ist virenfrei. >>> Von AVG überprüft - www.avg.de >>> Version: 10.0.1411 / Virendatenbank: 2092/4046 - Ausgabedatum: >>> 29.11.2011 >>> >> ----- >> eMail ist virenfrei. >> Von AVG überprüft - www.avg.de >> Version: 10.0.1411 / Virendatenbank: 2102/4048 - Ausgabedatum: 30.11.2011 >> >