如何播放嵌入式视频,防止在目录路径中生成新的视频文件?

时间:2016-05-13 16:10:03

标签: vb.net video filepath axwindowsmediaplayer

我正在开发用于播放视频文件的vb.net Windows应用程序。

我已经以这种方式在嵌入式资源中添加了视频文件:

  

项目 - >属性。然后选择“资源”选项卡。下一步选择   “添加资源” - >“从现有文件”。

我可以使用以下代码播放一个视频

   Dim FilePath = Path.Combine(Application.StartupPath, "My video.mp4")
    If (Not File.Exists(FilePath)) Then
        File.WriteAllBytes(FilePath, My.Resources.video1)
    End If

    AxWindowsMediaPlayer1.URL = FilePath
    AxWindowsMediaPlayer1.Ctlcontrols.play()

视频工作正常,但问题是,应用程序每次都在bin文件夹中创建视频文件。

你可以在这里看到......

enter image description here

我的应用程序的当前exe大小为200 MB,因为我在资源中添加了许多视频。 如果要每次都生成新的视频文件,将视频添加到资源中的用途是什么?

我对图像做了同样的事情,我在资源中添加了图像 在应用程序中使用, 但我没有要求。为了携带这些图像,它不会在运行应用程序后生成图像。

我可以将exe放在任何机器上,app可以完美地运行这些图像...

有没有办法从资源本身播放嵌入式视频 没有创建视频文件?

1 个答案:

答案 0 :(得分:1)

一些想法,然后是一个可能的解决方案:

  • 我不建议在.exe中嵌入大型视频,因为它会创建一个巨大的可执行文件。

  • 你可以做很多事情来防止盗版。即使你 防止他们复制本地视频文件,他们仍然可以使用 用于记录屏幕的软件。

话虽如此,你理想的做法是从内存流而不是文件中播放。但AxWindowsMediaPlayer无法从流中播放。

您可以做的是从模拟本地文件但在内存中的虚拟文件系统中播放它。这是一个允许您执行此操作的SDK:http://boxedapp.com/encrypted_video_streaming.html

从文档中:为什么以及何时有用? “当应用程序使用DL​​L和文件时,要保证安全,因此无法保存它们到磁盘“

他们有VB.Net的例子,包括使用AxWindowsMediaPlayer。

此外,它确实需要购买开发人员的许可证。