Einzelnen Beitrag anzeigen

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