首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 关于取出视频Sample的数据,传送到另一个Graph无法还原的问题。 [无满意答案结贴,结贴人:xuwei17385]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xuwei17385
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-08-19 10:57:36 楼主
    最近在做一个远程教育平台的IM模块,其中音频使用的是ILBC视频用的是H264,在服务端,音频采集过滤器->Grabber,Grabber是修改SDK的Grabber而来,在Trancform里面判断如果是音频数据的话,则使用iLBC编码,然后通过回调函数来处理,回调函数中,第一字节加上了媒体类型,2-5为int,是数据长度,6到以后为Sample数据,客户端通过自己写的源过滤器接受数据,判断类型,是音频则直接在内部用iLBC解码,发送到下一级的Audio Renderer,音频信号可以正常还原。
    现在的问题就是,同样的方式 视频无法还原,服务端是:视频采集Filter->H264编码器->Grabber 回调函数发送出去,客户端 接受Filter->H264解码器->Video Renderer,我在Filter->H264解码器之间插入了一个测试用的过滤器统计数据,发现有数据通过,在测试用的过滤器之后再插入一个测试过滤器,第二个也接受到了数据,而且音频也能发送到Audio Renerer,说明源过滤器没有问题,但在H264编码器之后插入一个测试过滤器,发现没有数据过来。我以为是H264解码器的问题,就取消掉了服务器的编码器和客户端的解码器,通过测试过滤器,数据也能传到Video Renderer,但是Video Renderer却没有还原数据出来,总体来说,就是编码器和Renderer没有处理传过来的Sample,接收到数据后,视频时间戳设定的是NULL,立即播放,不知道是哪个环节出了问题,希望各位前辈帮忙解答一下,才毕业工作,没什么经验,这个问题已经折腾了两三个星期了,只好找大家帮帮忙了~~~
    另外,测试过滤器也就是哪个Grabber,我在Transform里面统计了数据的大小个类型,保存到文件以便观察,grabber在刚开始时都取出了媒体类型发送到客户端用来初始化过滤器,并且我保证两边过滤器媒体类型完全一致,数据也完全一致。
    两边的过滤器是:
    音频:
    服务端:采集->Grabber(内部TransForm中直接iLBC编码,回调函数发送)
    客户端:源过滤器(将接收到的数据传入,内部直接iLBC解码)->Audio Renderer
    视频:
    服务端:采集->H264 Encoder->Grabber(TransForm不做处理,直接回调函数发送)
    客户端:源过滤器->H264 Decoder->Video Renderer 问题处在H264 Decoder没有数据出来 同时去掉编解码器,Video Renderer不显示。
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • SoftSoftSoft2008
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 13:59:301楼 得分:0
    怎么搞的那么复杂哦。

    你先在本地测试,音频,视频编码,解码后,显示,播放正常,再经过网络传输。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xuwei17385
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 15:32:352楼 得分:0
    引用楼主 xuwei17385 的帖子:
    最近在做一个远程教育平台的IM模块,其中音频使用的是ILBC视频用的是H264,在服务端,音频采集过滤器->Grabber,Grabber是修改SDK的Grabber而来,在Trancform里面判断如果是音频数据的话,则使用iLBC编码,然后通过回调函数来处理,回调函数中,第一字节加上了媒体类型,2-5为int,是数据长度,6到以后为Sample数据,客户端通过自己写的源过滤器接受数据,判断类型,是音频则直接在内部用iLBC解码,发送到下一级的Audio Renderer,…


    这个完全正常 所有正常之后  我才开始取数据往外面传的~~~~~~~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xuwei17385
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 10:52:353楼 得分:0
    调试找到原因了~~~少了一句memcpy~~~~~以后的测试代码也要好好写了~~~~就出在测试代码上~~~当时写得很粗糙~~~后来以为没问题~~结果出问题了~~~
    修改 删除 举报 引用 回复

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