在日常的音视频开发中,我们经常使用FFmpeg,因为它确实好用呀,囊括了各种功能!但是有个很严重的问题,如果是编译在Android和IOS上使用,会造成APP的包很大。可以看我编译的FFmpeg在Android上的应用程式。
相信大家有很多人在做图像,或者做过图像,甚至视频,最近有个需求,实现多路usb摄像头同开,用c/c++实现。
操作系统:ubuntu18.04 X64位 和 嵌入式Linux操作(ARM)
通过ImageReader的回调,我们就可以得到截屏的数据了。第一遍文章是通过自定义的Socket 协议进行传输。这里通过FFmpeg,将得到的数据进行软件编码,然后同样通过RTMP进行推流。
将封装格式解压后可以得到压缩过的音视频等. 将压缩过的视频解压后可以得到 视频像素数据(RGB,YUV等).常见的视频压缩格式有H.264, MPEG4等…
倒车影像已经是现在汽车的标配功能了,基本很多车出厂都是360全景影像,倒车影像又称泊车辅助系统,这篇文章就采用Linux开发板完成一个倒车影像的功能。
在偶遇FFmpeg(三)——Android集成这边文章中曾经介绍过FFmpeg和Android的交叉编译。文章中也提到过如何裁剪SO文件大小的方式。 这边文章就这个问题。进行实战。
=====================================================
将上述资源包下载完成解压后,把示例程序100ASK_viplite-driver放在Ubuntu中的任意目录中。假设我放在/home/book/workspaces目录下,下面为人形识别和人脸识别应用程序的目录结构。
做嵌入式linux上的开发很多年了,扳手指头算算,也起码9年了,陆陆续续做过很过诸如需要读取外接的USB摄像头或者CMOS摄像机的程序,实时采集视频,将图像传到前端,或者对图像进行人脸分析处理,最开始尝试的就是QCamera来处理,直接歇菜放弃,后面通过搜索发现都说要用v4l2视频框架来进行,于是东搞搞西搞搞尝试了很多次,终于整出来了,前后完善了好几年,无论写什么程序,发现要简简单单的实现基础的功能,都是非常快速而且容易的,但是想要做得好做得精,要花不少的精力时间去完善,适应各种不同的场景,比如就说用v4l2加载摄像头这个,需要指定设备文件来读取,而现场不可能让用户来给你指定,频繁的拔插也会导致设备文件名的改动,所以必须找到一个机制自动寻找你想要的摄像机的设备文件名称,比如开个定时器去调用linux命令来处理,甚至在不同的系统平台上要执行的命令还有些许的区别,如果本地有多个摄像头还需要区分左右之类的时候,那就只能通过断电先后上电顺序次序来区分了。
X264下载地址: http://www.videolan.org/developers/x264.html
主要是介绍几款媒体常用软件,方便进行媒体类问题的定位分析,软件大部分是开源的,方便学习相关知识。
在前面的文章中已经完成了图片的加载和显示,接下来要做的就是加载 YUV 文件并显示。
行车记录这个设备相信大家应该都不陌生,它的功能主要是记录车辆行驶途中的影像及声音。
我们已经能够加载 YUV 帧并显示了,那是把一张图片转换成 YUV 帧得到的素材。
1.文章简述2. YUV转RGB的代码优化问题2.1 浮点转换2.2 浮点转整形2.3 浮点运算和整数运算在PC上模拟的效果3. x1000上进行对比测试3.1 使用软浮点测试一帧图像转换时间3.2 开启FPU后转换图像3.3 开启FPU进行测试3.3.1 基本思路3.3.2 程序设计4. 总结
FFmpeg解码涉及的知识点比较多,很容易被函数和结构体搞定不知所错,我们先从整体上对解码流程有个认知,画了张图把解码流程图,如下
VCU ctrlsw_decoder解码后,都会把图像从semi-planar转换为planar。 如果要查看VCU ctrlsw_decoder解码的XV20视频,也需要使用planar格式。 在电脑上,可以使用如下的ffplay命令,查看解码得到的YUV文件。
FFmpeg是一款开源软件,用于生成处理多媒体数据的各类库和程序。FFmpeg可以转码、处理视频和图 片(调整视频、图片大小,去噪等)、打包、传输及播放视频。作为最受欢迎的视频和图像处理软件, 早已经被各行各业的不同公司所广泛使用。
WebRTC 中每个音视频处理环节都对应着很多的类和结构体,它们中的很多都与视频 YUV 数据打交道,当分析到某个位置时,很希望知道这里的音视频数据是否正常,最好的方式就在这里把音视频数据保存下来,然后使用相应的播放器或者分析工具进行分析验证。本文以视频为例介绍两个常见的类保存 YUV 数据的方法。
NVIDIA日前宣布推出新的Linux驱动程序430系列,支持GTX 1650。 以下是如何在Ubuntu 16.04,Ubuntu 18.04及更高版本中安装它。
熟话说,授人以鱼不如授人以渔,这里记录的是在实际项目上,我遇到问题时是如何进行排查解决的,给大家提供个思路参考~
这里我们使用了FFmpge的sdk和Opencv的sdk。为了方便测试,我们直接使用在线的rtsp网络流。rtmp://live.hkstv.hk.lxdns.com/live/hks这个是香港卫视的rtsp流,可以用vlc播放器测试是否可以播放。
关于Linux下X264和FFMPEG库的编译安装方法参考这里:https://blog.csdn.net/xiaolong1126626497/article/details/104919095
上一篇博客实现了在ubuntu打开usb摄像头,也确认了 usb 摄像头支持 UVC,这节我们将 usb 驱动移植到荔枝派开发板上,并实现拍照的功能以及做 mjpeg-streamer 视频流服务器测试。
下面代码调用FFMPEG库,读取摄像头的一帧数据,转换为RGB888,加载到QImage,再显示到标签控件上。
大概几年前搞过一套嵌入式linux上的人脸识别程序,当然人脸识别的核心算法并不是自己开发的,关于人脸识别算法这一块,虽然有众多的开源库可以用,甚至还可以用opencv搞算法训练深度学习之类的,个人认为始终达不到准确度的要求,尤其是人脸比对的准确度,这个需要专业的人脸训练模型才行。目前市面上绝大部分的人脸识别库提供的都是X86的或者安卓ios的库,并没有嵌入式linux的库,估计一方面因为嵌入式linux跑的板子性能比较低,还有一个就是依赖特定编译器,版本众多难以提供,市场也小,所以大部分的厂家都没有提供嵌入式linux的开发包,这个就比较鸡肋,所以很多终端厂家最终弃用linux而选用安卓作为载体系统,这样就可以用上高大上的人脸识别库了,比如萤火虫开发板,RK3288 RK3399等。
参考这里: FFMPEG开发: Linux下采集摄像头数据录制成MP4视频保存到本: 地https://blog.csdn.net/xiaolong1126626497/article/details/104919095
R = Y + 1.402 * (V-128) G = Y – 0.34413 * (U-128) – 0.71414*(V-128) B= Y + 1.772*(U-128)
本篇博客代码及资源下载 : https://download.csdn.net/download/han1202012/10382762
现在我们虽然得到了转换后的MP4文件,但是我想进一步验证得到的文件到底是不是无损的。在查询官方文档的时候我看了官方给出了两种验证方式:
SDL是一个比较底层的音视频处理库,很多UI系统的内核都用到它,我们还可以用它来处理摄像头中YUV数据。
最近问v4l2的人挺多的,等忙完这段时间,后面有空研究一下。今天给大家分享一些应用demo;
摄像头通话功能,是TRTCSDK对系统摄像头进行了封装,采集摄像头数据,编码传输通话。
使用Xilinx VCU TRD 2020.1 Audio工程测试1080p yuv422 10bit编码,软件报告VCU能力不足,错误信息是“Codec error: Channel creation failed, processing power of the available cores insufficient”。
都0202年了,本文基于FFmpeg4.2.1,将使用最新版的api。让av_register_all()见鬼去吧! FFmpeg的文章绝大多数都是3.X的,很多方法都过时了。对于喜新厌旧的洁癖君而言,满屏飘黄的警告、运行一下全是过时的警告是多么糟心。本文根据源码中的exsample进行改编,删繁就简,对于判空,校验返回值,打印错误什么的,自己在使用时注意一下,自行处理。 ---- 1. 讲个小故事 为了让你明白这篇文章是在干嘛,讲个小故事先: 捷特有两个护体神兽:白皇和黑皇 白皇善鸣,声震天地
参考这篇文章: https://blog.csdn.net/xiaolong1126626497/article/details/104919095
MPSoC VCU在很多产品中得到了应用。在不同产品的调试过程中,有一些共同的办法。
开发Camera相关的应用时,就会涉及到音视频相关的内容。这里记录下分析音视频会用到的相关软件~
Video4Linux2(V4L2)是一个用于Linux操作系统的视频设备驱动框架。它提供了一个统一的接口,用于在应用程序和视频设备之间进行通信和交互。
使用FFMPEG的sws_scale函数在ARM平台转换效率很低,使用libyuv提高转换效率。
这个公众号会路线图式的遍历分享音视频技术:音视频基础 → 音视频工具 → 音视频工程示例 → 音视频工业实战。关注一下成本不高,错过干货损失不小 ↓↓↓
通过 fork 一个子进程来调用 ffmpeg 进行推流,视频帧通过 opencv 来获取,通过管道传输到子进程,实现推流
市面上主流摄像头的图像封装格式一般逃不过这三种:JPEG、MJPG和YUV。其中YUV编码既可以与灰度图像兼容,又利用了人眼对亮度和色度的定量优化,使其可以直接跟三原色RGB进行直接互换而到广泛青睐。但YUV与RGB的转码涉及大量浮点运算,对于高分辨率高速摄像头而言,转码对CPU的负担很重,本文来看看如何巧妙化解这个难点。
使用的FFMPEG库版本下载地址:https://download.csdn.net/download/xiaolong1126626497/12304729
前面讲到了在Android平台下使用FFmpeg进行RTMP推流(视频文件推流),里面主要是介绍如何解析视频文件并进行推流,今天要给大家介绍如何在Android平台下获取采集的图像,并进行编码推流。同时项目工程也是在之前的代码基础上新增功能。源码仓库地址FFmpegSample,这一节对应的代码版本是v1.2。大家注意不要下载错了版本。主要涉及的代码。
名称 推出机构 推出时间 目前使用领域 HEVC(H.265) MPEG/ITU-T 2013 研发中 H.264 MPEG/ITU-T 2003 各个领域 MPEG4 MPEG 2001 不温不火 MPEG2 MPEG 1994 数字电视 VP9 Google 2013 研发中 VP8 Google 2008 不普及 VC-1 Microsoft Inc. 2006 微软平台
领取专属 10元无门槛券
手把手带您无忧上云