我正在开发用于播放视频文件的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文件夹中创建视频文件。
你可以在这里看到......
我的应用程序的当前exe大小为200 MB,因为我在资源中添加了许多视频。 如果要每次都生成新的视频文件,将视频添加到资源中的用途是什么?
我对图像做了同样的事情,我在资源中添加了图像 在应用程序中使用, 但我没有要求。为了携带这些图像,它不会在运行应用程序后生成图像。
我可以将exe放在任何机器上,app可以完美地运行这些图像...
有没有办法从资源本身播放嵌入式视频 没有创建视频文件?
答案 0 :(得分:1)
一些想法,然后是一个可能的解决方案:
我不建议在.exe中嵌入大型视频,因为它会创建一个巨大的可执行文件。
你可以做很多事情来防止盗版。即使你 防止他们复制本地视频文件,他们仍然可以使用 用于记录屏幕的软件。
话虽如此,你理想的做法是从内存流而不是文件中播放。但AxWindowsMediaPlayer无法从流中播放。
您可以做的是从模拟本地文件但在内存中的虚拟文件系统中播放它。这是一个允许您执行此操作的SDK:http://boxedapp.com/encrypted_video_streaming.html
从文档中:为什么以及何时有用? “当应用程序使用DLL和文件时,要保证安全,因此无法保存它们到磁盘“
他们有VB.Net的例子,包括使用AxWindowsMediaPlayer。
此外,它确实需要购买开发人员的许可证。