默认
发表评论 4
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] 求助RainbowAV的视频改成高清遇到的疑问
阅读(44774) | 评论(4 收藏 淘帖
  现在的问题是,本地录的每帧图片都是高清的,但是通过if (VcSettings.nInFPS > 0 && mVideoCtrl != null && !mVideoCtrl.mPauseVideo){
   mVideoCtrl.sendData(AccountManager.myAccount, data,
         VcSettings.format, VcSettings.width, VcSettings.height,
         degree,// 自己的角度,必须传给对方,渲染时做角度处理
         VcSettings.nInFPS,
         CUR_CAMERA == FRONT_CAMERA,// 是前置还是后置相机,必须传给对方,渲染时做角度处理
         
这段代码上传以后,就会变成很模糊,服务器有压缩吗?怎么才能让对方渲染出高清视频

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

标签:RainbowAV
推荐方案
评论 4
刚在qq上回复你了,我在帖子里再回复一次,其他人也能看到。

服务端不会做压缩,服务端只解决网络传输数据问题。具体的话,你仔细研究一下VCCamera.java这个类
因为数据是从这里录制的,理论上你修改了录制的分辨率,就可以搞定。

具体这一块,跟普通的android视频录制代码是一样的。你对api使用疑问的话,可以先研究一下android端的视频录制的demo,然后再来看这一块。原理是先要保证录制出来的数据是否已经是高分辨率的,然后再来看接收端的情况,其它先不管,不要把事情复杂化。一个步骤一个步骤来:只要保证前一环节是对的,那就专注下一个环节,所有都搞对了,结果一定是对的,网络通信程序就是这样。
我也有把视频改成高清甚至超清的需求,修改过 VCCamera 中的参数,发现视频清晰度没什么改善。

后来看代码,发现 P2PControl.c 中有这么一段:
if ((int)(width * height) > (int)(320 * 240))
{
        float x = ((float)width)/320.0;
        float y = ((float)height)/240.0;
        if (x >= y)
        {
                out_width = 320;
                out_height = (int)(((float)height)/x);
        }
        else
        {
                out_height = 240;
                out_width = (int)(((float)width)/y);
        }
        out_size = out_width*out_height*3/2;
                               
        memcpy(buf, g_vedio_buffer, video_size);
        memset(g_vedio_buffer,0, video_size);
        ret = resize_frame((unsigned char *)buf, (unsigned int)width, (unsigned int)height, (unsigned char *)g_vedio_buffer, (unsigned int)out_width, (unsigned int)out_height);

       ...
    此处 resize_frame 的出发点是什么?
引用:kekine 发表于 2018-12-31 11:51
我也有把视频改成高清甚至超清的需求,修改过 VCCamera 中的参数,发现视频清晰度没什么改善。

后来看代 ...

你应该修改的是录制的地方。你可以查一下android的视频录制文章,看看如何设置成高清晰度录制。

你改动的这个代码显示是录制后的数据加工,它本身采集的时候就是以低分辨率,你显示或传输时再怎么改尺寸也没意义的。你体会一下。多查一下android视频方面的demo。
引用:JackJiang 发表于 2018-12-31 20:21
你应该修改的是录制的地方。你可以查一下android的视频录制文章,看看如何设置成高清晰度录制。

你改 ...

看过录制的代码,并修改过,并没有什么改善。代码里就是在预览的 callback 中,把视频数据通过p2pcontrol 传递给 jni 代码,jni 代码中又对视频做了处理
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部