AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi TMemoryStream über ActiveX an NetStream Objekt in Flash Applikation
Thema durchsuchen
Ansicht
Themen-Optionen

TMemoryStream über ActiveX an NetStream Objekt in Flash Applikation

Ein Thema von gabneo · begonnen am 19. Sep 2014 · letzter Beitrag vom 22. Sep 2014
Antwort Antwort
gabneo

Registriert seit: 15. Okt 2006
Ort: Deutsche Toskana :)
93 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

TMemoryStream über ActiveX an NetStream Objekt in Flash Applikation

  Alt 19. Sep 2014, 18:24
Hallo liebe Delphi Gemeinde,

es gibt da einen weißen Fleck auf meiner Wissenslandkarte den ich gerne erschließen würde.
Und zwar möchte ich einen TMemoryStream mit Videodaten an ein "NetStream" Objekt, dass in einer Flash-Applikation die in meinem Wrapper läuft, übergeben. Dazu könnte man möglicherweise "fertige" Wrapper verwenden (z.B. Almediadev Smartflash, f-in-box, delphiflash).
Aber, ich habe den Hauptteil der Funktionalität nach meinen Bedürfnissen bereits umgesetzt und möchte zudem genau verstehen wie es funktioniert
Leider finde ich auch in der ShockwaveFlashObjects_TLB dazu keine Anhaltspunkte (kann sein das ich sie übersehe).

1. Hat jemand eine Idee wie ich den TMemoryStream an die SWF senden und mit dem NetStream diesen auffangen kann?
2. Wie funktioniert das mit dem Vor- und Zurückspulen bzw. muss ich mich darum kümmern?
3. Ist das Thema AMF / Delphi - kbmMW (extensive AMF0/AMF3 support) der richtige Einstieg?

Vielen Dank!

[EDIT]Leider ist auf der Seite der Flashanwendung NetStream.appendBytes(bytes); keine Option -> ist nicht aufwärtskompatibel zu H.264 codierten Videoformaten wie z.B. *.f4v Dateien sondern erwartet *.flv.[/EDIT]
[EDIT 2]Gerade frisch entdeckt auf der Internetseite von Adobe ist eine Beschreibung wie ich das NetStream Objekt für einen H.264 codiertes Video empfangsbereit machen kann. In Verbindung mit "Pascal librtmp" (torry) könnte ich einen RTMP Server auf localhost eröffnen...aber das finde ich extrem unästhetisch![/EDIT 2]

Geändert von gabneo (20. Sep 2014 um 11:42 Uhr)
  Mit Zitat antworten Zitat
gabneo

Registriert seit: 15. Okt 2006
Ort: Deutsche Toskana :)
93 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: TMemoryStream über ActiveX an NetStream Objekt in Flash Applikation

  Alt 20. Sep 2014, 12:22
Bei stackoverflow scheint es eine Umsetzung in C++ zu geben...leider verstehe ich die Lösung nicht. Der von Flash "erwartete" Stream scheint ersetzt zu werden?!
Kann mir jemand bei der Übersetzung ins Delphi helfen?

Geändert von gabneo (20. Sep 2014 um 12:49 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: TMemoryStream über ActiveX an NetStream Objekt in Flash Applikation

  Alt 22. Sep 2014, 11:07
Kann mir jemand bei der Übersetzung ins Delphi helfen?
Was hast du denn bisher und woran scheitert es zur Zeit?
  Mit Zitat antworten Zitat
gabneo

Registriert seit: 15. Okt 2006
Ort: Deutsche Toskana :)
93 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: TMemoryStream über ActiveX an NetStream Objekt in Flash Applikation

  Alt 22. Sep 2014, 12:22
Vielen Dank für die Antwort. Es hat sich herausgestellt, dass die C++ Lösung ein anderes Ziel verfolgt, nämlich die Flash Datei selbst aus einem Stream heraus zu öffnen. Das ist jedoch gar kein Problem.
Derzeit habe ich, sofern ich das richtig sehe, folgenden einzigen Lösungsweg:

1. Die Flash Anwendung meldet per ExternalAPI/ExternalInterface dass sie das nächste Video benötigt.
2. Der RTMP Server in meiner Applikation antwortet mit dem Stream des Videos.
3. Wird "gespult" meldet die Flash Anwendung per ExternalAPI/ExternalInterface die neue Zielzeit woraufhin die Delphi Anwendung im Stream an die korrekte Stelle springt.
4. Bei Ende des Videos (Darstellung des letzten Bytes) meldet die Delphi Anwendung das Ende des Videos an die Flash Anwendung mal wieder per ExternalAPI/ExternalInterface.

(Alternativ)
Im Processmonitor kann man sehen wie der NetStream (Flash) arbeitet.
Code:
Time               Process Name            PID   Operation                  Path                  Result      Detail
11:50:13,1568031   flashplayer_15_sa.exe   824   IRP_MJ_CREATE            C:\...\src\Movies\video   SUCCESS   Desired Access: Generic Read, Disposition: Open, Options: Sequential Access, Synchronous IO Non-Alert, Non-Directory File, Attributes: n/a, ShareMode: Read, AllocationSize: n/a, OpenResult: Opened
11:50:13,1581439   flashplayer_15_sa.exe   824   FASTIO_QUERY_INFORMATION   C:\...\src\Movies\video   SUCCESS   Type: QueryStandardInformationFile, AllocationSize: 25.378.816, EndOfFile: 25.377.805, NumberOfLinks: 1, DeletePending: False, Directory: False
11:50:13,1581571   flashplayer_15_sa.exe   824   FASTIO_QUERY_INFORMATION   C:\...\src\Movies\video   SUCCESS   Type: QueryStandardInformationFile, AllocationSize: 25.378.816, EndOfFile: 25.377.805, NumberOfLinks: 1, DeletePending: False, Directory: False
11:50:13,1581676   flashplayer_15_sa.exe   824   IRP_MJ_READ               C:\...\src\Movies\video   SUCCESS   Offset: 0, Length: 16.384, Priority: Normal
11:50:13,1583294   flashplayer_15_sa.exe   824   FASTIO_QUERY_INFORMATION   C:\...\src\Movies\video   SUCCESS   Type: QueryStandardInformationFile, AllocationSize: 25.378.816, EndOfFile: 25.377.805, NumberOfLinks: 1, DeletePending: False, Directory: False
11:50:13,1583397   flashplayer_15_sa.exe   824   FASTIO_QUERY_INFORMATION   C:\...\src\Movies\video   SUCCESS   Type: QueryStandardInformationFile, AllocationSize: 25.378.816, EndOfFile: 25.377.805, NumberOfLinks: 1, DeletePending: False, Directory: False
11:50:13,1584312   flashplayer_15_sa.exe   824   FASTIO_READ               C:\...\src\Movies\video   SUCCESS   Offset: 16.384, Length: 16.384
11:50:13,1585006   flashplayer_15_sa.exe   824   FASTIO_READ               C:\...\src\Movies\video   SUCCESS   Offset: 32.768, Length: 16.384
11:50:13,1585775   flashplayer_15_sa.exe   824   FASTIO_READ               C:\...\src\Movies\video   SUCCESS   Offset: 49.152, Length: 16.384
11:50:13,1586619   flashplayer_15_sa.exe   824   FASTIO_READ               C:\...\src\Movies\video   SUCCESS   Offset: 65.536, Length: 16.384
11:50:13,1586904   flashplayer_15_sa.exe   824   FASTIO_READ               C:\...\src\Movies\video   SUCCESS   Offset: 96.311, Length: 16.384
11:50:13,1588183   flashplayer_15_sa.exe   824   FASTIO_READ               C:\...\src\Movies\video   SUCCESS   Offset: 112.695, Length: 16.384
11:50:13,1596645   flashplayer_15_sa.exe   824   FASTIO_QUERY_INFORMATION   C:\...\src\Movies\video   SUCCESS   Type: QueryStandardInformationFile, AllocationSize: 25.378.816, EndOfFile: 25.377.805, NumberOfLinks: 1, DeletePending: False, Directory: False
11:50:13,1596735   flashplayer_15_sa.exe   824   FASTIO_READ               C:\...\src\Movies\video   SUCCESS   Offset: 0, Length: 16.384
11:50:13,1596873   flashplayer_15_sa.exe   824   FASTIO_READ               C:\...\src\Movies\video   SUCCESS   Offset: 128.168, Length: 16.384
11:50:13,1597285   flashplayer_15_sa.exe   824   FASTIO_READ               C:\...\src\Movies\video   SUCCESS   Offset: 510, Length: 16.384
11:50:13,1597504   flashplayer_15_sa.exe   824   FASTIO_READ               C:\...\src\Movies\video   SUCCESS   Offset: 132.457, Length: 17.193
11:50:13,1597639   flashplayer_15_sa.exe   824   FASTIO_READ               C:\...\src\Movies\video   SUCCESS   Offset: 96.682, Length: 16.384
11:50:13,1597756   flashplayer_15_sa.exe   824   FASTIO_READ               C:\...\src\Movies\video   SUCCESS   Offset: 222.560, Length: 16.384
...
11:52:10,1706265   flashplayer_15_sa.exe   824   FASTIO_READ               C:\...\src\Movies\video   SUCCESS   Offset: 25.358.444, Length: 16.384
Vielleicht könnte man die in den Arbeitsspeicher geladenen Daten durch eigene ersetzen...aber ich finde das noch hässlicher als einen RTMP Server aufzusetzen. Außerdem fangen dann Antivirenprogramme an zu maulen.

PS: Die Entwickler der Komponenten antworten leider nicht ob ihre Komponente TMemoryStream -> ByteArray/NetStream kann...sonst hätte ich mir mittlerweile einfach eine Komponente dafür gekauft.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz