Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML] Przesyłanie dźwięku TCP

Ostatnio zmodyfikowano 2015-11-09 20:58
Autor Wiadomość
Niki-Nick
Temat założony przez niniejszego użytkownika
[SFML] Przesyłanie dźwięku TCP
» 2015-10-25 18:54:31
Witam,
dalej pracuje nad przesyłaniem dźwięku.

Kod wygląda tak:

(wysyłanie)

        buffer.loadFromFile("sample.wav");
        packet.append(buffer.getSamples(), buffer.getSampleCount() );
        socket.send(packet);
        packet.clear();

(odbieranie)


        socket.receive(packetReceive);
        buffer.loadFromSamples((short int*) packetReceive.getData(), packetReceive.getDataSize(), 1, 44100 );
        sound.setBuffer(buffer);
sound.play();

Pytanie, jeżeli sample.wav to nagranie mnie mówiącego:
<jeden, dwa, trzy, cztery>

To czemu po odebraniu słuchać:
<jeden, "trzask", jeden "trzask", jeden "trzask">
P-139169
RazzorFlame
» 2015-10-28 09:53:19
W ten sposób nie przesyła się dźwięku. Jak chcesz to zrobić poprawnie to wysyłaj cały plik albo jak już go masz to wysyłaj ID pliku to odtworzenia.
P-139282
1aam2am1
» 2015-10-28 10:13:40
1. Jak wiesz plik posiada kanały dźwięku więc najpierw musisz wiedzieć ile ich jest aby załadować je do buffera.
O ile jest to łatwe z mikrofonem bo ma jeden kanał plik waw może mieć ich więcej.

2. Jest także takie coś jak próbkowanie (ilość sampli na sekundę) to też powinieneś wiedzieć aby załadować je do buffera.
O ile jest to łatwe ponieważ w konstruktorze SoundBufferRecorder jest to 44100. To w pliku waw może być to inna wartość.

To są podstawowe problemy.
P-139283
Niki-Nick
Temat założony przez niniejszego użytkownika
» 2015-10-30 13:28:28
Nagranie zostało utworzone za pomocą SFML'a,
Dlatego zarówno znana jest mi liczba kanałów jak i sampling (próbkowanie).

Jeśli chodzi o przesyłanie dźwięku:
Wygodniej mi przesyłać już nagrany dźwięk z buffera niż za każdym razem [przy testowaniu] poświęcać 5 sekund i nagrywać siebie do przesłania na bieżąco.


Jeśli chodzi o rozwiązanie, to mam wrażenie że nie dochodzi część danych.
NP:
dochodzi tylko 1s (mówienie "jeden")
oraz dochodzi informacja że jest 5s nagrania.

Więc to co doszło, ta 1s odtworzona jest 5-krotnie.
P-139372
maly
» 2015-10-30 13:44:10
Według przykładu z SFML-a powinno być jakoś tak:
C/C++
packet.append( buffer.getSamples(), buffer.getSampleCount() * sizeof( sf::Int16 ) );
P-139374
Niki-Nick
Temat założony przez niniejszego użytkownika
» 2015-11-09 20:58:43
Give that man a cookie.

Wow.

Na to nie wpadłem.

Dzięki wielkie!
P-139877
« 1 »
  Strona 1 z 1