Jump to content
WebSkater

Wie 'channelchange.vbs" eine "SendCommand(xxx)' hinzufügen?

Recommended Posts

WebSkater

Hi,

beim Zappen, oft mit Bild-in-Bild und quer durch alle die verschiedensten Senderformate, habe ich hinterher oft einen einen leichten Tonversatz (nicht mehr lippensynchron). Mit "Wiedergabe neu aufbauen" läßt sich das dann aber wieder zufriedenstellend lösen, was aber jedes mal extra über das Kontextmenü aufgerufen werden muß und auf Dauer mehr als lästig ist. Als Lösung dachte ich mir einfach "SendCommand(53)" in die "channelchange.vbs" einzubauen. Da ich von VBS allerdings bisher keine Ahnung habe ist mir das aber nicht gelungen. Könnte mir bitte jemand von den Profis zeigen wie "SendCommand(53)" in die "channlechange.vbs" eingebaut werden muß, damit bei jedem Senderwechsel automatisch ein Neuaufbau der Wiedergabe ausgeführt wird?

 

??? SendCommand(53) ???

 

channelchange.vbs:=

 

sub main(aID)
end sub

 

WebSkater

 

 

Share this post


Link to post
nuts

Du könntest auch einfach "schneller Senderwechsel" deaktivieren, dann wird nach jedem Senderwechsel der Filtergraph neu aufgebaut:

http://de.dvbviewer.tv/wiki/Optionen_TV_Radio

Share this post


Link to post
WebSkater
Posted (edited)

Hi,

hab ich mit und ohne schnellen Senderwechsel schon probiert, macht keinen Unterschied -> immer Tonversatz. Asynchronität ist schon seit Jahren ein großes Problem, mit und ohne neueste LAV, mit und ohne MAD. Hängt wohl mit Mehrkanal und Audiowiedergabe über Yamaha DSP-Z7 im "Home Cinema" zusammen. Hab mich schon damit abgefunden. Und jeder Versuch selbst in "channelchange.vbs" " "SendCommand(53)" oder "DVBViewer.SendCommand(53)" einzubauen (Batch-Kenntnisse durchaus vorhanden, aber für den einmaligen Zweck hier "VBS Lernen" ist mir zuviel) ist mit Fehlermeldungen oder schwarzem Bildschirm schief gegangen. Dachte nicht dass es offenbar durchaus schwierig ist diesen Befehl in die 2 vorhandenen Zeilen einzubauen. Aber Danke trotzdem.

 

Edited by WebSkater

Share this post


Link to post
nuts

sub main(aID)

   Sendcommand(53)

end sub 

 

funktioniert nicht? Kanns grad leider selbst nicht testen ... 

Share this post


Link to post
WebSkater

Leider nein,

gibt nur einen "Black Screen" und alle Eingaben sind blockiert. Andere Versuche (was gar nicht mehr was ich alles schon probiert habe) endeten bestenfalls mit irgendwelchen Fehlermeldungen wie "Object not found", "Object not defined" oder "Üngültige Zeichen" o.ä. , aber DVBViewer lief zuminest weiter. Deshalb ja meine Anfrage. Ich wußte allerdings nicht mehr, daß deaktivieren von "Schneller Senderwechsel" ein "Wiedergabe neu aufbauen" zur Folge hat. Daher interessiert mich meine ursprüngliche Frage zwar weiterhin, ist aber nicht mehr von so extremer Bedeutung für mich. Denn bei nochmaliger Analyse und Überprüfen meines Problems kam ich zu dem Ergebnis, daß hauptsächlich mit Beenden von Bild-in-Bild eine kurze sichtbare "Bildstörung" auftritt und im Anschluß daran regelmäßig mehr oder weniger stark ausgeprägter Tonversatz auftritt. Daher nun meine 2. und wichtigere Frage: gibt es ev. durch eine anderes Skipt (command.vbs?) die Möglichkeit mit Beenden des BiB-Modus ein "Wiedergabe neu aufbauen" zu verknüpfen?

 

An die Mods: falls ein Umbennen dieses Threads oder ein komplett neuer Thread oder ein Verschieben sinnvoll wäre, dann dies bitte machen und mich informieren.

 

WebSkater

Share this post


Link to post
Griga
Posted (edited)

SendCommand(53) funktioniert, aber das kannst du in der einfachen Form vergessen, weil es den DVBViewer in eine Endlosschleife schickt. Der Neuaufbau der Wiedergabe beinhaltet (ebenso wie der Start des DVBViewers) das Einschalten eines Senders, wodurch das Skript erneut aufgerufen wird.

 

Das Skript muss sich deshalb irgendwo merken, welcher Sender zuletzt eingeschaltet wurde, und auf SendCommand(53) verzichten, wenn es der gleiche Sender wie zuvor ist. Eine globale Variable im Skript erfüllt diesen Zweck nicht, weil sie verschwindet, sobald das Skript durchgelaufen ist. Man muss den Wert von aID an einem Ort speichern, wo er erhalten bleibt.

 

Dafür bietet sich eine Umgebungsvariable an, die Windows beibehält, solange der Prozess (also der DVBViewer) läuft. Wenn man ihn beendet, ist sie wieder weg.  Insgesamt sieht das dann so aus:

sub main(aID)
  Set sh = CreateObject("WScript.Shell")
  Set env = sh.Environment("PROCESS")
  If CSTR(aID) <> env("last_channel_id") Then 
    'anderer Sender als zuvor, ID speichern
    env("last_channel_id") = aID
    'Wiedergabe neu aufbauen
    SendCommand(53)
  End If  
end sub

Bevor mich jetzt alle für einen VBScript-Experten halten: Ich kann die Sprache auch nur rudimentär. Die obigen Elemente habe ich im Web zusammengesucht.

 

Edited by Griga
Korrektur im Skript - siehe unten

Share this post


Link to post
WebSkater
Posted (edited)

Vielen Dank für Deine Hilfe,

aber so ganz funktioniert das immer noch nicht. Mit obigem channelchange.vbs bekomme ich die folgende (Fehler?)Meldung:

 

DVBViewer

13 Laufzeitfehler im Microsoft VBScript

Description: Typenkonflikt: 'CInt'

Message:

Ja

Nein

 

Noch eine Idee woran's liegt?

Und auf welchem Weg könnte man man ein "Wiedergabe neu aufbauen" immer mit dem Beenden von Bild-in-Bild realisieren? Auch der Weg allein dahin ohne die perfekte Endlösung zu haben könnte mir weiterhelfen.

Hab diesen Thread bei meiner Suche gefunden https://www.DVBViewer.tv/forum/topic/47834-vb-skript-frage/

und hoffe das es ähnlich gehen könnte, also command.vbs + pip.vbs. Aber bevor ich VBS lerne oder mir notfalls Hilfe im örtlichen Computerclub suche müßte mir jemand von den Profis hier etwas dazu sagen können.

Edited by WebSkater

Share this post


Link to post
Griga
vor 2 Stunden schrieb WebSkater:

Mit obigem channelchange.vbs bekomme ich die folgende (Fehler?)Meldung:

 

Vorhin lief es hier bestens, aber nachdem ich den PC neu gestartet habe, erhalte ich den gleichen Fehler. Da soll noch mal jemand sagen, Computer verhalten sich deterministisch... :wacko:

 

Mit

 

  If CSTR(aID) <> env("last_channel_id") Then

 

funktioniert es aber auch nach einem Neustart. Das Problem ist hier offenbar, dass aID vom Typ Ganzzahl und die Umgebungsvariable vom Typ String ist. Deshalb habe ich letztere für den Vergleich mit CInt in eine Ganzahl konvertiert. Da env("last_channel_id") beim ersten DVBViewer-Start einen leeren String liefert, weil die Umgebungsvariable noch nicht existiert, klappt die Konvertierung nicht und erzeugt einen Fehler.  Die obigen Zeile macht es andersherum und konvertiert aID in einen String.

 

Bei mir hat die erste Variante vor dem Neustart offenbar funktioniert, weil von vorherigen Experimenten noch eine Umgebungsvariable namens last_channel_id existierte, die nicht nur für den Prozess, sondern für die gesamte User Session galt.

 

vor 2 Stunden schrieb WebSkater:

Und auf welchem Weg könnte man man ein "Wiedergabe neu aufbauen" immer mit dem Beenden von Bild-in-Bild realisieren?

 

Ich wüsste nicht, dass das geht.

 

vor 10 Stunden schrieb WebSkater:

Denn bei nochmaliger Analyse und Überprüfen meines Problems kam ich zu dem Ergebnis, daß hauptsächlich mit Beenden von Bild-in-Bild eine kurze sichtbare "Bildstörung" auftritt und im Anschluß daran regelmäßig mehr oder weniger stark ausgeprägter Tonversatz auftritt.

 

Du dokterst an Symptomen herum, anstatt nach der Ursache zu forschen.Offenbar kommt es beim Abschalten von Bild in Bild zu Datenverlusten. Man könnte vermuten, dass die verwendeten Decoder damit zu tun haben und für Bild in Bild andere probieren. Es könnte aber auch an der verwendeten DVB-Hardware liegen. Welche kommt dabei zum Einsatz? Sind es bei Hauptwiedergabe und Bild in Bild Sender von verschiedenen Transpondern oder vom gleichen? Macht das einen Unterschied?

 

Share this post


Link to post
WebSkater
Posted (edited)

Danke für die Scriptkorrektur und die wertvollen anderen Hinweise, denen ich sorgfältig nachgehen werde.

 

Quote

Du dokterst an Symptomen herum, anstatt nach der Ursache zu forschen

 

Da hast Du wohl recht. Aber das liegt daran, daß mich die "Ursachenforschung" beim jahrelangen Versuch das Problem des Bild/Tons-Versatzes befriedigend - beim Einsatz von Mehrkanal (AC3-5.1, DTS, DTS-HD) unter Verwendung eines Verstärkers (per HDMI) - überhaupt nicht weiter gebracht hat. Seitdem beschränke ich mich auf's Ausprobieren aller in Betracht kommenden Einstellungen (DVB-Source Filter, Audio- und Videodecoder in DirectX, ...) und bin zufrieden wenn's mit irgendeinem Kniff etwas besser, sprich synchroner wird. Und wenn jetzt nach "Extrem-Zappen auch mit Bild-in-Bild" ev. auch mit doppelter "Widergabe neu aufbauen" (da ja ohne schnellen Senderwechsel und trotzdem nicht befriedigend) der Film synchron starten würde, wäre ich im Augenblick mit den DVBViewer-Einstellungen zufrieden.

 

Ich verwende DVBViewer 5.6.4.0 mit dem letzten DVB-RS und folgender Hardware:

- Digital Devices Cine S2 V7

- Win7 x64 PC als Media-PC (= Win7 + nur Software für Audio und Videowiedergabe) mit

   MSI A88XM-E35 V2 (Motherboard) mit integrierter AMD Onboardgrafik)

   CPU=AMD A6-7400 Radeon R5, 6 Compute Cores 2C+4G

   8 GB Ramm

- per HDMI verbunden mit AV-Verstärker Yamaha DSP-Z7 und Sony KDL-52Z5500 als TV

DirectX-Einstellungen sind:

- Video A = EVR Custom + neueste LAV Video

- Video B = MadVR + neueste LAV Video

- Audio A = DirectSound Yamaha DSP-Z7 + neueste LAV Audio

- Audio B = DirectSound Yamaha DSP-Z7 + AC3Filter

und für DirectX BiB:

- Video = EVR Enhanced (kein Custom mölich?) + neueste LAV Video

- Audio = Yamaha DSP-Z7 + neueste LAV Audio

 

Quote
7 hours ago, WebSkater said:

Und auf welchem Weg könnte man man ein "Wiedergabe neu aufbauen" immer mit dem Beenden von Bild-in-Bild realisieren?

 

Ich wüsste nicht, dass das geht.

 

Die Beschreibung weiter unten im oben bereits aufgeführten Thread [ https://www.DVBViewer.tv/forum/topic/47834-vb-skript-frage/ ] von einer zu erstellenden command.vbs und dann das Verwenden einer pip.vbs läßt mich hoffen, dass das vielleicht gehen könnte. Aber so ganz steig ich da noch nicht durch.

 

Werde heute abends unter Berücksichtigung Deiner Idee auch auf die Transponder zu achten weiter testen.

 

 

Edited by WebSkater

Share this post


Link to post

Join the conversation

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

Guest
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...