我使用MMControl播放MPG文件,设置单步播放功能时,我使用了如下指令: 
MMC1.COMMAND="STEP" 
MMC1.FRAMES=1 
但程序运行时经常出现跳帧情况,有时侯时往前跳几帧,然后不动等待播放器播放至该位置后再继续,有时侯是来回跳动,不知道是什么原因造成这种情况?在线等...

解决方案 »

  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 SubPrivate 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 SubPrivate 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 SubPublic 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 SubPrivate 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
      

  2.   

    你Timer1_Timer的触发是多少时间一次?
      

  3.   

    你这代码应该不是全部吧。
    这种使用优化方面的问题,需要看全部代码,花时间,以便查找原因。
    并且要把你遇到的问题的环境、使用的资料、参数等说清楚,以便重现问题。才可以查找。
    如果可以,可以将源码发给我,我的QQ:906640不知你的Timer控件,设置的时间间隔是多久,这个会有一些影响。天狼工作室
    http://www.j2soft.cn/