• 实战小项目之基于嵌入式的视频直播客户端


    项目简介

      本项目就是RtmpApp嵌入式版本,在此基础上,融入之前的v4l2采集、ipu转码等内容,实现了usb摄像头的采集(yuv422)、ipu或者软件转码、x264编码、rtmp传输。

      与前一个项目最大的不同在于数据衔接,以及数据转换,这里使用单独线程进行编码传输,里面涉及友元类的使用,是如下

    void PushStream::worker(const CapFbTest &ct){
        while(runflag){
            lastTime=RTMP_GetTime();
            if(frameIndex!=0){
                timeval begintime,endtime;
                gettimeofday(&begintime, NULL);
                RTMP_SendScreenCapture((char*)buffer,height,tick);
                gettimeofday(&endtime, NULL);
                double timeuse = 1000000*(endtime.tv_sec - begintime.tv_sec)+endtime.tv_usec-begintime.tv_usec;
                timeuse /=1000;
                printf("frame index %d time use %lf ms
    ",frameIndex,timeuse);
            }
    
            switch(src_pix_fmt){
                case AV_PIX_FMT_YUV420P:
                    //memcpy(buffer,ct.yuv420Frame,baseFrameSzie*3/2);
                    buffer=(char *)ct.yuv420Frame;
                    break;
                case AV_PIX_FMT_YUV422P:
                    memcpy(buffer,ct.yuvFrame,baseFrameSzie*2);
                    break;
                case AV_PIX_FMT_RGB24:
                    memcpy(buffer,ct.rgbFrame,baseFrameSzie*3);
                    break;
                default:
                    printf("Not supports this format 
    ");
                    break;
                }
            tick +=tick_gap;
            nowTime=RTMP_GetTime();
            sleepTime=tick_gap-nowTime+lastTime;
            printf("tick_gap %d nowTime %d lastTime %d sleep time %d
    ",tick_gap,nowTime,lastTime,sleepTime);
            if(sleepTime>0)
                usleep(sleepTime*1000);
            frameIndex++;
        }
    }

    完整工程

      https://github.com/tla001/arm-rtmp

  • 相关阅读:
    eclipse插件开发的打包
    零部件表设计 T_AIS_BASE_PARTS_INFO
    配送计划导入子表设计
    eclipse插件开发流程
    互联网公司的规律.txt
    用户 'sa' 登录失败。 连接SQL2000出现的问题。
    JAVA分页总结
    分类信息网络应用
    关于FLEX中找不到目标对象或通道未定义错误
    即时通讯IM的安全性比较
  • 原文地址:https://www.cnblogs.com/tla001/p/6323165.html
Copyright © 2020-2023  润新知