当前位置:编程学习 > VB >>

使用MMControl播放MPG文件时出现跳帧情况

我使用MMControl播放MPG文件,设置单步播放功能时,我使用了如下指令: 
MMC1.COMMAND="STEP" 
MMC1.FRAMES=1 
但程序运行时经常出现跳帧情况,有时侯时往前跳几帧,然后不动等待播放器播放至该位置后再继续,有时侯是来回跳动,不知道是什么原因造成这种情况?在线等... --------------------编程问答-------------------- 基本代码如下:
Private Sub cmdSelectMP3_Click()        On Error GoTo errhandle
    bolStepShow = False
    cdStepCreater.CancelError = True
    cdStepCreater.Filter = "录像(*.MPG)|*.MPG|其它格式(*.AVI)|*.AVI"
    cdStepCreater.Flags = cdlOFNNoChangeDir And cdlOFNPathMustExist
    cdStepCreater.InitDir = "D:\D-Tech"
    cdStepCreater.DialogTitle = "请选择你的MPG播放文件"
    cdStepCreater.ShowOpen
    txtMP3Path.Text = cdStepCreater.FileName
    
    Dim strTemp_01, strTemp_02 As String
    
    mmcMPG.Refresh
    
    strTemp_01 = Trim(txtMP3Path.Text)
    strTemp_02 = Right(strTemp_01, 3)
    Select Case strTemp_02
        Case "AVI"
            mmcMPG.DeviceType = "AVIvideo"
        Case "MPG"
            mmcMPG.DeviceType = "MPEGvideo"
    End Select

    Exit Sub
errhandle:
    txtMP3Path.Text = ""
End Sub

Private Sub cmdMP3Play_Click() 
    mmcMPG.FileName = txtMP3Path.Text
    mmcMPG.hWndDisplay = picMPG.hWnd

    mmcMPG.Command = "Open"

    '显示歌曲总长
    
    If mmcMPG.Length <> 0 Then
        ProgressBar1.min = 0
        ProgressBar1.Max = mmcMPG.Length * 40
        lblMP3All.Caption = Gettime(mmcMPG.Length * 40)
    End If
    cmdMP3Play.Enabled = False
    cmdSelectMP3.Enabled = False
    cmdMP3Pause.Enabled = True
    cmdMP3StopPlay.Enabled = True
    cmdMP3Back.Enabled = False
    cmdMP3Prew.Enabled = False
    '开始播放
    
    mmcMPG.Command = "Play"
    Timer1.Enabled = True
End Sub


Private Sub cmdMP3Pause_Click()
    '发出暂停的命令
    mmcMPG.Command = "Pause"

    cmdMP3Play.Enabled = True
    cmdMP3Pause.Enabled = False
    cmdMP3StopPlay.Enabled = True
    cmdMP3Back.Enabled = True
    cmdMP3Prew.Enabled = True
End Sub

Private Sub cmdMP3StopPlay_Click()
    '停止播放
    mmcMPG.Command = "Stop"
    mmcMPG.Command = "Close"
    cmdMP3Play.Enabled = True
    cmdSelectMP3.Enabled = True
    cmdMP3Pause.Enabled = False
    cmdMP3StopPlay.Enabled = False
    cmdMP3Back.Enabled = False
    cmdMP3Prew.Enabled = False
End Sub

Public Sub cmdMP3Back_Click()
    
    Dim X, Y As Long
    Dim dbTempNow As Double

    Y = Val(txtShowTime.Text)
    dbTempNow = Y / 40
    X = Int(dbTempNow)
    mmcMPG.From = X
    mmcMPG.Command = "Back"
    mmcMPG.Frames = 1
    mmcMPG.Refresh
End Sub


Public Sub cmdMP3Prew_Click()
    Dim X, Y As Long
    Dim dbTempNow As Double
    X = Val(txtShowTime.Text)
    mmcMPG.From = X
    mmcMPG.Command = "step"
    mmcMPG.Frames = 1
    mmcMPG.Refresh
End Sub

Private Sub Timer1_Timer()
    Dim X As Long
    
    '得到当前播放位置
    X = mmcMPG.position
    ProgressBar1.Value = X * 40
    txtShowTime.Text = X * 40
    lblMP3Now.Caption = Gettime(X * 40)
    
    '显示歌曲当前时间
    If ProgressBar1.Value = ProgressBar1.Max Then
        cmdMP3StopPlay_Click
    End If
End Sub
--------------------编程问答-------------------- 帮顶~~~~~~ --------------------编程问答-------------------- 你Timer1_Timer的触发是多少时间一次? --------------------编程问答-------------------- 你这代码应该不是全部吧。
这种使用优化方面的问题,需要看全部代码,花时间,以便查找原因。
并且要把你遇到的问题的环境、使用的资料、参数等说清楚,以便重现问题。才可以查找。
如果可以,可以将源码发给我,我的QQ:906640

不知你的Timer控件,设置的时间间隔是多久,这个会有一些影响。

天狼工作室
http://www.j2soft.cn/
补充:VB ,  多媒体
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,