从字符串播放 video.m3u8 而不是文件 [ LibVLCSharp ]

问题描述 投票:0回答:1

我正在使用 LibVLCSharp 库来播放 m3u8 文件。 (TS加密视频) 我想在代码中使用字符串(同一文件的文本)而不是 m3u8 文件以提高安全性。 {事实上,我用静态密钥加密m3u8文件并将其保存在硬盘上。我想在程序中解密并播放m3u8文件,而不将解密的文件保存在硬盘上。}

库可接受的代码

            LibVLC _libVLC = new LibVLC("");
            _libVLC.SetLogFile("log1.txt");

            videoView1.MediaPlayer = new MediaPlayer(_libVLC);

            Media plist = new Media(_libVLC, "vi/file.m3u8", FromType.FromPath);
            videoView1.MediaPlayer.Play(plist);

我想要的代码不起作用

string s = "#EXTM3U\r\n
            #EXT-X-VERSION:3\r\n
            #EXT-X-TARGETDURATION:17\r\n
            #EXT-X-MEDIA-SEQUENCE:0\r\n
            #EXT-X-PLAYLIST-TYPE:VOD\r\n
            #EXT-X-KEY:METHOD=AES-128,URI=\"key\",IV=0x00000000000000000000000000000000\r\n
            #EXTINF:16.666667,\r\n
            file0.ts\r\n
            #EXTINF:8.333333,\r\n
            file1.ts\r\n
            #EXTINF:8.333333,\r\n
            file2.ts\r\n
            #EXTINF:9.133333,\r\n
            file3.ts\r\n
            #EXT-X-ENDLIST";

    LibVLC _libVLC = new LibVLC("");
    _libVLC.SetLogFile("log1.txt");

    videoView1.MediaPlayer = new MediaPlayer(_libVLC);

    byte[] byteArray = Encoding.UTF8.GetBytes(s);
    Stream stream = new MemoryStream(byteArray);
    MediaInput aa = new StreamMediaInput(stream);

    Media plist = new Media(_libVLC, aa, ""); 
    videoView1.MediaPlayer.Play(plist);

使用 LibVLCSharp 播放 m3u8 视频,形成字符串。

video stream m3u8 libvlcsharp
1个回答
0
投票
using(var libVLC = new LibVLC())
{
    var media = new Media(libVLC, "vi/file.m3u8", FromType.FromLocation);
    await media.Parse(MediaParseOptions.ParseNetwork);
    using (var mp = new MediaPlayer(media.SubItems.First()))
    {
            var r = mp.Play();
            Console.ReadKey();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.