Wiedergabelautstärke bei TMediaPlayer?

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von bonsai, 29. Juni 2006 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 29. Juni 2006
    Hallo,

    ich habe da mal eine Frage an die Profis bzw. an alle die sich damit auskennen.
    Ich möchte die Wiedergabelautstärke einer Datei, die mit TMediaPlayer wiedergegeben wird, verändern können. Ich weis das der TmediaPlayer diese Funktion nicht unterstützt.
    Dazu würde ich - sofern es erstmal funktioniert - einen Schieberegler nehmen.

    Ich habe nun den ganzen Tag (bestimmt 10h) nach einer Lösung gesucht (Google, etliche Foren, MSDN) - hat nix gebracht.
    Bin immernoch kein Stückchen weiter.

    Also meine Bitte an euch wäre: Mir etwas zu helfen und mir zu zeigen wie ich das ganze Umsetzen kann.

    Wichtig: Es gibt eine Lösung die ich bitte nicht haben möchte:
    Die Lautstärkeregelung soll nicht die Systemlautstärke (bzw. Wave o.ä.) verändern!

    Vielleicht weis jemand wie die Lautstärkeregelung beim Windows MediaPlayer funktioniert?

    ---

    Wäre sehr dankbar über konstruktive Vorschläge und hilfreiche Ideen.


    MfG bonsai
     
  2. 1. Juli 2006
    Erstmal sorry für den Doppelpost - sind ja schon mehr als 24 Stunden vergangen und niemand hat was zum Thema geschrieben

    Ich selber habe nur diesen Code gefunden (der leider die WAVE-OUT Lautstärke im System reguliert - also sind alle anderen Programme auch leise!):

    Code:
    //Werte definieren
    WORD VolL, VolR; // Lautstärke links (VolL) - rechts (VolR)
    DWORD VolG, VolG_neu; // Lautstärke links UND rechts (VolG)
    
    // Lautstärke auslesen
     waveOutGetVolume(0,&VolG); // Lautstärke auslesen;
    
     VolL = LOWORD(VolG); // Lautstärke links (zwischen 0 und 65535)
     VolR = HIWORD(VolG); // Lautstärke rechts (zwischen 0 und 65535)
    
     TrackBar1->Position = StrToInt(String(VolL)); // Lautstärkeregler auf Position setzen
    
    // Lautstärke ändern
     Volume = TrackBar1->Position;
    
     VolG_neu = MAKELONG(Volume, Volume);
    
     waveOutSetVolume(0, (DWORD) VolG_neu); // Lautstärke speichern
    Damit dieser Code funktioniert braucht ihr ne TrackBar (Max = 65535).

    ---

    Hat wirklich niemand die Lösung für mein Problem? Es muss doch jemanden geben, der sowas schonmal gemacht hat - bzw. muss doch jemand wissen wie es gehen könnte *hoff*

    Bitte denkt mal drüber nach!


    MfG bonsai
     
  3. 1. Juli 2006
    schau mal ob dir was weiter hilft http://groups.google.de/group/borland.public.cppbuilder.vcl.components.using/.../2ff4b92da4a9998c

    man muss aber n bischen englisch beherrschen
     
  4. 1. Juli 2006
    Hab den Quelltext mal bisschen angepasst und in ein Testprogramm eingebaut ... das Ergebnis war dann etwas unerfreulich:
    Diesmal wurde nicht die WAVE-OUT Lautstärke des Systems verändert, sondern Wiedergabelautstärke des Systems
    (was eigtl. noch schlimmer ist ^^)

    Also vielen Dank für den Hinweis, aber scheint nicht die Lösung des Problems zu sein.

    Ich weis langsam nicht mehr weiter - habe sogut wie alles ausprobiert.

    Wenn noch jemand ne Idee haben sollte ... bitte Bescheid geben!


    MfG bonsai
     
  5. 1. Juli 2006
    schau da mal
    RED by Bemineni Srikanth
    Tramp MP3 Player / Decoder by Charles Kratzer
     
  6. 1. Juli 2006
    also mit dem TMediaPlayer kenn ich mich nich aus aber beim windows media player ist die lautstärkeregelung ziemlich einfach. wenn du den windos media player 10 hast ist ganz unten links der play button und rechts daneben eine grüne leiste. das ist die lautstärkeregelung.
    hoffe dir damit weitergeholfen zu haben
    mfg
     
  7. 1. Juli 2006
    Ist doch so weit ich gesehen habe für Microsfot Visual C++. TMediaPlayer ist aber ne Komponente von Borland

    Aber ich habe ne Lösung gefunden:

    in den Header:
    Code:
    typedef struct {
     DWORD_PTR dwCallback;
     DWORD dwItem;
     DWORD dwValue;
     DWORD dwOver;
     LPSTR lpstrAlgorithm;
     LPSTR lpstrQuality;
    } MCI_DGV_SETAUDIO_PARMS;
    Als Funktion zum verstellen der Lautstärke:
    Code:
     int volume = 1000; // 1000 ist hier das Maximum
     MCI_DGV_SETAUDIO_PARMS p;
     p.dwCallback = 0;
     p.dwItem = 0x4002;
     p.dwValue = volume;
     p.dwOver = 0;
     p.lpstrAlgorithm = NULL;
     p.lpstrQuality = NULL;
    
     mciSendCommand(MediaPlayer1->DeviceID, 0x0873,0x01000000 | 0x00800000, Cardinal(&p));
    {EDIT und der Vollständigkeit halber eine Funktion zum Auslesen der aktuellen Lautstärke }
    Als Funktion (am besten mit Rückgabewert DWORD oder int)
    Code:
     MCI_STATUS_PARMS p;
     p.dwCallback = 0;
     p.dwReturn = 1000;
     p.dwItem = 0x4019;
     p.dwTrack = 0;
     mciSendCommand(MediaPlayer1->DeviceID, MCI_STATUS, MCI_STATUS_ITEM, (DWORD) (LPMCI_STATUS_PARMS) &p);
     return p.dwReturn;
    Aber tatsächlich ne schrecklich unzureichend dokumentierte Sache ^^
     
  8. 1. Juli 2006
    es sollte ein ans sein, einen selber zu schreiben
     
  9. 1. Juli 2006
    WoW!!! Geil! Geil Geil! - es funktiniert!

    Danke, danke, danke! @KingKa0s

    Hier nochmal der Sourcecode (musste etwas verändern damit es funktioniert.


    Code:
    typedef struct {
     DWORD dwCallback;
     DWORD dwItem;
     DWORD dwValue;
     DWORD dwOver;
     LPSTR lpstrAlgorithm;
     LPSTR lpstrQuality;
    }
    MCI_DGV_SETAUDIO_PARMS;
    
    Die Funktion:
    Code:
    int volume = 1000; // 1000 ist Maximum
    MCI_DGV_SETAUDIO_PARMS p;
     p.dwCallback = 0;
     p.dwItem = 0x4002;
     p.dwValue = volume;
     p.dwOver = 0;
     p.lpstrAlgorithm = NULL;
     p.lpstrQuality = NULL;
    
    mciSendCommand(MediaPlayer1->DeviceID, 0x0873,0x01000000 | 0x00800000, Cardinal(&p));
    Boah - ich bin grad völlig fassungslos - hätte nicht gedacht das noch jemand die Lösung bringt!

    Wo hast du die Lösung denn gefunden? - Nochmals vielen Dank!
    Werd das ganze jetzt in meinen Wecker einbauen

    MfG bonsai
     
  10. 1. Juli 2006
    Google -> Groups -> "borland cppbuilder tmediaplayer volume" -> zweiter treffer von oben (bei mir zumindest)

    Die Google-Groups haben mir bisher immer gut weiter geholfen, allerdings benötigt man für manche Sachen viel Übung mit den Suchbegriffen, um was Nützliches zu finden.
     
  11. 1. Juli 2006
    Yep, bei mir auch - ich sollte wohl mal auf die Google Groups umsteigen (die hab ich bisher NOCH NIE genutzt) - scheint man ja einiges zu finden.
    Hast du echt schön rausgesucht - Vielen Danke nochmals! Hast mir wirklich sehr geholfen.

    MfG bonsai

    *EDIT* Hab dir mal nen 10'er gevotet. */EDIT*
     
  12. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.