最近接手同事一项目,采集usb摄像头,生成AVI文件,同事使用DirectShow实现,发现一个问题,当有音频输入设备时,我录制成WMV的总时间与程序界面显示一致,当没有音频输入设备时,录制成AVI的总时间与程序界面显示不一致,录制的时间越长,差的时间越多。
AVI的Graph如下:WMV的Graph如下:有以下几个疑问:
1. 生成WMV时,参考时钟是有效的?而生成AVI时,没有有效的时钟?
2. 如果需要手动给AVI加时钟,该怎么做?最近也在看MSDN,没太看明白
3. 如果我只采集视频,并保存成WMV,该怎么做?使用哪些Filter?DMO?
4. USB Camera2.0的视频格式是yuv2,怎么用?

解决方案 »

  1.   

    参考AMCP的源码  里面都有的
      

  2.   

    AMCAP
      

  3.   

    1:你的时间只是获的的系统时间吧?并不是视频文件的时间,假设在开始录像的一刻,获的了系统时间,但是这个时候ds可能还在初始化一些东西,并没有开始写入文件操作,所以获的系统时间长短和视频的时间长短会不一样
    2:加时钟是指什么?建议录制视频用ffmpeg
    3:这个还是建议用ffmpeg去做,不是在实验室的话,就用现成的吧
    4:格式的用法只要保证发送和接收一致就可了,可以先用下ffmpeg+ds,看看能不能正常的获的视频流,如果可以的话,那保存应该也没什么问题