- 博客(24)
- 资源 (2)
- 收藏
- 关注
原创 9:USB摄像头的最后一战(上):MP4音视频合封!
摘要:本文介绍了如何将USB摄像头的视频和音频数据同步封装为MP4文件。通过FFmpeg实现H.264视频编码和AAC音频编码,并利用Linux的CLOCK_MONOTONIC时钟解决音视频同步问题。文章详细阐述了MP4容器格式结构、PTS(显示时间戳)概念,以及音视频同步的实现方案。代码采用模块化设计,包含视频采集(V4L2)、音频采集(ALSA)和编码封装(FFmpeg)三个主要模块,通过统一的单调时钟源避免了长时间录制时的累积同步误差。实验表明该方法能有效保持一小时录制的音视频同步。
2025-08-08 23:12:08
532
原创 瑞芯微2025开发者大会之见闻
2025瑞芯微开发者大会展示了多款基于不同芯片的音视频和智能终端产品:RK3566主打音频处理,RK3576侧重带屏设备,RK3568用于服务终端,RK3308应用于音响和宏键盘,RV11系列专注监控产品,RK3588覆盖NVR/平板/视频会议等场景,RK3562支持咖啡机/Ai掌机等创新应用,RK3528用于机顶盒/云电脑,RK21系列专注音频设备。大会还重点介绍了AIISP智能图像调试技术,可简化ISP调试流程提升清晰度,以及MEMC动态补偿等新特性。
2025-07-20 18:31:04
393
原创 8:从USB摄像头把声音拿出来--ALSA大佬登场!
本文介绍了如何使用ALSA框架从USB摄像头获取音频数据并进行AAC编码。主要内容包括:1) ALSA架构的核心组成(内核驱动、用户空间库和设备文件);2) 通过ALSA获取PCM音频数据的代码实现,详细讲解了设备命名规则和周期参数设置;3) 使用FFmpeg进行AAC编码的过程,包括格式转换和ADTS头添加。文章提供了完整的代码示例,实现了从音频采集到编码输出的完整流程,为后续音视频同步封装MP4文件奠定了基础。
2025-07-14 21:59:04
886
原创 7:实时录像、延时摄影、水印--基于FFmpeg(下)
本文介绍了使用FFmpeg API进行视频处理的三个实例:1)将USB摄像头NV12数据编码为H264并封装为MP4;2)实现延时摄影功能(3秒获取一帧);3)添加PNG水印到视频。文章详细解析了FFmpeg的核心组件(AVCodec、AVFrame等)及其数据流处理流程,包括初始化编码器、创建输出格式、设置滤镜等关键步骤。通过对比命令行方式,突出API开发在嵌入式场景的优势。
2025-07-10 11:38:54
838
原创 5:终于动起来了--获取NV12流
本文介绍了如何从USB摄像头获取YUV(NV12格式)视频数据的完整流程。首先通过V4L2接口修改原有JPEG采集代码,支持NV12格式输出并保存为.yuv文件。针对YUV文件无头信息的特性,推荐使用YUVPlayer工具进行播放,需手动设置分辨率与格式参数。文章还实现了连续200帧视频流的采集,并分析了USB2.0无法传输1080P YUV数据的带宽限制问题。最后指出下一步将使用FFmpeg对原始YUV数据进行H.264编码和MP4封装,以解决当前格式兼容性差和体积过大的问题。
2025-07-05 01:03:20
886
原创 4: 从YUV到YCbCr——深入理解视频色彩格式的前世今生
本文探讨了YCbCr色彩格式的设计原理及其在视频压缩中的优势。通过对比RGB与YCbCr 4:2:0格式,指出YCbCr采用色度亚采样技术(4个像素共享1组色度信息)可将存储空间减少50%。文章详细解析了4:2:0采样的含义,并演示了不同格式在显示效果上的差异:虽然RGB格式保留完整色彩信息,但YCbCr在保证视觉质量的前提下显著提升了存储效率。文中还通过Python代码实现了一个可视化对比工具,展示了YUYV、NV12等格式的实际表现。最终强调YCbCr已成为视频压缩标准的基础格式,在存储空间和带宽受限的
2025-07-02 14:31:10
2199
原创 3:从USB摄像头获取一张图片
本文介绍了USB摄像头开发的基本概念和操作流程。首先讲解了UVC(USB Video Class)协议的特点,包括免驱、统一控制接口和标准化数据传输格式。接着重点介绍了Linux系统中的V4L2框架,阐述了其在视频设备管理中的核心作用。通过代码示例详细演示了如何与摄像头交互:查询设备能力、枚举支持格式、设置分辨率、使用mmap零拷贝方式获取图像数据,并保存为JPEG文件。文章还对比了MJPEG和H.264两种视频格式的技术特点,最后提出了关于YUYV等图像格式的疑问,为后续内容埋下伏笔。
2025-07-01 10:43:32
677
原创 2:搭建开发环境
本文主要介绍了运动相机开发中图片采集功能的环境搭建过程。首先说明了选择Ubuntu 20.04作为开发环境的原因,包括稳定性、兼容性考量。接着详细讲解了安装步骤:1)安装VMware Workstation Pro虚拟机;2)配置Ubuntu 20.04系统;3)学习基本的Linux命令行操作;4)安装必要工具(net-tools网络工具、samba文件共享服务和gcc编译器)。文章通过一个简单的C程序"hello.c"验证了gcc编译环境的正确配置,为后续摄像头开发工作奠定了基础。
2025-06-24 01:24:29
958
原创 1:准备东西!准备出发!
《运动相机开发入门指南》摘要: 本文以幽默风趣的语言介绍了运动相机开发的技术全景。从Linux系统架构切入,涵盖显示、音视频、网络、接口、存储和图像处理六大模块,完整展现了消费电子产品开发的技术栈。作者建议采用"以点带面"的学习方法,鼓励开发者保持"为了好玩"的心态。入门门槛包括C语言基础、Linux操作知识、Ubuntu系统和100元左右的USB摄像头预算(推荐支持MJPEG格式)。文章强调实践导向,提倡遇到不懂的知识先跳过,逐步拓展技能树。整体呈现了从零开始开发运
2025-06-20 00:02:56
312
原创 0:错的!都是错的!
那本文到底跟大家讨论什么呢?Linux内核分析?驱动分析?NO! NO! NO! 按照以往的经验,我们即使硬着头皮看完了一本书,往往还是一头雾水。 我们的目标很明确:从一个标准的USB摄像头开始玩起,直到设计出一款运动相机!
2025-06-18 23:35:52
331
原创 HI3518E按键驱动和应用代码
驱动代码如下:#include <linux/module.h>#include <linux/kernel.h>#include <linux/fs.h>#include <linux/init.h>#include <linux/delay.h>#include <linux/poll.h>#include <linux/sched.h>#include <linux/interrupt.h&g
2021-12-22 15:15:55
409
1
原创 hi3518e之mp4v2--第三步使用mp4v2封装h264和aac
第一步由于MP4需要的语音为AAC编码格式,HI3518E可以给出PCM,所以需要将PCM转换成AAC编码。使用的工具为FAAC,具体移植和使用步骤见另一篇博客FAAC在HI3518E上移植_changwuyong的博客-CSDN博客第二步本人使用的SDK里的sample是venc,需要将audio代码和faac代码加入到该sample中。main函数int main(int argc, char *argv[]){ HI_S32 s32R...
2021-12-22 14:51:57
956
原创 hi3518e之mp4v2--第二步将h264流使用mp4v2封装
1、将代码拷贝到sample_comm_venc.c中。HI_S32 SAMPLE_COMM_VENC_MP4(VENC_STREAM_S *stStream){ static int nRecordFlag = 0x00; static int recording = 0x1; static int spsflag = 0; static int ppsflag = 0; static MP4TrackId video = 0; static MP4FileHandle hMP4Fi.
2021-04-23 13:59:44
791
4
原创 hi3518e之mp4v2--第一步移植MP4v2
hi3518e的sdk提供了h264的例程,如果用户需要查看录像,那么需要使用普遍的格式,mp4便是目前最好的格式之一。将h264转为mp4,有很多方法,本文使用的是mp4v2。步骤如下:1、下载mp4v2.0.0。2、在Ubuntu中解压,进入到mp4v2-2.0.0,在本目录中新建一个install目录。3、在mp4v2-2.0.0目录中执行,该命令中的各个目录要对应自己的目录:sudo PATH=$PATH:/opt/hisi-linux/x86-arm/arm-hisiv30
2021-04-22 23:34:40
573
原创 Hi3518e图像偏绿,且比较暗的解决方法
因为之前本人没有调试过图像,所以只能从最基本的思想开始思考,如果偏绿那就把绿色比例变小,或者把R和B提高。比较暗的话不是太明白怎么调,但是运气比较好,几分钟就摸到了关键处。1、图像偏色。我用的PQTools进行的调色,我的软件版本是V4.4.16,如果不一致,请查看是否版本相同。(1)将Hi35XX_PQ_VX.X.X.X.tgz拷贝到虚拟机的nfs目录下,解压后拷贝到板子的文件系统中,或者直接在nfs目录运行。运行的脚本是HiIspTool.sh。执行./HiIspTool.sh。(2
2021-04-16 16:08:11
1328
原创 海思Hi3518e烧录步骤
如果需要更新uboot/kernel/文件系统等,则按照以下步骤即可:1、板子重新上电,或者已经进入到系统后,输入reboot进行重启。在Hit any key to stop autoboot:xx的时候敲击任意按键,进入到uboot命令行模式,如下图:2、配置好虚拟机的tftp服务器,将需要烧录的固件放在tftp服务器的目录下,然后进行烧录。(1). 烧录内核命令mw.b 82000000 ff 300000; tftp 82000000 uImage_hi3518ev200;sf
2021-04-16 11:39:14
1432
原创 python使用pyinstaller打包为exe,带dll文件
单个dll文件:pyinstaller -F --add-data MESInterface.dll;. test.py多个dll文件:pyinstaller -F --add-data MESInterface.dll;. --add-data Newtonsoft.Json.dll;. test.py
2021-03-31 11:45:28
1654
原创 YU420P格式和H264裸码流的理解
最近两天在忙项目,偶尔学习了YUV420P的格式以及H264裸码流的相关知识。这两个之前也了解过,尤其H264的裸码流,在HI3518E的源码中专门研究过。但是不是太彻底,这几天看雷神(默哀)的博客,系统的学习了这两点支持。YUV420P我的理解是:假如使用它表示四个点,每个点都需要一个Y分量,每四个Y分量需要一个UV分量。假设宽度为W=2,高度为H=2,那么四个点需要的空间便是:(W*H
2016-11-10 23:16:33
5609
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人