首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 关于陆其明老师《DirectShow开发指南》第十八章如何将其变为网络采集mpeg4文件并且播放?谢谢 [已结帖,结帖人:Roy0810633]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Roy0810633
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-11-16 13:26:07 楼主
    关于陆其明老师《DirectShow开发指南》第十八章如何将其变为网络采集mpeg4文件并且播放?谢谢
    我是重庆邮电大学一个学生,最近导师要求做视频处理的东西。陆老师书中18章地方如何将变成mpeg4呢?majortype,subtype改变了只是能够继续接收 我觉得这个和winsockt编程无关,它无非就是建立了一种连接的机制,但是解码和播放是Directshow的问题。我有些同学说这个可能是没有解码器Decoder不过,我找了这样一个例子却可以播放这个文件:CEO.mp4  文件类型:MPEG-4 媒体代码如下:
    #include <stdio.h>
    #include <streams.h>

    void main(void)
    {
        IGraphBuilder *pGraph = NULL;
        IMediaControl *pControl = NULL;
        IMediaEvent  *pEvent = NULL;
        // Initialize the COM library.
        HRESULT hr = CoInitialize(NULL);
        if (FAILED(hr))
        {
            printf("ERROR - Could not initialize COM library");
            return;
        }

        // Create the filter graph manager and query for interfaces.
        hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
                            IID_IGraphBuilder, (void **)&pGraph);
        if (FAILED(hr))
        {
            printf("ERROR - Could not create the Filter Graph Manager.");
            return;
        }

        hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);
        hr = pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);

        // Build the graph. IMPORTANT: Change this string to a file on your system.
        hr = pGraph->RenderFile(L"e:\\CEO.mp4", NULL);
        if (SUCCEEDED(hr))
        {
            // Run the graph.
            hr = pControl->Run();
            if (SUCCEEDED(hr))
            {
                // Wait for completion.
                long evCode;
                pEvent->WaitForCompletion(INFINITE, &evCode);

                // Note: Do not use INFINITE in a real application, because it
                // can block indefinitely.
            }
        }
        pControl->Release();
        pEvent->Release();
        pGraph->Release();
        CoUninitialize();
    }
    它确实能够播放我自己电脑中的这种格式的文件,filter graph如下:

    说明有mpeg4的Decoder  现在我的问题就是怎么样才能变成mpeg4的实时播放的东西,请各位高手帮助下我啊!谢谢大家!
    另:我认为我的问题是majortype &  Subtype的设置 或者是mpeg4本身不能用来像mpeg1那样的网络实时传输播放!
    谢谢 大家帮助我下 感谢大家了!
    我的邮箱:747616656@qq.com & Roy0810633@hotmail.com
    再次感谢大家!祝大家愉快!
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Roy0810633
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-16 15:08:571楼 得分:0
    Up  Up  Up
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Roy0810633
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-16 17:14:432楼 得分:0
    没有人可以帮助我吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Roy0810633
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-17 10:15:003楼 得分:0
    up up up up 谢谢大家老哈!很急啊!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • li_007
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-17 12:23:494楼 得分:5
    有没有mpeg4的解码器,你找个mpeg压缩格式的文件在graphedt.exe里面播放下就知道了


    另外,你网络传输过来的数据不能播放并不一定是你没解码器,还有可能是你数据的传输不正确,要想正确解码,应该要先得到一些必要的信息,让解码器识别。
    所以根据你上面的描述,我认为你的问题可能就是出现在这个地方,传输过来的数据没有被正确解码,故肯定不能正确播放了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Roy0810633
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-17 15:26:245楼 得分:0
    您说的得到一些必要的信息是指的什么啊?mpeg&mpeg4都是流媒体格式的啊,既然通过套接字编程实现了通信,那么说明数据已经得到了接收啊,不能播放我认为是majortype    subtype的一些原因!不过我在DirectX C++;里面看到并没有mpeg4的type型啊!您能更具体的说明下你的意思吗?非常感谢您 大哥!
    747616656@qq.com
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Roy0810633
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-27 10:55:336楼 得分:0
    li_007您好!能再和我讨论下吗?你说到没有接收到数据,但是我的显示明明是数据包在不断的增加?我在GraphEdit里面看到的仅仅只有0001sourcefilter这个filter而没有其他的decoder等,我想可能的原因是不是引脚问题没有找到解码器的pin?如果方便可否留下您的邮箱我想进一步和您交流!
    谢谢!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • li_007
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-27 15:16:057楼 得分:15


    Email:Leezhm@126.com
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • li_007
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-27 15:16:368楼 得分:0
    QQ:395616039
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Roy0810633
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-27 20:45:429楼 得分:0
    Thank u so much for ur further communication. I'll touch u as soon as possible.
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved