设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 6155|回复: 8
打印 上一主题 下一主题

linux 下Client SDK 播放问题

[复制链接]

1

主题

3

帖子

23

积分

新手上路

Rank: 1

积分
23
跳转到指定楼层
楼主
发表于 2014-7-9 17:31:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. DWORD dwFuncMode = BRAC_FUNC_VIDEO_AUTODISP | BRAC_FUNC_AUDIO_AUTOPLAY | BRAC_FUNC_CHKDEPENDMODULE |
  2.         BRAC_FUNC_AUDIO_VOLUMECALC | BRAC_FUNC_NET_SUPPORTUPNP | BRAC_FUNC_FIREWALL_OPEN |
  3.         BRAC_FUNC_AUDIO_AUTOVOLUME| BRAC_FUNC_AUDIO_VOLUMECALC | BRAC_FUNC_CONFIG_LOCALINI | BRAC_FUNC_VIDEO_CBDATA;
  4.     BRAC_InitSDK((HWND*)this->winId(),dwFuncMode);
  5.     DWORD dw =  BRAC_SetVideoDataCallBack(BRAC_PIX_FMT_RGB24,VideoData_CallBack,this);
  6.     qDebug()<<"dw"<<(int)dw;
  7.     BRAC_SetAudioDataCallBack(AudioData_CallBack,this);
  8.     BRAC_SetVolumeChangeCallBack(VolumeChange_CallBack,this);
  9.     BRAC_SetTransBufferExCallBack(TransBufferEx_CallBack,this);
  10.     BRAC_SetTransBufferCallBack(TransBuffer_CallBack,this);
  11.     BRAC_SetTransFileCallBack(TransFile_CallBack,this);
  12.     BRAC_SetRecordSnapShotCallBack(RecordSnapShot_CallBack,this);
  13.     BRAC_SetSDKFilterDataCallBack(SDKFilterData_CallBack,this);
复制代码

  1. void MainWindow::DrawUserVideo(DWORD dwUserid, LPVOID lpBuf, DWORD dwLen, BITMAPINFOHEADER bmiHeader)
  2. {

  3.     BITMAPINFOHEADER  *lpbmi = (BITMAPINFOHEADER*)malloc(sizeof(BITMAPINFOHEADER)+dwLen);

  4.     memset( lpbmi, 0 ,sizeof(BITMAPINFOHEADER)+dwLen);
  5.     memcpy((LPBYTE)lpbmi,&bmiHeader,sizeof(bmiHeader));
  6.     memcpy(((LPBYTE)lpbmi+sizeof(BITMAPINFOHEADER)),lpBuf,dwLen);

  7.     qDebug()<<"bmiHeader.biWidth"<<bmiHeader.biWidth;
  8.     qDebug()<<"bmiHeader.biHeight"<<bmiHeader.biHeight;
  9.     QImage *image;
  10.     int width  = bmiHeader.biWidth;
  11.     int height = bmiHeader.biHeight;

  12.     image=new QImage(width,height,QImage::Format_RGB888);


  13.     image->loadFromData((uchar *)lpBuf,dwLen);
  14.     image->save(tr("/hxy/%1.bmp").arg(QTime::currentTime().toString("hhmmss")));

  15.      delete image;
  16.     delete lpbmi;
复制代码
上面保存出来来的图片,很不稳定,一会正常,一会出现花屏,或者图片只有半截,分辨率也很低。

同时终端里出现下面语句
[swscaler @ 0x9f68b20] No accelerated colorspace conversion found from yuv420p to bgr24.

环境:  服务器 ubuntu12.04
            客户端 ubuntu10.04
            编辑器 QT4.8
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

沙发
发表于 2014-7-9 18:05:59 | 只看该作者
您好,可否将终端的输出都发来看一下。
回复 支持 反对

使用道具 举报

249

主题

2967

帖子

9108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9108
板凳
发表于 2014-7-9 18:44:14 | 只看该作者
您好:

1、终端输出“No accelerated colorspace conversion found from yuv420p to bgr24.”是正常的,不影响视频的保存;

2、
上面保存出来来的图片,很不稳定,一会正常,一会出现花屏,或者图片只有半截
换一个Linux计算机看看,可能与您的摄像头驱动相关;

3、
分辨率也很低
,您可以通过API来设置本地的视频采集分辩率,请参考:http://www.anychat.cn/faq/index. ... =175&artlang=zh
回复 支持 反对

使用道具 举报

1

主题

3

帖子

23

积分

新手上路

Rank: 1

积分
23
地板
 楼主| 发表于 2014-7-11 17:46:51 | 只看该作者
和摄像头驱动没有关联,我看的是我自己电脑(win7)通过网页端传输的摄像头视频。

我测试的程序,是虚拟机里的 ubuntu。

网页上看视频是正常的。
回复 支持 反对

使用道具 举报

249

主题

2967

帖子

9108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9108
5#
发表于 2014-7-11 18:03:53 | 只看该作者
您好,如果不通过image->save()来保存bmp图像,而是直接将lpBuf、bmiHeader来构建一个bmp图像,是否正常?

已经和研发人员确认,lpBuf里面的数据在linux平台上是正常的,不会出现您说的只有半截的问题。
回复 支持 反对

使用道具 举报

1

主题

3

帖子

23

积分

新手上路

Rank: 1

积分
23
6#
 楼主| 发表于 2014-7-12 08:41:59 | 只看该作者
admin 发表于 2014-7-11 18:03
您好,如果不通过image->save()来保存bmp图像,而是直接将lpBuf、bmiHeader来构建一个bmp图像,是否正常?
...

你看能否这样,你们发一份能在linux最简单的 能显示图片正常的DEMO ,或者代码段都行。

回复 支持 反对

使用道具 举报

2

主题

7

帖子

307

积分

中级会员

Rank: 3Rank: 3

积分
307
QQ
7#
发表于 2014-9-3 13:11:41 | 只看该作者
本帖最后由 AnyChat--Lee 于 2014-9-3 13:14 编辑

   
void Widget:: DrawUserVideo(DWORD dwUserid, LPVOID lpBuf, DWORD dwLen, BITMAPINFOHEADER bmiHeader)
{
       if(dwLen <=0)
               return;

        QImage *image;
        int width  = bmiHeader.biWidth;
        int height = bmiHeader.biHeight;

        image=new QImage((uchar *)lpBuf,width,height,QImage::Format_RGB32);// can load the image
        qDebug()<<"Load Image"<<endl;
        image->save(tr("%1.bmp").arg(QTime::currentTime().toString("hhmmss")));
        delete image;
}

您好,以上代码可以保存图片,且图片正常,还有需要注意的是在
DWORD dw =  BRAC_SetVideoDataCallBack(BRAC_PIX_FMT_RGB32,VideoData_CallBack,this);

设置图像格式这里采用RGB32。

环境:ubuntu 14.04
IDE :QT5

回复 支持 反对

使用道具 举报

2

主题

7

帖子

307

积分

中级会员

Rank: 3Rank: 3

积分
307
QQ
8#
发表于 2014-9-3 13:12:08 | 只看该作者
本帖最后由 AnyChat--Lee 于 2014-9-3 13:13 编辑
anychat1 发表于 2014-7-12 08:41
你看能否这样,你们发一份能在linux最简单的 能显示图片正常的DEMO ,或者代码段都行。

   
void Widget:: DrawUserVideo(DWORD dwUserid, LPVOID lpBuf, DWORD dwLen, BITMAPINFOHEADER bmiHeader)
{
       if(dwLen <=0)
               return;

        QImage *image;
        int width  = bmiHeader.biWidth;
        int height = bmiHeader.biHeight;

        image=new QImage((uchar *)lpBuf,width,height,QImage::Format_RGB32);// can load the image
        qDebug()<<"Load Image"<<endl;
        image->save(tr("%1.bmp").arg(QTime::currentTime().toString("hhmmss")));
        delete image;
}

您好,以上代码可以保存图片,且图片正常,还有需要注意的是在
DWORD dw =  BRAC_SetVideoDataCallBack(BRAC_PIX_FMT_RGB32,VideoData_CallBack,this);

设置图像格式这里采用RGB32。

环境:ubuntu 14.04
IDE :QT5
回复 支持 反对

使用道具 举报

249

主题

2967

帖子

9108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9108
9#
发表于 2014-9-6 10:55:42 | 只看该作者
亲,最新版本Linux SDK已经包含了一个图形界面的示例程序,位于SDK包src\client\Qt\helloAnyChat目录下,是Qt5的工程,您可以参考一下。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|AnyChat ( 粤ICP备13022410号-1 )  

GMT+8, 2024-11-24 14:55 , Processed in 0.130611 second(s), 22 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表