我正在开发用于播放视频文件的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
我错过了任何一步吗?
答案 0 :(得分:1)
实际上您正在使用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部分是为了检查文件是否存在并在之前提取,因此我们不需要再次提取它。