Jump to content
ToddFrankson

Does anyone know a delphi component that can play videos from a stream

Recommended Posts

9 hours ago, Der schöne Günther said:

Maybe just a TWebBrowser (preferably using the Edge/WebView2 engine) is an option?

This is interesting blog
https://blogs.embarcadero.com/execute-scripts-and-view-source-with-tedgebrowser/


Perhaps this might work for showing videos, but there is also the possibility that certain Codecs or Plugins were missing, like  HLS (.m3u8) :

var
  HTMLContent: string;
begin
  HTMLContent := '<!DOCTYPE html>' +
                 '<html>' +
                 '<body>' +
                 '<video width="640" height="480" controls>' +
//either local file
                   '<source src="file:///C:/Pfad/zum/Video.mp4" type="video/mp4">' +
//or stream          
                 '<source src="https://example.com/stream.m3u8" type="application/x-mpegURL">' +  
                 'Dein Browser unterstützt das Video-Tag nicht.' +
                 '</video>' +
                 '</body>' +
                 '</html>';
  EdgeBrowser1.NavigateToString(HTMLContent);
end;

For accessing local files, there could be the need to add AdditionalBrowserArgument flags
https://learn.microsoft.com/en-us/microsoft-edge/webview2/concepts/working-with-local-content?tabs=dotnetcsharp#loading-local-content-by-navigating-to-a-file-url
https://docwiki.embarcadero.com/Libraries/Athens//de/Vcl.Edge.TCustomEdgeBrowser.AdditionalBrowserArguments

Share this post


Link to post

@ToddFrankson Pls change title of topic from "Does anyone know of...." to "Play a video from a stream".
Descriptive topic titles help users with finding relevant posts.

Share this post


Link to post
4 minutes ago, Lars Fosdal said:

Pls change title of topic from "Does anyone know of...." to "Play a video from a stream".

?!? How can you change the title?

Share this post


Link to post
4 hours ago, Lars Fosdal said:

@ToddFrankson Pls change title of topic from "Does anyone know of...." to "Play a video from a stream".
Descriptive topic titles help users with finding relevant posts.

I was attempting to lure people in with curiosity....

Share this post


Link to post
15 hours ago, Anders Melander said:

There's the old TMediaPlayer but AFAIR it's a pain (but possible) to get to work with TStream.

 

A better alternative would be to import the type library for the Windows Media Player ActiveX and use that.
https://chapmanworld.com/windows-media-player-in-delphi/

Neither currently allows a stream outside of a server side video.....

5 hours ago, Rollo62 said:

This is interesting blog
https://blogs.embarcadero.com/execute-scripts-and-view-source-with-tedgebrowser/


Perhaps this might work for showing videos, but there is also the possibility that certain Codecs or Plugins were missing, like  HLS (.m3u8) :


var
  HTMLContent: string;
begin
  HTMLContent := '<!DOCTYPE html>' +
                 '<html>' +
                 '<body>' +
                 '<video width="640" height="480" controls>' +
//either local file
                   '<source src="file:///C:/Pfad/zum/Video.mp4" type="video/mp4">' +
//or stream          
                 '<source src="https://example.com/stream.m3u8" type="application/x-mpegURL">' +  
                 'Dein Browser unterstützt das Video-Tag nicht.' +
                 '</video>' +
                 '</body>' +
                 '</html>';
  EdgeBrowser1.NavigateToString(HTMLContent);
end;

For accessing local files, there could be the need to add AdditionalBrowserArgument flags
https://learn.microsoft.com/en-us/microsoft-edge/webview2/concepts/working-with-local-content?tabs=dotnetcsharp#loading-local-content-by-navigating-to-a-file-url
https://docwiki.embarcadero.com/Libraries/Athens//de/Vcl.Edge.TCustomEdgeBrowser.AdditionalBrowserArguments

 

I need the ability to do this locally, without any file.  For example, the same way you can load an image from a stream. 

The videos are small and are stored as proprietary objects.

They are extracted to a MemoryStream.  To play them I currently have to write them to a file (Memorystream.savetofile) and then load them in a player (WindowsMediaPlayer.URL).  I'm looking for something to cut out the write to file 

 

 

Share this post


Link to post
4 hours ago, ToddFrankson said:

Neither currently allows a stream outside of a server side video.....

I have some code that I use in my resource editor to display video from a memory stream, so it's definitely possible.

I just looked and it's about 500-600 lines of code and involves a custom I/O handler among other horrors.

 

Here's a screenshot:

image.thumb.png.a13662d989823169310151d4d67361e6.png

And here's a video:

 

Hmm. Never mind with the video. I can't figure out how to create a video this forum supports.

Edited by Anders Melander

Share this post


Link to post
55 minutes ago, Anders Melander said:

I have some code that I use in my resource editor to display video from a memory stream, so it's definitely possible.

I just looked and it's about 500-600 lines of code and involves a custom I/O handler among other horrors.

 

Here's a screenshot:

image.thumb.png.a13662d989823169310151d4d67361e6.png

And here's a video:

 

 

Hmm. Never mind with the video. I can't figure out how to create a video this forum supports.

Do you have it available somewhere so I can at least take a look?

 

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×