将视频转换为C#Winforms中的exe

将视频转换为C#Winforms中的exe,c#,winforms,video,exe,C#,Winforms,Video,Exe,我需要使用C#Winforms将视频转换为.exe文件。这是必要的,以确保没有非法重新分发我的视频文件 我很难实现这一点。下面是我使用谷歌到目前为止的发现 方法1:添加对WMP.dll的引用,并将Windows Media Player控件插入表单。 此控件希望URL将视频绑定到URL,这意味着我需要将视频文件物理添加到项目文件夹中。这样做违背了项目的目的,因为我的视频文件将在构建过程之后在bin/debug或/bin/release文件夹中吐出 我知道我可以在资源文件中嵌入视频文件。但是,Wi

我需要使用C#Winforms将视频转换为.exe文件。这是必要的,以确保没有非法重新分发我的视频文件

我很难实现这一点。下面是我使用谷歌到目前为止的发现

方法1:添加对WMP.dll的引用,并将Windows Media Player控件插入表单。
此控件希望URL将视频绑定到URL,这意味着我需要将视频文件物理添加到项目文件夹中。这样做违背了项目的目的,因为我的视频文件将在构建过程之后在bin/debug或/bin/release文件夹中吐出

我知道我可以在资源文件中嵌入视频文件。但是,Windows Media Player控件无法从资源文件的字节数组或流中读取。无法将资源文件直接分配给Windows Media Player控件

我甚至遇到了将资源文件的字节数组写入用户临时文件夹中的物理文件的建议。然而,这可能是有风险的,因为一旦用户对此进行了识别,就可能发生非法再分配

方法2:添加对Microsoft.DirectX.AudioVideoPlayback的引用 使用此选项,它抛出“VFW_E_UNSUPPORTED_STREAM”异常。我的视频是.mp4格式的。一些论坛建议,如果我安装支持编解码器,这个例外情况应该得到注意。但是,我不能这样做,因为我不能指望我的用户在他们的系统上安装编解码器只是为了观看视频。(假定每个用户的机器上都有.net框架)

有人能帮我吗?如果您需要任何额外的信息,请告诉我,我将非常乐意为您效劳

这里有一个参考链接。这正是我需要实现的


提前感谢大家。

WMP可以通过URL打开媒体文件。在winforms应用程序中实现本地web服务器,将视频作为资源嵌入(最好是以某种方式加密),将嵌入的资源作为流读取(按需解密),并让WMP通过本地URL使用流。

因此,我最终使用VLC.DotNet而不是WMP。它支持流式播放以及字幕.srt

现在结束这个问题


谢谢大家的想法和建议。

我想你应该将所有依赖项嵌入到.exe文件中。如果这是目的,您可以查看ffmpeg库。这可能会解决问题。还请注意,将编解码器和所需库嵌入到可执行文件中可能会导致二进制大小超出预期1。如果您将视频放在参考资料中,为什么您认为我无法解压缩您的.exe文件(使用DotNetResourcesTract或类似工具)并简单地复制您的文件?2.您是否保护它不被手机摄像头或任何显示捕获软件占用?3.如果这段视频有这么多秘密,也许你不把它公开?在闭门后显示它,或者甚至根本不显示?@vasily.sib它可以将资源wihin exe解包,但是此解包文件将是一个物理文件,因为媒体控件需要视频的URL。因此,它违背了目的。我希望我正确地解释了你的建议。这实际上不是一个建议:\n我的意思是-你正在发明一辆非常奇怪的自行车。有什么真正有力的理由吗?如果这正是你所需要的,那就购买产品。