berens Posted May 17, 2006 Share Posted May 17, 2006 Hallo! Ich versuche gerade mit dem COM-Template aus dem Mitgliederbereich den DVBViewer Pro zu steuern. z.B. procedure TfrmMain.Button1Click(Sender: TObject); begin DVBViewer.SendCommand( CMD_RECORD); end; Beim Klick ist DVBViewer=Nil (Interface wurde ja noch nicht genutzt), und dann würd über function TfrmMain.DVBViewer: IDVBViewer; var Unknown: Iunknown; begin if FDVBViewer = nil then begin Unknown := nil; if GetActiveObject(CLASS_DVBViewer, nil, Unknown) <> MK_E_UNAVAILABLE then Unknown.QueryInterface(IID_IDVBViewer, FDVBViewer); end; Result := FDVBViewer; end; der DVBViewer angesprochen. Leider verabschiedet sich das Programm bei beiden Delphiversionen in der Zeile Unknown.QueryInterface(IID_IDVBViewer, FDVBViewer); mit --------------------------- Benachrichtigung über Debugger-Exception --------------------------- Im Projekt template.exe ist eine Exception der Klasse $C0000005 mit der Meldung 'access violation at 0x0045376d: read of address 0x00000000' aufgetreten. --------------------------- Anhalten Fortsetzen Hilfe --------------------------- Quote Link to comment
Guest Lars_MQ Posted May 17, 2006 Share Posted May 17, 2006 read of address 0x00000000' aufgetreten. GetactiveObject liefert kein interface zurück und dann geht der zugriff auf Unknown in die hose. Ich weiss nicht was ich mir dabei gedacht habe, besser wäre if succeeded(GetActiveObject(CLASS_DVBViewer, nil, Unknown)) then Läuft denn der DVBViewer? Quote Link to comment
berens Posted May 17, 2006 Author Share Posted May 17, 2006 Vergessen zu sagen: Klar läuft der DVBViewer. Ich bekomme zwar kein Bild oder so (siehe http://www.DVBViewer.com/forum/index.php?showtopic=12585 ) aber das sollte ja nicht stören, auch in soweit da auf dem anderen PC mit Delphi2005 und einwandfrei funktionierendem DVBViewer das selbe Problem auftritt... Irgendeine Idee warum das nicht geht? Sollte mein Programm vielleicht direkt den DVBViewer starten und dann irgendwie direkt über dessen Handle gehen? Quote Link to comment
Guest Lars_MQ Posted May 17, 2006 Share Posted May 17, 2006 Coinitialize(nil) bei formcreate und Couninitialize bei formdestroy aufrufen. Eventuell hat sich ja was geändert bei Delphi, in der 7 wird das beim einbinden der comobj macht. Quote Link to comment
berens Posted May 17, 2006 Author Share Posted May 17, 2006 (edited) Sehr schön, das scheint soweit zu klappen Danke! Ich muss ein Programm schreiben, dass die DVB-T Sendungen aufnehmen lässt. Ich geben die dann abwechselnd (jedes File ca. 1 GB) wieder, da das mit dem Streaming zu VLC leider nicht so klappt... Kann ich den Aufnahme-Dateinamen setzen? Leider kann auch der Laptop hier ja nicht über Netzwerk oder DVB-T-Karte (Problem siehe oben) Fernsehen wiedergeben bzw. aufnehmen. Kann ich irgendwie mit Probledaten (Datei, DVD oder Livestream? etwas aufnehmen lassen? Ich muss mir mal die DirectX-Quelle DVBFile anschauen, vielleicht lässt sich damit was machen (muss mal sehen wie man die Aufnehmen kann --> RTFM mach ich gleich mal). Generell sehr gutes Programm, hängt sich nur leider recht oft auf Edited May 18, 2006 by berens Quote Link to comment
Guest Lars_MQ Posted May 17, 2006 Share Posted May 17, 2006 Im allgemeinen hängt sich der Viewer sehr selten auf. Schuld ist meist das Directshowsubsystem von Windows. Mit richtig eingestellten decodern und ganz wichtig ohne irgendwelche codecpacks (!) läuft er sehr stabil. Ich habe auch nur die hälfte von dem verstanden, was Du machen willst. Wir können Dir gerne helfen, aber dazu musst Du Dich etwas verständlicher ausdrücken Quote Link to comment
daffy Posted May 17, 2006 Share Posted May 17, 2006 Coinitialize(nil) bei formcreate und Couninitialize bei formdestroy aufrufen. Böse. Nimm einfach den constructor und den destructor. Gründe siehe Google Groups. Habe mal religiöse Kämpfe diesbezüglich gefochten (entweder in den Gruppen für Delphi oder denen für C++Builder). Quote Link to comment
Guest Lars_MQ Posted May 17, 2006 Share Posted May 17, 2006 Egal wo es aufgerufen wird, hauptsache es ist drinne, bevor du comfunktionen aufrufst Quote Link to comment
berens Posted May 18, 2006 Author Share Posted May 18, 2006 So, wieder da (eben 2 Tage ohne Internet dank Telekom). Also, Problemstellung: Zeige DVB-T Fernsehen in unserer eigenen Delphiapplikation an. Die TV-Karte sollte nicht zwingend im selben PC sein, wie der, auf dem die Anzeige läuft. Möglicher Lösungsansatz: Stelle auf dem TV-PC mit DVBViewer einen Unicast stream bereit und zeige diesen in der eigenen Applikation an. --> Geht leider nicht, weil VLC (das haben wir eingebettet) damit leider nicht so wirklich zurecht kommt --> Multicast können wir dem Kunden (großes Firmennetzwerk) nicht zumuten (geht aber glaube ich eh nicht mit VLC) Praktische Lösung die ich zu automatisieren Anstrebe (für Alternativen wäre ich sehr, sehr dankbar!): DVBViewer zeichnet die Sendung die dargestellt werden soll auf die Festplatte auf. (Das wird von meinem Programm veranlasst, und auch alles drumherum (Steuerung des Clients etc.) Der "Client" greift über Datei- und Druckerfreigabe auf diese Datei zu und spielt diese ab. Dank des COM-Interfaces kann ich denke ich mal auch den Dateinamen herausbekommen (unter dem das Programm atm aufgezeichnet wird) und diese Datei dann über Netzwerk abspielen lassen. Nachdem das Programm / der Film vorbei ist wird die Aufnahme gestoppt und die Datei gelöscht. Kann ich den Dateinamen aus selber setzen, unter dem jetzt direkt aufgenommen wird? Man kann ja einstellen, dass nach z.B. 600 MB eine neue Datei angefangen wird. Steht die dann auch bei RecordManager.Items dabei? PS: Warum heisst das bei RecordManager ItemS und bei TimerManager Item (glaube ich)? Quote Link to comment
Guest Lars_MQ Posted May 18, 2006 Share Posted May 18, 2006 Warum heisst das bei RecordManager ItemS und bei TimerManager Item (glaube ich)? Weil ich solche sachen manchmal spät in der nacht mache Ich glaube, die vlc lösung wäre per unicaststream die beste. Hast Du mal probiert mit dem vlc mediaplayer dich an den Viewer via http:\\[ip]:2345 zu verbinden? Wenn das damit geht, sollte es auch in eurer app gehen. ich habs hier bei mir mal fix aufgebaut, läuft tiptop. Über Navigation wählt man die ServiceID aus und schon zeigt der vlc das bild. Getestet mit dem viewer direkt -> optionen -> netzwerk unicast aktiviert. Quote Link to comment
berens Posted May 18, 2006 Author Share Posted May 18, 2006 Zu schön wäre es: http://www.DVBViewer.com/forum/index.php?showtopic=12568 Ich glaube dir, dass es _generell_ geht, und finde das auch beachtlich dass das (generell ) klappt. Leider ist er halt bei mir so, dass es nur sehr, seeeeeehr sporadisch klappt (weshalb auch immer). Und das kann/darf ich beim Kunden leider nicht anbieten, wenn es nicht 99% funktioniert... Netzwerkfunktion wie oben beschrieben schon in allen Konstellationen (3 Tage lang!) durchgetestet, aber wie gesagt, siehe Link oben. Quote Link to comment
Guest Lars_MQ Posted May 18, 2006 Share Posted May 18, 2006 <entry name="Type">1</entry> <entry name="Nid">192.168.1.24</entry> <entry name="MulticastIP">224.0.0.1</entry> <entry name="MulticastPort">2345</entry> <entry name="MulticastTTL">1</entry> <entry name="MulticastBuffer">376</entry> <entry name="UnicastPort">1234</entry> <entry name="Buffersize">376</entry> <-- hier <entry name="Maxusers">2</entry> ok, ich seh schon. Ein verdacht: Ändere mal in den unicast optionen die buffergrösse von 376 (=2 x 188 (ein TS paket)) auf 18800 (evtl. etwas damit spielen aber bitte immer vielfache von 188). Ich glaube die 376 sind zu klein. Natürlich keine garantie, aber ein versuch ist es wert Quote Link to comment
berens Posted May 19, 2006 Author Share Posted May 19, 2006 Kann das leider nicht ausprobieren, oh man! Ich bekomm pro Stunde imme andere Sender rein (mal ARD, mal ZDF, mal nen halben Tag lang gar keinen Sender) _trotz_ TV-Kabel von KabelDeutschland! Jedes mal, wenn ich den Antennenstecker an der Karte ziehe, hängt sich DVBViewer komplett auf! Quote Link to comment
Derrick Posted May 19, 2006 Share Posted May 19, 2006 trotz_ TV-Kabel von KabelDeutschland! ..kann es sein, dass du hier die leute an der nase rumführst? Anscheinend willst du kabel mit deiner dvb-t karte empfangen. Jedenfalls vermute ich das, oder hast du auch noch ne kabelkarte? Quote Link to comment
berens Posted May 19, 2006 Author Share Posted May 19, 2006 (edited) trotz_ TV-Kabel von KabelDeutschland! ..kann es sein, dass du hier die leute an der nase rumführst? Anscheinend willst du kabel mit deiner dvb-t karte empfangen. Jedenfalls vermute ich das, oder hast du auch noch ne kabelkarte? <{POST_SNAPBACK}> Das klärt sich gerade... Derrick, wir beide diskutieren da bereits in http://www.DVBViewer.com/forum/index.php?s...4&st=0&p=94845& drüber. Aber so langsam verstehe ich das Problem Edit: Unabhängig davon: sobald der Empfang schlechter wird, hängt sich DVBViewer auf bis der Empfang wieder besser wird... Edited May 19, 2006 by berens Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.