消息关闭
    暂无新消息!
如果文件是音频可播放,如是视频(如AVI格式)执行到“music.RenderFile(openFileDialog1.FileName)”这句会报错。
 错误号:0x8004022f, 应该是 "The file format is invalid."
请问可能是什么原因?怎么解决?

程序如下:
Imports QuartzTypeLib
Public Class Form1
    Private Const WS_CHILD As Integer = &H40000000
    Private Const WS_CLIPCHILDREN As Integer = &H2000000

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim openFileDialog1 As New OpenFileDialog()
        Dim music As New QuartzTypeLib.FilgraphManager
        Dim BasicAudio As QuartzTypeLib.IBasicAudio = Nothing
        Dim videowindow As IVideoWindow = Nothing
        Dim MediaEvent As IMediaEvent = Nothing
        Dim MediaEventEx As IMediaEventEx = Nothing
        Dim MediaPosition As IMediaPosition = Nothing
        Dim MediaControl As IMediaControl = Nothing
        openFileDialog1.Filter = "Media Files|*.mpg;*.avi;*.wma;*.mov;*.wav;*.mp2;*.mp3|All Files|*.*"
        If openFileDialog1.ShowDialog() = DialogResult.OK Then
            music = New FilgraphManager
            music.RenderFile(openFileDialog1.FileName)
            BasicAudio = music
        End If
        Try
            videowindow = music
            videowindow.Owner = Me.Panel1.Handle
            videowindow.WindowStyle = WS_CHILD Or WS_CLIPCHILDREN
            videowindow.SetWindowPosition(Panel1.ClientRectangle.Left, Panel1.ClientRectangle.Top, Panel1.ClientRectangle.Width, _
Panel1.ClientRectangle.Height)
        Catch ex As Exception
        End Try
        videowindow = Nothing
        Me.Text = "DirectShow - [" + openFileDialog1.FileName + "]"
        music.Run()
    End Sub
End Class

1个回答

︿ 0
建议你先用系统的 MediaPlayer 验证一下是否可以正常播放。这是为 了判断你的 WinCE OS 是否支持视频的播放!
因为不同的 WinCE 系统,其视频的 Filter 的实现是不一样的。