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

项目简介

  本项目就是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\n",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 \n");
                break;
            }
        tick +=tick_gap;
        nowTime=RTMP_GetTime();
        sleepTime=tick_gap-nowTime+lastTime;
        printf("tick_gap %d nowTime %d lastTime %d sleep time %d\n",tick_gap,nowTime,lastTime,sleepTime);
        if(sleepTime>0)
            usleep(sleepTime*1000);
        frameIndex++;
    }
}

完整工程

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

时间: 2024-10-18 23:29:26

实战小项目之基于嵌入式的视频直播客户端的相关文章

实战小项目之基于yolo的目标检测web api实现

上个月,对微服务及web service有了一些想法,看了一本app后台开发及运维的书,主要是一些概念性的东西,对service有了一些基本了解.互联网最开始的构架多是cs构架,浏览器兴起以后,变成了bs,最近几年,随着移动互联网的兴起,cs构架再次火了起来,有了一个新的概念,web service. 最近两天,想结合自己这段时间学的东西,实现一个cs构架的service接口.说一下大体流程,client上传图片到http服务器,http后台使用yolo进行图片的检测,之后将检测结果封装成jso

实战小项目之ffmpeg推流yolo视频实时检测

之前实现了yolo图像的在线检测,这次主要完成远程视频的检测.主要包括推流--収流--检测显示三大部分 首先说一下推流,主要使用ffmpeg命令进行本地摄像头的推流,为了实现首屏秒开使用-g设置gop大小,同时使用-b降低网络负载,保证流畅度. ffmpeg -r 30 -i /dev/video0 -vcodec h264 -max_delay 100 -f flv -g 5 -b 700000 rtmp://219.216.87.170/live/test1 其次是収流,収流最开始的时候,有

项目三. 基于图像压缩的视频监控系统

项目三. 基于图像压缩的视频监控系统 Sprint0-产品设计与规划 基于图像压缩的视频监控系统 1. 产品功能演示 在linux系统上运行程序,弹出登录界面,输入地址.端口信息,弹出视频监控界面,实时传出视频信息. 2. 功能模块分析 采集端: 图像采集子系统 图像编码子系统 传输子系统 主程序 监控端: 传输子系统 图像编码子系统 传输子系统 主程序 Sprint1-基于Epoll架构的采集端程序框架设计 第1课-Epoll机制精通 大纲: v  为什么用Epoll? 阻塞型IO与多路复用

Android开发不得不看的11个实战小项目

是不是想学Android开发(http://www.maiziedu.com/course/android-px/)却不知道如何下手?懂得一点点入门基础知识却无法应用到实际开发中?看相关资料觉得都懂了实际动手却发现什么都不懂?本地搭建Android开发环境太麻烦? 如果你有以上的各种问题,那么今天小编推荐的Android开发的这11个小项目,你一定要看!! 因为,这些实战项目都是基于google 官方的API Demos制作而成,而且全部配有Android在线开发环境,你可以随时动手跟着课程操作

必知的11个android开发实战小项目

是不是想学Android开发(http://www.maiziedu.com/course/android-px/)却不知道如何下手?懂得一点点入门基础知识却无法应用到实际开发中?看相关资料觉得都懂了实际动手却发现什么都不懂?本地搭建Android开发环境太麻烦? 如果你有以上的各种问题,那么今天小编推荐的Android开发的这11个小项目,你一定要看!! 因为,这些实战项目都是基于google 官方的API Demos制作而成,而且全部配有Android在线开发环境,你可以随时动手跟着课程操作

【实战小项目】python开发自动化运维工具--批量操作主机

有很多开源自动化运维工具都很好用如ansible/salt stack等,完全不用重复造轮子.只不过,很多运维同学学习Python之后,苦于没小项目训练,本篇演示用Python写一个批量操作主机的工具,大家空余时候可以试着写写,完善完善. 1 思路分析 在运维工作中,古老的方式部署环境.上线代码可能都需要手动在服务器上敲命令,不胜其烦.所以,脚本,自动化工具等还是很有必要的.我觉得一个批量操作工具应该考虑以下几点: (1)本质上,就是到远程主机上执行命令并返回结果. (2)做到批量.也就是要并发

iOS平台基于ffmpeg的视频直播技术揭秘

现在非常流行直播,相信很多人都跟我一样十分好奇这个技术是如何实现的,正好最近在做一个ffmpeg的项目,发现这个工具很容易就可以做直播,下面来给大家分享下技术要点: 首先你得编译出ffmpeg运行所需的静态库,这个百度一下有很多内容,这里我就不多说了,建议可以用Github上的一个开源脚本来编译,简单粗暴有效率. 地址:GitHub - kewlbear/FFmpeg-iOS-build-script: Shell scripts to build FFmpeg for iOS and tvOS

基于Flink的视频直播案例(上)

目录 数据产生 Logstash部分 Kafka部分 Flink部分 配置/准备代码 视频核心指标监控 本案例参考自阿里云的视频直播解决方案之视频核心指标监控和视频直播解决方案之直播数字化运营. 基于Kafka + Flink + ELK + Redis实现视频直播数据的实时处理和可视化. 选型仅仅出于练习考虑,Logstash一般会换成flume或者直接用kafka. 模拟的总体流程:通过http请求发送json到Logstash,后者将数据转发到Kafka,然后Flink拉取数据进行处理,结

在Windows下搭建基于nginx的视频直播和点播系统

一.软件准备 由于nginx原生是为linux服务的,因此官方并没有编译好的windows版本可以下载,要在windows上使用nginx,要么下载源码进行编译,要么使用其他人已经编译好的文件. 而要让nginx支持视频直播和点播,还需要第三方的nginx模块:nginx-rtmp-module 所幸,已经有大神做好了nginx的编译,而且集成了很多nginx模块,其中就已经包括了nginx-rtmp-module. 下载地址:http://nginx-win.ecsds.eu/,详细说明可参见