陆其明's Blog

My Technical Experience, My Books, My Career...

用户操作
[即时聊天] [发私信] [加为好友]
陆其明ID:happydeer
114521次访问,排名761好友0人,关注者33
Multimedia
happydeer的文章
原创 22 篇
翻译 3 篇
转载 3 篇
评论 98 篇
Happydeer的公告


最近评论
yewenlin:以上链接失效了,请更新
afleaf:陆老师你好,我在csdn上看到你回复的一个帖子,是关于ACM采样频率转换,其中的CConversionStream类只给出了OpenStream(void) 和DoConverting两个成员函数。我修改了sourceFormat和destFormat参数,可是在acmStreamOpen时返回512错误,可否指点一下。还有这个类的全部源代码可以发给我吗我的邮箱是 theone.pang……
waterathena:陆老师,我买了您的那本DirectShow实务精选,但是为什么第一个例子AVCap,我运行不起来。
我注册了bin文件包里面的所有给出来的Filter,但是还是运行不起来。
我的Direct sdk 版本9.0c.
系统 XP SP2;
编译工具 VC6.0
我使用的是USB Camera,在一台机器上程序一起来就Crash了。在另外一台干净……
emmett:陆老师,
您好!
最近学习过程中碰到一个问题,当我用IMediaSeek::GetDuration试图获得一个文件的长度的时候,在有些情况下,它得到的值是错误的。 我发现有些流行的播放器也有类似的问题。可是有一款叫“千千静听”的播放器总能正确的获得媒体文件的流长度, 不知道它是怎么做的呢? 如何更准确的获得一个媒体文件的有效播放时间呢?
……
emmett:if( DoSomething1() && DoSomething2() &&...&& DoSomethingN() )
return true;
return false;
文章分类
收藏
    相册
    AboutMe
    DocPics
    MVPs
    MyBB
    MyBooks
    推荐站点
    GDCL
    Jemy逐日
    温昱著译评
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 我的DirectShow著作收藏

    新一篇: Overlay视频显示的几点经验  | 旧一篇: DirectShow中常见的RGB/YUV格式

    DirectShow开发指南
    清华大学出版社出版 2003年12月


    本书以DirectX SDK 9.0版为蓝本,涉及的内容几乎涵盖了在Windows平台上使用DirectShow进行C++编码的方方面面。全书共分4个部分。第1部分详细介绍了DirectShow的基础知识。第2部分重点讨论了Filter的开发,以及DirectShow应用程序的开发,包括目前非常流行的如音视频采集、数码摄像机的支持、非线性编辑等应用。第3部深入分析了DirectShow SDK提供的部分典型源代码例子。第4部分结合作者个人的一些开发实践,通过案例和开放源码分析,进一步介绍DirectShow的实务应用。

    本书完全忠实于DirectX SDK 9.0的帮助文档以及基类源代码,并结合作者多年的实践,经过提炼而成。内容丰富,条理清晰,实用性强。适合广大的流媒体应用开发人员,以及对Windows平台上多媒体处理感兴趣的编程爱好者学习和参考。

    DirectShow实务精选
     科学出版社出版 2004年7月


    本书是“DirectShow专业著作”丛书的第二本,侧重介绍了DirectShow技术在当前主要的几个领域中的应用,包括音视频采集、视频聊天、视频点播、视频叠加、媒体播放等。全书结构合理,内容丰富新颖、条理清晰。在介绍各种应用的同时,辅助以大量详尽的实例源代码。这些实例,不仅具有很强的实用价值和指导意义,更让读者理论联系实践,使学习DirectShow技术变得轻松自如。

    本书适合广大的流媒体应用开发人员、系统设计人员、以及对Windows平台上多媒体处理感兴趣的编程爱好者学习和参考。

    发表于 @ 2004年06月23日 13:02:00|评论(loading...)|编辑

    新一篇: Overlay视频显示的几点经验  | 旧一篇: DirectShow中常见的RGB/YUV格式

    评论

    #ffb 发表于2004-06-23 14:07:00  IP: 61.48.127.*
    多少钱啊?
    #Jemy 发表于2004-06-23 14:41:00  IP: 220.248.17.*
    《DirectShow开发指南》市场价38元;《DirectShow实务精选》下个月出版,价格待定。
    #Jemy 发表于2004-07-15 11:03:00  IP: 220.248.17.*
    《DirectShow实务精选》定价59元,带光盘1张。
    #xlluo 发表于2004-10-30 13:30:00  IP: 218.6.200.*
    我的《DirectShow实务精选》光盘遗失,可否开发源码下载?
    #CoolSlob 发表于2004-11-07 13:12:00  IP: 218.87.50.*
    您好!

    我是慕名而来,
    听人说,看了作者的这两本著作,想不成为高手都难。

    请问:
      我要实现对DVD的压缩(旨在为了减小占用空间),然后又能通过(可以是自己做的)播放软件播放出来,需要要到哪些技术?看您这两本大作就可以了吗?

      盼回复!
    #God 发表于2004-11-08 09:59:00  IP: 218.82.96.*
    实现对DVD的压缩是什么意思啊? DVD就是压缩之后的格式
    #Jemy 发表于2004-11-19 09:59:00  IP: 220.248.17.*
    显然是vc开发环境配置问题。参见该书第8页。
    #gmto 发表于2004-11-18 17:11:00  IP: 211.162.63.*
    我在编译《DirectShow实务精选》中AVCap例子时出现以下错误,请指教。
    F:\Develop\DirectShow\SourceCodes\Chapter02\FilterImageGrabber\FilterImageGrabber.cpp(10) : fatal error C1083: Cannot open include file: 'streams.h': No such file or directory
    #ca 发表于2004-12-22 10:53:00  IP: 221.219.8.*
    如何使用DirectX SDK 9.0中提供的例子程序,为什么只有.cpp和.h
    文件,我如何编译这些例子程序啊
    #Jemy 发表于2004-12-22 12:01:00  IP: 220.248.17.*
    DirectX SDK 9.0c只能用visual studio.net编译。
    #tony 发表于2005-01-20 19:54:00  IP: 61.187.54.*
    你好,《DirectShow实务精选》所附源码可以编译通过,但是AVCap例子及AVchat例子运行时都会出现" "xxx"指令引用"xxx"内存.该内存不能为"written". " 这种错误. 不知怎么回事~~~
    #zhdp 发表于2005-01-20 13:42:00  IP: 218.87.4.*
    你好,我买了《DirectShow实务精选》,谢谢您共享宝贵的经验,里面的例子都是VC++的,VC++方面水平我还有待提高。我以前只会VB。
    不知道我能不能用VB6.0写一个souuce filter,能否告诉我到哪里找到例子,以便学习。谢谢!
    #Jemy 发表于2005-01-20 18:05:00  IP: 220.248.17.*
    据我所知,filter只能用c++来开发。vb可以开发directshow应用程序,但开发比较底层的组件就不行了。
    #zhdp 发表于2005-01-21 11:53:00  IP: 218.87.4.*
    非常感谢你的答复。我对《DirectShow实务精选》里的一个例
    子:VODDemo很有兴趣,但是每次我运行VODClient.exe的时候,
    也能连到指定的VODServer,选择了点播的文件,点击play后显示
    了:Status: Playing...,但是却没有出现播放的画面。而且直
    接运行光盘的VODClient.exe也报同样的情况,请问是要做什么设
    置吗?
    #Jemy 发表于2005-01-24 13:59:00  IP: 220.248.17.*
    to tony:

    请尽量在VC DEBUG环境下运行程序,看哪一行代码出问题。估计是一些接口引用问题。

    to zhdp:

    你可以跟踪一下,看客户端有没有收到数据?客户端播放用的filter graph有没有构建成功?
    #zhdp 发表于2005-01-26 16:13:00  IP: 218.87.4.*
    是的,确实是filter graph没有构建成功。主要的原因是我使用的MPEG1格式的文件是从VCD上直接拷贝的,我把这个文件用一个转换工具:dat2mpg转换后没有这些问题了。
    tony的问题很可能是FltNtrcvr.ax文件没有注册。

    另外我在Microsoft Visual C++ 6.0下调试DSK里面的
    例子memfile,当选择播放您提供的:DivxDemo.avi时就会出现Protection Error,并说:Debugger detected,
    不能继续调试,只能直接运行。是否是不能Divx的文件?
    #Directshow 发表于2005-02-03 16:33:00  IP: 218.87.4.*
    我想用VC++ 6.0做一个MFC APP的媒体播放器,其中建立
    Filter Graph和让这个Filter Graph运行 暂停 停止的这些语句分别放在哪里?我把他们放在::OnInitDialog()和
    ::OnButton1(),程序一运行就报错。
    注:::OnInitDialog(),我的程序类型就是一个对话
    框,程序启动后每次都会先运行::OnInitDialog()
    然后出现界面,所以我想让他先在这里初始化好了。
    ::OnButton1()是按下了播放按钮后执行的部分,
    我在这里放了一条语句:pMC->Run();
    pMC是前面已经初始化好的Filter Graph的
    IID_IMediaControl。但是程序编译都通过了,
    就是程序一点击播放按钮就出问题了。
    这样做有什么问题吗?恳请指教我这个初学者。
    #happydeer 发表于2005-02-04 17:01:00  IP: 220.248.17.*
    技术问题,建议大家到CSDN社区去交流。我会在那里回答大家的问题。

    你需要访问的CSDN板块:
    专题开发 | 多媒体/流媒体开发
    #Jade 发表于2005-02-22 15:00:00  IP: 61.51.225.*
    我买了您的这本书,但我想问一下相关的sdk应该是那个?我去微软的网站找,找到了许多direct x9 的sdk只是有的写update,有的写成其他样子。我想知道update的sdk是做什么用的呢?
    #LG 发表于2005-02-28 10:53:00  IP: 219.238.170.*
    DShow开发指南里的SimplePlayer里的保存为位图的函数不对,保存后的图片显示不出来。
    #LG 发表于2005-03-01 11:21:00  IP: 219.238.170.*
    inking...
    Creating library Debug/HqGrbr.lib and object Debug/HqGrbr.exp
    FilterImageGrabber.obj : error LNK2001: unresolved external symbol "public: virtual unsigned long __stdcall CBaseFilter::NonDelegatingRelease(void)" (?NonDelegatingRelease@CBaseFilter@@UAGKXZ)
    FilterImageGrabber.obj : error LNK2001: unresolved external symbol "public: __thiscall CTransInPlaceFilter::CTransInPlaceFilter(char *,struct IUnknown *,struct _GUID const &,long *,bool)" (??0CTransInPlaceFilter@@QAE@PADPAUIUnknown@@ABU_GUID@@PAJ_N@
    Z)
    FilterImageGrabber.obj : error LNK2001: unresolved external symbol "public: __thiscall CMediaType::CMediaType(class CMediaType const &,long *)" (??0CMediaType@@QAE@ABV0@PAJ@Z)
    Debug/HqGrbr.ax : fatal error LNK1120: 3 unresolved externals
    Error executing link.exe.

    HqGrbr.ax - 4 error(s), 0 warning(s)
    这种错误怎么解决,我在Addtional include dir里加了D:\DXSDK\Samples\C++\DirectShow\BaseClasses还是出错。将#include <streams.h>改成#include<D:\\DXSDK\\Samples\\C++\\DirectShow\\BaseClasses\\streams.h>也没有用,在tools\options\dir的include,source, lib目录下添加D:\DXSDK\Samples\C++\DirectShow\BaseClasses还是没有用????
    #zzp 发表于2005-05-30 18:46:00  IP: 61.186.252.*
    《实务精选》一书第三章-视频聊天在发送端没有对filter进行压缩,如果能压缩就好了。不知怎么处理发送端的压缩和接收端的解压。
    #penguin 发表于2005-07-25 00:36:00  IP: 61.186.252.*
    你好:
    在《DirectShow实务精选》第五頁中提到用GraphEdit顯示應用程序的filter graph的方法. 前提是應用程序必須把它創建的filter graph進行註冊. 請問有沒有方法可以用GraphEdit顯示不是自己開發的應用程序?
    #penguin 发表于2005-07-25 00:43:00  IP: 61.186.252.*
    你好:
    在《DirectShow实务精选》第五頁中提到用GraphEdit顯示應用程序的filter graph的方法. 前提是應用程序必須把它創建的filter graph進行註冊. 請問有沒有方法可以用GraphEdit顯示不是自己開發的應用程序?
    #domaimai 发表于2005-11-09 11:08:00  IP: 222.161.59.*
    avchat 编译通过,但是运行起来告诉xxxxxxx指令引用的xxxxxxx存存。该内存不能为read
    我调试了一下箭头指向这句
    GetNumberOfCapabilities(&nCounts, &nSize);
    不知为什么,请您帮忙
    #njcsong 发表于2005-12-01 15:26:00  IP: 222.94.47.*
    我买了<DirectShow开发指南>正在读,我看了一下,好多地方不是太懂,请问你能不能明确的告诉我以下几个问题:
    1.摄像机用1394或者USB采集进电脑后的图像格式有没有YUV格式的.
    2.每一帧画面被得到后是否会发一个消息(或其他什么方式)通知应用程序.
    谢谢,盼答复
    #123456789 发表于2005-12-22 14:15:00  IP: 218.18.109.*
    能指点音视频同步的实际运用中一例子吗? 比如我做一网络接收的filter(有点象spliter),接收压缩的数据,然后分成音视频两个pin出去让其他的解码器解,怎么样让这个音视频同步。
    #123456789 发表于2005-12-22 14:16:00  IP: 218.18.109.*
    望快速指点,最好给一简单的例子程序也可以。
    #杨** 发表于2006-01-04 15:39:00  IP: 58.246.180.*
    USB采集进电脑后的图像格式没有YUV格式的.
    2.每一帧画面被得到后可以用事件通知应用程序.
    #Wesley 发表于2006-01-20 11:38:00  IP: 59.124.166.*
    Hi,
    看了你的RGB/YUV 这篇文章, 在YUV411部份你是这样写的
    ¨ Y41P(和Y411)格式为每个像素保留Y份量,
    而UV份量在水平方向上每4个像素采样一次。
    一个宏像素为12个字节,实际表示8个像素。
    图像数据中YUV份量排列顺序如下:
    U0 Y0 V0 Y1 U4 Y2 V4 Y3 Y4 Y5 Y6 Y8 …

    我的疑问:
    是Y4 Y5 Y6 Y7 还是Y4 Y5 Y6 Y8

    感谢你的文章,也买了你的2本书,让我在DirectShow上进步许多.
    Wesley
    #陆其明 发表于2006-01-25 09:12:00  IP: 218.80.215.*
    应该是Y4 Y5 Y6 Y7 。不好意思,书上是个笔误!
    #ccae39 发表于2006-02-10 19:36:00  IP: 218.94.137.*
    陆老师,您在网易上的个人空间已经过期了,下在源代码到哪里下呀?
    #陆其明 发表于2006-03-06 09:45:00  IP: 218.80.215.*
    你可以到以下网址下载:
    http://www.czvc.com/down.asp?id=141
    #bt440 发表于2006-03-23 19:39:00  IP: 222.199.196.*
    陆老师,http://www.czvc.com/down.asp?id=141的压缩包无法下载。还有其它可以下载的链接吗?
    #mar 发表于2006-03-28 12:28:00  IP: 222.90.212.*
    To bt440
    在http://redmoon.jsphome.com/down/上面也可以下载。
    #mar 发表于2006-03-28 19:34:00  IP: 222.90.212.*
    同"LG 发表于2005-02-28 10:53 AM IP: 219.238.170.* DShow开发指南里的SimplePlayer里的保存为位图的函数不对,保存后的图片显示不出来。"

    陆老师,您的书写得真的很不错,让本人在DirectShow方面有了很大的进步,在此先表示感谢。
    但最近我发现《DirectShow开发指南》所带源代码DsBkSource\Chapter05\SimplePlayer的这个工程的抓图功能似乎有点问题,同时本人还有一些问题想向您请教。
    在bool CDXGraph::SnapshotBitmap(const char * outFile)这个函数里有这样几句:
    if (SUCCEEDED(mBasicVideo->GetCurrentImage(&bitmapSize, (long *)buffer)))
    {
    BITMAPFILEHEADER hdr;
    LPBITMAPINFOHEADER lpbi;

    lpbi = (LPBITMAPINFOHEADER)buffer;

    int nColors = 1 << lpbi->biBitCount;
    if (nColors > 256)
    nColors = 0;

    hdr.bfType = ((WORD) ('M' << 8) | 'B'); //always is "BM"
    hdr.bfSize = bitmapSize + sizeof( hdr );
    hdr.bfReserved1 = 0;
    hdr.bfReserved2 = 0;
    hdr.bfOffBits = (DWORD) (sizeof(BITMAPFILEHEADER) + lpbi->biSize +
    nColors * sizeof(RGBQUAD));

    CFile bitmapFile(outFile, CFile::modeReadWrite | CFile::modeCreate | CFile::typeBinary);
    bitmapFile.Write(&hdr, sizeof(BITMAPFILEHEADER));
    bitmapFile.Write(buffer, bitmapSize);
    bitmapFile.Close();
    pass = true;
    }
    我运行后生成了一张bmp格式的截图,却奇怪地发现该图可以在ACDSee 32 V2.4和Windows自带画图中正常显示,拖曳到IE中也可正常显示,但是到了其它软件如Windows图片和传真查看器和Photoshop中却无法显示,前者说“绘图失败”,后者说“磁盘错误”。我检查后发现mBasicVideo->GetCurrentImage(&bitmapSize, (long *)buffer)获得的图全都是32位的bmp,如果是32位的话,上面代码中变量nColors用1<<32赋值之后应该等于0(因为V
    #LIUHONGMENG 发表于2006-05-24 17:23:00  IP: 221.237.79.*
    请问陆老师:
    <DirectShow实务精选>第三章 的 AVCap 程序能在 .NET
    下运行成功吗?
    #LIUHONGMENG 发表于2006-05-24 17:13:00  IP: 221.237.79.*
    请问陆老师:
    <DirectShow实务精选>第三章 的 AVCap 程序怎样修改才能再公网上实现呢
    谢谢!!!
    #快乐风 发表于2006-07-04 04:35:00  IP: 222.125.165.*
    陆老师您好:
    我正准备购买您的大作,我想用DirectShow来播放mp3、CD,并且要播放给指定的声卡(电脑里有多块声卡),我不知道该怎么做,听说枚举系统设备,然后将Filter添加进去,再连接什么的,可我还是不懂要怎么写这个程序,这个问题已经卡着我很久了,一直找不到解决的办法,请您指点,不胜感激!我的E-Mail:chrys@163.com,盼您的回复。
    #waterathena 发表于2008-06-23 15:17:44  IP: 220.231.143.*
    陆老师,我买了您的那本DirectShow实务精选,但是为什么第一个例子AVCap,我运行不起来。
    我注册了bin文件包里面的所有给出来的Filter,但是还是运行不起来。
    我的Direct sdk 版本9.0c.
    系统 XP SP2;
    编译工具 VC6.0
    我使用的是USB Camera,在一台机器上程序一起来就Crash了。在另外一台干净的机器上程序正常起来,但是插上Camera,本来应该有预览的图像的,但是没有。
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © Happydeer