Hi!

Ok, now I don't get any error when playing mp3 files from the database, but
I don't get any sound either.

I updated Alien::SDL to the latest version, that worked.
However, SDL itself didn't pass the tests, it's the channels test that
fails. So I installed with force, but no change.

Is there anything in particular I could do to provide information about the
error that occurs with the cannels test? Any information you need to fix
this issue (in case it is one)?

Best regards,
Alex

[snip]
Test Summary Report
-------------------
t\core.t                      (Wstat: 0 Tests: 28 Failed: 0)
  TODO passed:   21-22
t\core_video.t                (Wstat: 0 Tests: 110 Failed: 0)
  TODO passed:   57, 59
t\mixer_channels.t            (Wstat: 65280 Tests: 35 Failed: 0)
  Non-zero exit status: 255
  Parse errors: No plan found in TAP output
Files=59, Tests=3942, 233 wallclock secs ( 0.94 usr +  0.23 sys =  1.17 CPU)
Result: FAIL
Failed 1/59 test programs. 0/3942 subtests failed.
(C:\strawberry\perl\bin\perl.exe ./Build test exited with 65280)
CPAN::Reporter: Test result is 'fail', One or more tests failed.
CPAN::Reporter: preparing a CPAN Testers report for SDL-2.536

CPAN::Reporter: this appears to be a duplicate report for the test phase:
FAIL SDL-2.536 MSWin32-x64-multi-thread 6.1

Test report will not be sent.

  FROGGS/SDL-2.536.tar.gz
  C:\strawberry\perl\bin\perl.exe ./Build test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
  reports FROGGS/SDL-2.536.tar.gz
Running Build install
  make test had returned bad status, won't install without force
Failed during this command:
 FROGGS/SDL-2.536.tar.gz                      : make_test NO
[/snip]


-----Ursprüngliche Nachricht-----
Von: Tobias Leich [mailto:em...@froggs.de] 
Gesendet: Sonntag, 22. April 2012 19:31
An: Alex
Betreff: Re: How to play an mp3 file from a database

Hi Alex,

At first, you are on windows and used the prebuklt libSDL binaries shipped
with Alien::SDL?

If yes, mp3 should be supported, but only files without VBR. So please try a
few mp3 files and maybe check how it is encoded.

Then, to play an mp3 file from a database, do somethind like:

use DBI;
use SDL;
use SDL::Mixer;
use SDL::Mixer::Channels;
use SDL::Mixer::Samples;
use SDL::RWOps;

$dbh->prepare("SELECT music FROM ...");
$sth = $dbh->execute();
if( $row = $sth->fetchrow_hashref ) {
    $rwops = SDL::RWOps->new_const_mem( $row->{music} );
    $chunk = SDL::Mixer::Samples::load_WAV_RW( $rwops, 0 );
    SDL::Mixer::Channels::play_channel( -1, $chunk, 1 ); }

Cheers, FROGGS

Am 22.04.2012 18:35, schrieb Alex:
> Dear all!
>
> It took me quite some time, but I'm moving forward. 
> Here are some screens from my vocabulary trainer:
> https://picasaweb.google.com/104129024313554475104/Vokabeltrainer?auth
> user=0 &authkey=Gv1sRgCKLyn6SSwIvCgwE&feat=directlink
>
> Now I want to play  a vocable audio file (that is of course, stored in 
> a database :)). I can't use SDL::Mixer::Music for that, because there 
> is already some background music playing. AFAIK I need to use 
> SDL::Mixer::Samples.
> I tried it, but there occurred an error when using mp3 files: "Cannot 
> load music file [music/terminal.mp3]: Unrecognized sound file type at 
> play_effect.pl line 34"
>
> Here is the script:
> [code]
> #!perl
> use strict;
> use warnings;
> use utf8;
>
> use SDL;
> use SDL::Event;
> use SDL::Events;
> use SDLx::App;
> use SDLx::Controller;
> use SDL::Mixer;
> use SDL::Mixer::Music;
> use SDL::RWOps;
> use SDL::Mixer::Samples;
> use SDL::Mixer::Channels;
> SDL::init(SDL_INIT_AUDIO);
> SDL::Mixer::init( MIX_INIT_MP3 | MUS_MP3 );
>
> my $app = SDLx::App->new(
>       title => 'play mp3 effect',
>       exit_on_quit => 1,
> );
>
> unless( SDL::Mixer::open_audio( 44100, AUDIO_S16SYS, 2, 4096 ) == 0 ) {
>       Carp::croak "Cannot open audio: ".SDL::get_error(); }
>
> my $file = 'music/terminal.mp3';
> #my $file = 'music/br_crossing_bell_dop.r.wav';
> #my $file = 'music/Windows Logon Sound.wav'; my $sample = 
> SDL::Mixer::Samples::load_WAV( $file );
>
> unless( $sample ) {
>       Carp::croak "Cannot load music file [$file]: " . SDL::get_error(); }
>
> my $playing_channel = SDL::Mixer::Channels::play_channel( -1, $sample, 
> 0 );
>
> $app->run();
>
> SDL::Mixer::Music::halt_music();
> SDL::Mixer::close_audio;
> exit(0);
> [/code]
>
> There also occurred some other errors using .wav files:
> - Cannot load music file [music/br_crossing_bell_dop.r.wav]: Complex 
> WAVE files not supported at play_effect.pl line 34
> - Cannot load music file [music/Windows Logon Sound.wav]: MPEG Layer 3 
> data not supported play_effect.pl line 34
>
> But, I only want to play mp3 files.
>
> Maybe you can hint me at the solution for this problem? How can I play 
> an
> mp3 file once, e.g. on a button click event?
>
> Best regards,
> Alex
>
> -----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 
> <alexanderbec...@gmx.net>
> 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: 2012.0.1913 / Virendatenbank: 2411/4952 - Ausgabedatum: 22.04.2012 

Reply via email to