Jump to content

DVB Viewer Playliste an Winamp übergeben


Recommended Posts

hey,

 

ich hab folgendes problem am htpc:

 

die musikwiedergabe mit dem DVBViewer gefällt mir überhaupt nicht, außerdem fehlen mir die schönen winamp visualisierungen.

auf der anderen seite finde ich es in winamp vom handling her ziemlich schwierig vom sofa aus eine playliste zu erstellen, mit dem DVBViewer funktionierts super - einfach übers osd durch die verzeichnisse browsen und die titel oder ganze ordner hinzufügen.

 

ich hab mir jetzt folgende lösung gebastelt, die ich selbst noch ziemlich suboptimal finde.

 

 

1. schritt das command.vbs im DVBViewer verändern, dazu müssen erstmal eigene input befehle für die 4 osd farbtasten angelegt werden.

ist hier gut von Tjod beschrieben: http://wiki.DVBViewer.info/index.php/Command.vbs

 

sub main(Command)
Select Case Command

'OSD-Rot (geändert)
	Case 30500
		if osd.isvisible Then
	If windowmanager.isoverlay Then
		   	'Wird Grade ein Dialogfenster angezeigt Sende folgenden Befehl:
			   	SendCommand(74)

	ElseIf windowmanager.activeWindowID = 5 Then
		   	'Wird Grade das Musik-Fenster angezeigt dann sende folgenden Befehl:
			   	SendCommand(74)
		  SendCommand(69)

		   	Else
			   'Bei allen anderen OSD Fenster folgenden Befehl Senden:
			   	SendCommand(74)

			  End If

		Else
			'OSD-Show Video
			SendCommand(8204)
		End if 

	case 30501
  SendCommand(75)

'OSD-Gelb (geändert)
	Case 30502
		if osd.isVisible Then
	If windowmanager.isoverlay Then
		   	'Wird Grade ein Dialogfenster angezeigt Sende folgenden Befehl:
			   	SendCommand(76)

	ElseIf windowmanager.activeWindowID = 2004 Then
		   	'Wird Grade das Playlist-Fenster angezeigt dann sende folgenden Befehl:
			   	SendCommand(76)
	SendCommand(16383)
	SendCommand(16382)
	OSD.ExecNewProcess "C:\Dokumente und Einstellungen\Nussman\Desktop\autoitskripte\HTPC\DVBViewer\dvbviewermusik.exe", "", False, False


		   	Else
			   'Bei allen anderen OSD Fenster folgenden Befehl Senden:
			   	SendCommand(76)

			  End if
		Else
			'OSD-Show FavChannels
			SendCommand(8200)
		End if 

	   case 30503
  SendCommand(77)
End Select
end sub

 

also wenn das osd fenster musik offen ist wird auf den befehl "osd rot" sowohl der ausgewählte titel der playliste hinzugefügt und gleichzeitig die playliste im DVBViewer gestopt (um zu verhindern, dass gleich die wiedergabe startet

im osd fenster "playlist wird auf den befehl "osd gelb" die erstellte playliste gespeichert, der DVBViewer minimiert und der graph gestoppt (ka obs nötig ist, wollte nur das sich winamp und DVBViewer nicht in die haare kriegen)

anschließend wird ein skript von mir ausgeführt - hier mal der quellcode (ich habs mal in grün auskommentiert):

 

#include <GUIConstants.au3>

if FileExists(@ScriptDir & "\konfig.ini") = 0 Then

Opt("GUICoordMode", 1)

$GUI = GUICreate("DVBViewer Playlist-Verzeichnis angeben",500, 100)

$Input =GUICtrlCreateInput("", 10, 10, 400)

$open = GUICtrlCreateButton("./.", 420, 7)

$speichern = GUICtrlCreateButton("Speichern", 210, 40,80, 40)

 

GUISetState()

while 1

$msg = GUIGetMsg()

Switch $msg

case $GUI_EVENT_Close

Exit

case $speichern

Iniwrite(@ScriptDir & "\konfig.ini", "Playlist", "1",GUICtrlRead($Input))

GUIDelete($GUI)

ExitLoop

Case $open

$playlist = FileOpenDialog("", "C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\CMUV\DVBViewer", "Playlist (*.m3u)")

GUICtrlSetData($Input, $playlist)

Endswitch

wend

endif

;wenn keine konfig.ini vorhanden ist wird eine kleine gui erzeugt um diese zu erstellen und dort den ort wo der DVBViewer seine playliste abspeichert auszuwählen

; eigentlich eher unwichtig für das ganze, könnte man auch weglassen und über eine von hand erstellte .ini lösen

 

ShellExecuteWait(IniRead(@ScriptDir & "\konfig.ini","Playlist", "1", "")) ; hier wird die vom DVBViewer erstellen playlist mit dem von windows dafür vorgesehenen prog. abgespielt (bei mir winamp, klar) - das skript pausiert bis winamp wieder geschlossen wird

 

$DVBViewer = ObjGet ("", "DVBViewerServer.DVBViewer") ;zur kommunikation mit dem DVBViewer

If $DVBViewer = 0 Then

MsgBox (1, "", "Keine Verbindung zum DVBViewer möglich") ;wenn com server nicht erreichbar ist wird das skript beendet (sollte normal nicht vorkommen)

Exit

Else

$DVBViewer.SendCommand (16397) ; der DVBViewer wird in den zustand vor ausführen des skripts versetzt

$DVBViewer.SendCommand (8203) ;das osd musik fenster wird angezeigt (könnte man bei interesse noch über einen eintrag in der .ini anpassbar machen)

WinActivate("DVBViewer") ;der DVBViewer erhält den fokus

EndIf

exit

 

 

hier mal das .exe file zum ausprobieren. http://rapidshare.com/files/181458366/dvbv...rmusik.exe.html (ich hoffe es läuft bei euch, bin nicht so der profi programmierer)

 

soweit funktioniert das schon, nur wirklich schön ists nicht.

z.b. muss ich zum nachträglichen hinzufügen eines titels winamp schließen, im DVBViewer den titel hinzufügen und das ganze von neuem starten.

 

des weiteren würde ich gerne winamp über den DVBViewer kontrollieren - ist es möglich über den DVBViewer von mir definierte com events zu senden?

sonst bleibt nur der umweg über eventghost/girder um winamp auch mit der fernbedienung zu steuern.

 

am allerbesten wäre es die winamp kontrolle ganz ins osd vom DVBViewer einzubinden und winamp nur im hindergrund laufen zu lassen - nur müsste man dann vom winamp abfangen welches lied gerade läuft und diese infos ans osd fenster playlist übergeben (und ich hab keine ahnung wie das gehen soll).

 

meine hoffnung ist, dass sich ein erfahrener plugin entwickler / programmierer mit einklinkt ;) und zumindest mal ein besseres konzept vorstellt.

ich helfe auch gern mit, nur mein können ist sehr beschränkt - ich kann nur einfaches autoit skript zeugs.

 

bessere einfache lösungen (z.b. eine übersetzung des autoit code direkt in .vbs) wären auch willkommen.

 

gruß nuts

Edited by nuts
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...