我正在开发用于播放视频文件的vb.net Windows应用程序。
我以这种方式在嵌入式资源中添加了一个视频文件:
项目->属性。然后选择"资源"选项卡。下一步选择"添加重新来源"->"从现有文件"。
我正在尝试播放该文件,但线上出现了运行时错误
Dim myByte As Byte = myStream.ReadByte
错误:对象引用未设置为对象的实例。
这是代码。。。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim aPath As String = Path.GetDirectoryName(Assembly.GetExecutingAssembly.GetModules()(0).FullyQualifiedName)
Dim myStream As Stream
myStream = Assembly.GetExecutingAssembly.GetManifestResourceStream("111.mp4")
Dim myFileStream As New FileStream("111.mp4", FileMode.Create)
Dim myFileBinary As New BinaryWriter(myFileStream)
Try
Dim myByte As Byte = myStream.ReadByte
While Not myByte = -1
myFileBinary.Write(myByte)
myByte = myStream.ReadByte
End While
Catch ex As Exception
Finally
myFileStream.Close()
End Try
AxWindowsMediaPlayer1.URL = Path.Combine(aPath, "111.mp4")
AxWindowsMediaPlayer1.settings.autoStart = True
End Sub
我缺了一步吗?
实际上您使用的是My.Resources
。因此,您不需要从程序集中读取资源。
你可以简单地阅读和使用它的方式:
Dim FilePath = Path.Combine(Application.StartupPath, "video.wmv")
If (Not File.Exists(FilePath)) Then
File.WriteAllBytes(FilePath, My.Resources.video)
End If
AxWindowsMediaPlayer1.URL = FilePath
AxWindowsMediaPlayer1.Ctlcontrols.play()
if部分是检查文件是否存在并在之前提取过,这样我们就不需要再次提取它了。