Geschafft!

Hinweis

Fehler

Session expiration Your session is going to expireClick here to extend

Budget:

Kleines Projekt <800

Geposted am

16.12.14 21:40

Kunde

zap***

Die Angebotsphase ist beendet

Schreiben Sie ein ähnliches Projekt aus und erhalten Sie Angebote von Freelancern. Unverbindlich. Kostenlos. Schnell.

Jetzt ähnliches Projekt einstellen

Beschreibung:

Wir suchen einen C++ Programmierer für ein kleines Projekt (4-6 Stunden). Wir vergüten die Stunde mit 50 EUR.

 

Ich habe bereits ein Plugin entwickelt, welches den Bot in einen Channel joinen lässt sowie Chatbefehle anzunehmen und verarbeiten lässt.Chatbefehl Beispiel:!playlists - Sendet als Textnachricht alle angelegten Playlisten zurück.Die Playlisten werden in einer entwickelten NodeJS Anwendung verwaltet.Diese Anwendung stellt ebenfalls eine Weboberfläche bereit mit der alle Funktionen gesteuert werden können.Zurzeit ist es so, dass die NodeJS - Hauptanwendung mehrere Prozesse unter sich startet.Hauptanwendung:- Pulseaudio (Virtueller Audio Server)- Mplayer (Linuxbasierter CLI Audio Player)- Teamspeak3 ClientZiel ist es, den Pulseaudio Prozess abzulösen, indem das Teamspeak Plugin ein sog. „customDevice“ registriert.Mit einem customDevice hat man die Möglichkeit einen Audiostream vom Teamspeak Server zum Client zu empfangen (playbackData)und einen Audiostream vom Client zum Server zu senden (captureData).Der Empfang von Daten spielt im weiteren Verlauf keine Rolle, wichtig ist das Senden von Audio Daten zum Server.Die Audiodaten werden von mplayer bereitgestellt:    Beispiel:    mplayer song.mp3  -dumpstream -dumpfile mplayerToTs3Im weiteren Verlauf soll das Teamspeak Plugin die Daten aus dem dumpfile weiter zum Teamspeak Server senden.Meine Überlegung war, dass wir die Verwaltung der Audio Daten in ein eigenes Plugin auslagern.Für mein Bestehendes Plugin habe ich mich an diesem Beispiel orientiert:https://github.com/BotoX/msyuDamit haben Sie ein fertiges Beispiel, welches sich direkt mit make Kompilieren lässt.

Die Dokumentation zur Plugin SDK habe ich Ihnen via Dropbox freigegeben:https://www.dropbox.com/s/xc9ilead813shuz/Client%20Plugin%20docs.zip?dl=0Dort ist folgendes Beispiel zum Registrieren eines CustomDevices zu entnehmen:--------------------------------------------/* Register a new custom sound device with specified frequency and number of channels */if(ts3client_registerCustomDevice("customWaveDeviceId", "Nice displayable wave device name", captureFrequency, captureChannels, playbackFrequncy, playbackChannels) != ERROR_ok) {   printf("Failed to register custom device\n");}/* Open capture device we created earlier */if(ts3client_openCaptureDevice(scHandlerID, "custom", "customWaveDeviceId") != ERROR_ok) {   printf("Error opening capture device\n");}/* Open playback device we created earlier */if(ts3client_openPlaybackDevice(scHandlerID, "custom", "customWaveDeviceId") != ERROR_ok) {   printf("Error opening playback device\n");}/* Main loop */while(!abort) {   /* Fill captureBuffer from your custom device */   /* Stream your capture data to the client lib */    if(ts3client_processCustomCaptureData("customWaveDeviceId", captureBuffer, captureBufferSize) != ERROR_ok) {       printf("Failed to process capture data\n");   }   /* Get playback data from the client lib */   error = ts3client_acquireCustomPlaybackData("customWaveDeviceId", playbackBuffer, playbackBufferSize);   if(error == ERROR_ok) {       /* Playback data available, send playbackBuffer to your custom device */   } else if(error == ERROR_sound_no_data) {       /* Not an error. The client lib has no playback data available. Depending on your custom sound API, either          pause playback for performance optimisation or send a buffer of zeros. */   } else {       printf("Failed to get playback data\n");  /* Error occured */   }}/* Unregister the custom device. This automatically close the device. */if(ts3client_unregisterCustomDevice("customaveDeviceId") != ERROR_ok) {   printf("Failed to unregister custom device\n");}——————————————————————"