• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak prawidłowo dodać muzykę do programy z pomocą SFML?

VPS Starter Arubacloud
0 głosów
936 wizyt
pytanie zadane 24 czerwca 2018 w C i C++ przez skankhunt42 Obywatel (1,170 p.)

Nie wiem jak mogę dodać muzykę do programu. Oto testowy kod z jakiego korzystałem podczas prób dodania muzyki:

 

#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");

    sf::Music music;

    music.openFromFile("music.ogg");
    music.setVolume(50);
    music.setLoop(true);
    music.play();

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }

        window.clear();
        window.display();
    }

    return 0;
}

Jestem niemal pewien że z kodem jest wszystko w porządku, code blocks nie wyświetlał żadnych powiadomień o błędach. Plik jest również na 100% prawidłowo otworzony z pamięci. Mimo to po instrukcji music.play(); nic się nie dzieje.

1 odpowiedź

0 głosów
odpowiedź 24 czerwca 2018 przez mokrowski Mędrzec (156,220 p.)
Stawiam na zły katalog w którym leży plik z muzyką. Jest inny niż bieżący w którym uruchamiany jest program.

Bo już pytaniem o to czy program się skompilował oraz czy ... "zrobiłeś głośniej" nie będę Cię męczył :)

Jesteś pewien że nie potrzebujesz bufora do odtwarzania? :)
komentarz 24 czerwca 2018 przez skankhunt42 Obywatel (1,170 p.)


Jak widać na załączonym obrazku plik z muzyką jest w tym samym folderze co program. Zresztą gdyby było inaczej to w konsoli pojawił by się komunikat że nie udało się otworzyć takiego pliku. I żeby nie było wątpliwości program się kompiluje i "zrobiłem głośniej". Mam wrażenie że wszystko powinno działać bo przeszukałem połowę internetu i nigdzie nie znalazłem odpowiedzi na to dlaczego nie słychać muzyki. Podejrzewam że jak zwykle to jest jakiś głupi błąd którego ja nie widzę. Btw co masz na myśli pytając czy nie potrzebuje buforu do odtwarzania?

 

komentarz 24 czerwca 2018 przez j23 Mędrzec (195,220 p.)

Zresztą gdyby było inaczej to w konsoli pojawił by się komunikat że nie udało się otworzyć takiego pliku.

Z kodu nie wynika, żeby tak miałoby się stać. openFromFile zwraca true, jeśli otworzy plik, false - jeśli nie. Zrób poprawną obsługę błędów i będziesz wiedział, czy plik się otwiera.

komentarz 24 czerwca 2018 przez skankhunt42 Obywatel (1,170 p.)
if(!music.openFromFile("music.ogg")) return 0;

Dodałem taką prostą weryfikację. Gdyby plik się nie otworzył program się powinien wyłączyć ,a nic takiego się nie dzieje. A więc plik otwiera się poprawnie.

komentarz 25 czerwca 2018 przez j23 Mędrzec (195,220 p.)
Spróbuj z innym plikiem, innym formatem.
komentarz 25 czerwca 2018 przez skankhunt42 Obywatel (1,170 p.)
Zmieniłem format na .flac ,a potem na .wav ale nadal bez rezultatu. Może to wina złej konfiguracji w CodeBlocks? Jeśli tak to co powinienem zmienić?
komentarz 25 czerwca 2018 przez skankhunt42 Obywatel (1,170 p.)
Dziwna sprawa ,bo jak przed chwilą skopiowałem ten kod i plik z muzyką na inny komputer z windows to wszystko działało bez błędnie.
komentarz 25 czerwca 2018 przez j23 Mędrzec (195,220 p.)
Jakby to była wina konfiguracji C::B, to projekt po prostu by się nie skompilował.

 

Tak przeglądam źródła SFML-a i widzę, że audio oparte jest na OpenAL... Może coś z tą biblioteką jest nie tak.
komentarz 25 czerwca 2018 przez skankhunt42 Obywatel (1,170 p.)
A wiesz może jak to można naprawić? Jeśli moje pytania są głupie i irytujące o sorki ,ale dopiero zaczynam przygodę z programowaniem i jeszcze dużo rzeczy nie ogarniam :)
komentarz 25 czerwca 2018 przez j23 Mędrzec (195,220 p.)
Jeśli problem dotyczy tylko Linuksa, to znajdź jakąś aplikację, która wykorzystuje OpenAL i sprawdź, czy dźwięk działa.

Podobne pytania

+1 głos
0 odpowiedzi 245 wizyt
0 głosów
4 odpowiedzi 582 wizyt
+1 głos
1 odpowiedź 255 wizyt

92,832 zapytań

141,776 odpowiedzi

320,824 komentarzy

62,163 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...