【招聘】-音视频行业企业的招聘分析
出现的高频词:
Gstreamer、ffmpeg等开源多媒体框架、熟悉音视频编解码、封装,音视频采集、Pipeline、Sensor调试
熟悉H264/H265,MP4/MOV, V4L2、ALSA、DRM、GUI、屏幕驱动,MIPI LCD、TP、USB、HAL
影石Insta360
嵌入式软件工程师 - Linux应用(P)
1、熟悉 Camera 的Pipeline搭建,以及feature开发工作
2、有amba、hisi、MTK、高通等平台者优先
2、熟悉 Gstreamer、ffmpeg等开源多媒体框架、熟悉音视频编解码、封装等业务者优先
3、有算法落地、集成、调优经验者优先。
4、熟悉前端音视频采集、Pipeline、Sensor调试等
5、有录像、拍照、回放等业务开发经验优先
6、有相机、无人机、监控、IPC类产品开发经验优先
来源:BOSS直聘
大疆集团
高级嵌入式工程师(音视频)
深圳
5-10年
本科
职位描述
岗位职责:
- 深入理解产品需求,设计并开发音视频业务的应用程序;
- 解决系统中的疑难问题,包括但不限于:稳定性、性能、低延时等;
- 建设音视频平台,提升开发的质量和效率;
- 深入挖掘平台的媒体能力,打造产品的竞争力。
任职要求: - EE/CE/CS或同等专业本科及以上学历,5年以上嵌入式软件开发经验;
- 有在Linux平台上搭建pipeline的经验,开发过媒体应用,比如:播放器、音视频链路、全景等;
- 熟悉主流音视频框架,比如OpenMax或gstreamer等;
- 熟悉H264/H265等编码标准,以及MP4/MOV等容器标准;
- 有低延时优化、性能优化、内存优化经验者优先;有直播推流/全景推流经验者优先
- 学习能力强,有强烈的责任心,具有较好的沟通能力、创新能力及团队合作精神,愿意接受新的挑战。
中/高级嵌入式工程师(通用)
上海
5-10年
本科
收藏立即沟通
举报微信扫码分享
职位描述
工作职责
- 深入理解产品需求,完成产品的软件框架设计和集成;
- 设计并开发嵌入式产品的SDK和解决方案;
- 开发Linux系统应用程序,满足产品的功能、性能、功耗需求;
- 解决系统中的疑难问题,包括但不限于:稳定性、性能、功耗等;
- 深入理解产品,参与产品的整个生命周期的开发过程,包括需求定义、设计、实现、测试、生产、维修等。
任职要求 - EE,CE,CS或同等专业本科及以上学历,4年以上嵌入式软件开发经验;
- 熟练掌握C/C++编程,具有独立设计开发能力,善于解决疑难问题;
- 深入理解多核编程和SMP相关的知识,能合理选用各种操作系统(RTOS、Linux等);
- 参加过复杂系统的分析和设计,具有基本的架构设计能力;
- 良好的学习能力、驱动力及团队领导力,喜欢挑战;
- 至少具有以下条件之一:
a)熟悉Linux操作系统,了解其操作系统原理,具有应用开发经验;
b)熟悉Linux调试工具,熟悉内存管理、线程、任务调度,具有并发编程经验;
c)熟悉音视频编解码,具有流媒体相关开发经验,了解V4L2、ALSA、DRM、GUI、屏幕驱动等驱动框架;
d)熟悉Camera嵌入式软件或嵌入式图形界面开发;
e)熟悉深度学习相关的特性或项目的链路开发/部署落地。
视源股份
嵌入式软件工程师(AR/VR智能眼镜方向)
西安
1-3年
本科
职位描述
RTOS通信相关专业Linux机械设计制造相关专业计算机相关专业android halARM/DSP
岗位职责:
1、负责Android/Linux/RTOS平台嵌入式的开发及优化工作
2、负责平台中驱动软件开发调试,HAL层的开发调试和维护工作
3、负责Linux/RTOS 中间件和功能、协议开发
4、负责系统的稳定性、性能、功耗开发
岗位要求
1、通信、电子、自动化、计算机类相关专业本科及以上学历
2、熟悉C/C++语言,有扎实的编程功底
3、两年以上嵌入式ARM或DSP等架构的开发经验
4、熟悉Linux driver模型或Android系统HAL层流程
5、熟悉典型外设调试,比如MIPI LCD、TP、USB、AudioCodec/Amp 、Power/BatteryManager、Bootloader、WIFI、BT等驱动
大疆、影石、视源 这些高端影像设备公司招聘嵌入式工程师时,几乎都要求掌握:
Linux 应用层开发 + 多媒体框架(GStreamer / FFmpeg)
Camera Pipeline 与 Sensor 调试
音视频编解码(H.264/H.265/AAC 等)
低延时、性能优化
有真实项目经验(录像、推流、拍照、回放、全景)
接下来我会给你:
1️⃣ 抽出这些岗位的技术核心
2️⃣ 给出学习路径图(含顺序与目标)
3️⃣ 最后给出一个完整可实操的项目示例,让你能系统地学习出这套能力。
🧩 一、岗位共性核心能力提炼
能力领域 要掌握的关键点 对应岗位要求
嵌入式 Linux 应用开发 C/C++、多线程、内存管理、同步、调试 “熟悉Linux开发”、“稳定性、性能、功耗优化”
Camera 管线与驱动层 V4L2、ISP、MIPI、Sensor调试、图像格式(YUV、RAW、NV12) “熟悉Camera pipeline / Sensor 调试”
多媒体框架 FFmpeg / GStreamer 采集、编解码、RTP/RTSP推流、同步 “熟悉GStreamer、ffmpeg、OpenMAX”
音视频编解码 H.264/H.265/AAC 编码流程、封装格式(MP4/MOV/TS) “熟悉主流编解码标准与容器格式”
系统优化 低延时设计、内存优化、线程优化、零拷贝机制 “性能优化、低延时优化经验优先”
算法集成 将AI/ISP/图像算法集成到pipeline中 “有算法落地、调优经验者优先”
硬件平台适配 Amba / HiSilicon / MTK / Qualcomm 等 SoC 平台 “有这些平台经验者优先”
🧭 二、学习路线图(循序渐进)
📘 阶段1:Linux嵌入式应用基础
C/C++、Makefile、GDB调试
Linux多线程、内存管理、信号量、IO复用
熟悉交叉编译与移植(arm-gcc)
🧩 小练习:
写个多线程抓取视频帧 + 写入文件的Demo;
在树莓派或虚拟机上编译运行。
📘 阶段2:音视频采集与处理
V4L2框架(Video for Linux 2)
ALSA音频采集
熟悉YUV、NV12、PCM格式
🧩 小练习:
用 v4l2-ctl 查看摄像头;
写程序从 /dev/video0 读取视频帧;
同时用 ALSA 采集音频。
📘 阶段3:多媒体框架(核心阶段)
目标:学会用 FFmpeg / GStreamer 处理流
FFmpeg
编解码:H.264/H.265/AAC
封装:MP4、TS、MOV
推流:RTP、RTSP、RTMP
GStreamer
pipeline 结构、Element/Pad/Bus 概念
source → filter → sink 架构
多线程与同步机制
plugin 构建与扩展
🧩 小练习:
v4l2src → x264enc → rtph264pay → udpsink
自己写个pipeline实现实时视频推流;
再用 udpsrc → rtph264depay → autovideosink 播放回来。
📘 阶段4:Camera Pipeline 与算法集成
理解 ISP 流程:Sensor → ISP → buffer → pipeline → encode
熟悉 MIPI CSI、YUV、RAW 流
学习如何在 pipeline 中插入算法节点(如 OpenCV 滤波/检测)
🧩 小练习:
用 GStreamer 的 appsink 把帧送入 OpenCV;
实时做亮度检测 / 边缘检测;
再回 pipeline 输出视频流。
📘 阶段5:系统优化与嵌入式平台
学零拷贝机制(dmabuf、v4l2_buffer)
调试延时(RTP时钟同步)
用交叉编译在 ARM 平台上部署(友善之臂 / 树莓派)
学习 profile 工具(perf、top、valgrind)
🚀 三、一个完整可实操的学习项目(贯穿全链路)
不要贪多,要做一个“窄而深”的完整小项目,把一个技术链条吃透。🎯 总体目标
用你现有条件(USB 摄像头 + Ubuntu 虚拟机)
做一个**「低延时实时视频推流系统」**,
让你在一个项目里学透以下关键知识:Linux 下 视频采集(V4L2)H.264 编码(FFmpeg / GStreamer)RTP 网络传输协议(实时流)播放端解码(FFmpeg / GStreamer)可扩展到音频(ALSA)或算法(OpenCV)🧱 项目名称
《基于 Linux 的低延时实时摄像头视频推流系统》
🧩 一、项目架构(非常清晰)
css
复制
编辑
[ USB Camera (/dev/video0) ]↓ V4L2接口[ GStreamer Pipeline or FFmpeg ]↓ 编码 H.264[ RTP/UDP 推流 ]↓[ 本地或远端接收端 ]↓ 解码播放[ 视频显示窗口 ]
🧠 二、核心知识点一网打尽
模块 技术 你学到什么
采集 V4L2 如何与摄像头交互、采样格式
编码 H.264 + FFmpeg 视频压缩、关键帧、码率控制
传输 RTP 实时传输协议、时序同步
解码 FFmpeg/GStreamer 播放端重建视频
调优 参数调节 延迟分析、帧率优化🧰 三、环境准备
Ubuntu 虚拟机里执行:
sudo apt update
sudo apt install ffmpeg v4l-utils gstreamer1.0-tools \gstreamer1.0-plugins-base gstreamer1.0-plugins-good \gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly
然后确认设备:
v4l2-ctl --list-devices
v4l2-ctl --list-formats-ext -d /dev/video0
⚙️ 四、实现方案(推荐 GStreamer 实现)
🎥 Step 1. 最简单采集预览
测试你的摄像头是否能正常出视频流:gst-launch-1.0 v4l2src device=/dev/video0 ! autovideosink
✅ 如果看到摄像头画面,说明V4L2接口没问题。🎬 Step 2. 本地编码(学习 H.264 压缩)
把原始流压缩成 H.264 文件:gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert \
! x264enc tune=zerolatency bitrate=1000 speed-preset=ultrafast \
! mp4mux ! filesink location=output.mp4
你将学会:videoconvert:颜色格式转换;x264enc:软件编码;tune=zerolatency:低延时模式;bitrate、speed-preset:编码性能调节。🌐 Step 3. RTP 实时推流(核心)
推流端(Sender):
gst-launch-1.0 -v \v4l2src device=/dev/video0 ! videoconvert ! \x264enc tune=zerolatency bitrate=800 speed-preset=ultrafast ! \rtph264pay config-interval=1 pt=96 ! \udpsink host=127.0.0.1 port=5000
接收端(Receiver):gst-launch-1.0 -v \udpsrc port=5000 caps="application/x-rtp,media=video,encoding-name=H264,payload=96" ! \rtph264depay ! avdec_h264 ! autovideosink sync=false
🎯 学习点:RTP 协议如何实时传输视频;rtph264pay 和 rtph264depay 是打包/解包节点;sync=false 关闭同步加速画面显示;延迟调优(bitrate、framerate、网络 buffer)。💡 五、扩展(你精力允许时)
🔊 加音频(ALSA)
推流端增加音频管线:alsasrc device=hw:0 ! audioconvert ! voaacenc ! rtpmp4gpay pt=97 ! udpsink host=127.0.0.1 port=5002
接收端解包播放:udpsrc port=5002 caps="application/x-rtp,media=audio,encoding-name=MPEG4-GENERIC,payload=97" ! rtpmp4gdepay ! faad ! autoaudiosink
🧠 插入一个 OpenCV 算法节点(可选扩展)
在 pipeline 中加入 appsink,让 Python 读取帧并处理:python
import cv2, gi
gi.require_version('Gst', '1.0')
from gi.repository import Gst
Gst.init(None)
pipeline = Gst.parse_launch("v4l2src ! videoconvert ! appsink name=sink")
appsink = pipeline.get_by_name("sink")
appsink.set_property("emit-signals", True)
def on_new_sample(sink):sample = sink.emit("pull-sample")buf = sample.get_buffer()ok, mapinfo = buf.map(Gst.MapFlags.READ)if not ok: returnframe = np.frombuffer(mapinfo.data, dtype=np.uint8).reshape((480,640,3))gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)cv2.imshow("Gray", gray)if cv2.waitKey(1) == 27:pipeline.set_state(Gst.State.NULL)buf.unmap(mapinfo)
pipeline.set_state(Gst.State.PLAYING)
appsink.connect("new-sample", on_new_sample)
🧮 六、结果与学习收获
模块 你学到的内容
V4L2 视频采集设备接口,帧格式
H.264 压缩原理、GOP、延迟调节
GStreamer Pipeline 架构、element组合、同步机制
RTP 实时传输协议、时钟、封装
性能调优 zerolatency 模式、码率、buffer大小
扩展 加音频/算法模块,理解系统架构🎓 七、学习成果对标岗位(影石 / 大疆)
岗位要求 项目涵盖
熟悉Camera pipeline ✅ V4L2 + GStreamer 实践
熟悉GStreamer、FFmpeg ✅ 核心实践
熟悉H.264/H.265编码 ✅ 编码流程
熟悉RTP/RTCP协议 ✅ 网络推流
性能优化 ✅ 延迟调优
算法落地 ✅ 可插入 OpenCV 模块
音视频同步 ✅ 可扩展 ALSA 音频流✅ 八、总结一句话
这个项目虽小,但完整地覆盖了影像类嵌入式岗位所需的“多媒体主干技能链”:采集 → 编解码 → 传输 → 解码 → 显示。一旦你把它做通透(懂每个参数、每个环节),
就已经真正具备了嵌入式多媒体方向的工程思维与实践能力。
🎓 四、学习成果对照岗位要求
总结一句话
你要成为像大疆/影石这类公司需要的嵌入式工程师,必须具备:
“能把Sensor采集 → Pipeline搭建 → 编解码 → 推流播放 → 算法集成”整条链路打通的能力。
而上面这个项目,就能让你在实战中学到全部关键环节。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
FFmpeg、GStreamer、OpenCV分析:
三个工具——FFmpeg、GStreamer、OpenCV——确实经常被一起提起,但它们的定位、功能、工作原理和应用方向其实完全不同。
下面我给你一个系统、实战导向的对比,让你看清楚三者的本质区别、应用场景和学习优先级。
一、总览对比表
🧠 二、核心机制讲透
🎬 FFmpeg
本质:一个超高性能的“音视频处理引擎”。
干啥的:
解码(H.264、HEVC、AAC 等)
编码(推流、录制、转码)
封装(MP4、MKV、FLV、RTP)
滤镜(缩放、裁剪、叠字幕)
怎么干的:
使用内部库(libavcodec、libavformat、libavfilter)直接读写码流;
命令行或 API 都能调用;
靠 CPU(或 GPU 硬编)实现高性能。
一句话总结:
“FFmpeg 是音视频底层引擎,像‘显卡驱动层’一样的存在。”
🔗 GStreamer
本质:一个“多媒体管线框架”。
干啥的:
把“采集 → 编码 → 网络传输 → 解码 → 播放”分成模块(element);
让你用 pipeline 拼装整个实时系统;
可以同时处理多路音视频流,实时推送到网络。
怎么干的:
每个插件负责一个功能,比如:
nginx
v4l2src → x264enc → rtph264pay → udpsink
框架自动管理线程、缓冲、时钟同步;
被很多系统集成在底层(比如 Zoom、OBS、车载机)。
一句话总结:
“GStreamer 是搭积木的多媒体工厂,适合做实时系统。”
👁 OpenCV
本质:一个“计算机视觉算法库”。
干啥的:
图像处理(滤波、边缘检测)
目标检测、人脸识别、特征提取
视频帧分析、目标跟踪、深度学习推理
怎么干的:
不关心“视频怎么来”,而是“拿到图像后做啥”
可用摄像头、文件、网络视频帧作为输入;
处理后输出结果或可视化。
一句话总结:
“OpenCV 是看懂画面的那一层。”
⚙️ 三、三者的系统分层关系(从底到高)
css
复制
编辑
[ 硬件摄像头 / 麦克风 ]
↓
V4L2 / ALSA 驱动层
↓
FFmpeg ← 负责编解码、转码
↓
GStreamer ← 组织管线、实时传输
↓
OpenCV ← 分析画面内容(AI视觉)
↓
应用层 (监控/识别/直播/会议等)
➡️ 也就是说,它们不是竞争关系,而是协作关系。
四、学习路线建议(看你想干啥)
目标方向 推荐主学 辅助学习 典型项目
做视频传输、推流、播放器、编解码优化 ⭐ FFmpeg GStreamer RTSP服务器、视频转码器
做嵌入式、车载摄像头、视频会议系统 ⭐ GStreamer FFmpeg 摄像头实时流系统
做AI视觉、图像分析、检测识别类项目 ⭐ OpenCV FFmpeg(做输入输出) 人脸识别、运动检测
做完整系统(采集→传输→识别) 三者组合 — 监控/直播/智能分析一体系统
五、建议学习顺序(如果你想走“视觉 + 流媒体”路线)
1️⃣ FFmpeg —— 打通底层音视频概念
采集 / 编解码 / 推流 / 播放
理解封装格式、码流、PTS、延迟等概念。
2️⃣ GStreamer —— 理解实时系统、模块化处理
学 pipeline 思维、插件机制。
能构建视频会议、实时流媒体服务。
3️⃣ OpenCV —— 把流中的画面“看懂”
做识别、检测、分析。
和上面两个结合可做智能监控、视频理解。
🚀 六、未来趋势与前途分析
✅ 七、结论:该学哪个?
如果你想做… 优先学习
视频处理 / 转码 / 推流 / 播放 FFmpeg
实时流 / 摄像头系统 / 车载多媒体 GStreamer
视觉识别 / 图像算法 / AI OpenCV
想做完整系统(采集→传输→识别) 三者结合(顺序:FFmpeg → GStreamer → OpenCV)