wie man Stücke von mp3-Bytes vom sql-Server spielt, übertragen auf den Desktop-Client (per wcf) mit C #?

8

Ich habe "chunks" von Audio (in mp3 format) für eine sql -Datenbank, dh Sie können sich eine mp3 -Datei vorstellen, die auf die gleiche Größe von Chunks aufgeteilt ist und jeder Chunk wird in einem Record auf einem gespeichert sql server db. Diese chunks werden über einen WCF -Dienst an die Desktop-Clients zurückgegeben. natürlich fragt der Client nach dem nächsten Chunk, wenn er einen bekommt (sie werden in der Reihenfolge empfangen, also kommt der Header zuerst!)  Hier ist die Frage, wie kann ich diese empfangene chunks in meiner Desktop App nacheinander abspielen? kann ich sie Rücken an Rücken mit jedem Stück spielen, um den Spieler zu puffern?

Bitte beachten Sie: -Der Desktop-Client ist in C # -Der Player kann WMP sein, wenn es für diesen Zweck funktioniert! -chunks werden in Bytes gespeichert - Aus irgendwelchen Gründen ist das "Chunk on Sql" -System bereits von jemand anderem implementiert. Ich muss nur einen Weg finden, sie wie einen Stream auf dem Desktop zu spielen.

Danke!

    
Arash Mhd 25.01.2013, 08:30
quelle

2 Antworten

2

Wenn Ihr MP3-Player von einem System.IO.Stream-Objekt abgespielt werden kann, implementieren Sie Ihre eigene Stream-Klasse mit dem folgenden

%Vor%

Damit werden die Datenblöcke in eine Warteschlange gestellt. Die Read-Methode liest sie in der Reihenfolge aus, in der sie hinzugefügt wurden.

Dieser Code liest nur jeweils einen Chunk, kann aber erweitert werden, um in einem separaten Thread zu lesen und mehrere Chunks aufzufüllen.

    
shimpossible 02.02.2013 17:14
quelle
0

Wenn Sie davon ausgehen, dass Sie eine Methode haben, sie in der Datenbank entsprechend zu bestellen, wenn der Benutzer sie anfordert, ist Ihre Aufschlüsselung ziemlich einfach. Im Pseudocode

  1. Benutzer fordert mp3
  2. an
  3. tun:
  4. Suche nach und sende die verfügbaren Chunks an den Client
  5. Wenn Chunks gespielt werden sollen, spielen Sie sie (fügen Sie sie dem Stream hinzu) in der festgelegten Reihenfolge
  6. while: Die Fußzeile wurde in diesen Blöcken nicht gefunden. // end do

Senden Sie die Chunks im Wesentlichen so lange an den Benutzer, bis die Fußzeile gefunden wird, und spielen Sie die Chunks so ab, als wären sie vollständig.

    
Michael 28.01.2013 19:23
quelle

Tags und Links