【招聘】-音视频行业企业的招聘分析

出现的高频词:

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年

本科

职位描述

岗位职责:

  1. 深入理解产品需求,设计并开发音视频业务的应用程序;
  2. 解决系统中的疑难问题,包括但不限于:稳定性、性能、低延时等;
  3. 建设音视频平台,提升开发的质量和效率;
  4. 深入挖掘平台的媒体能力,打造产品的竞争力。
    任职要求:
  5. EE/CE/CS或同等专业本科及以上学历,5年以上嵌入式软件开发经验;
  6. 有在Linux平台上搭建pipeline的经验,开发过媒体应用,比如:播放器、音视频链路、全景等;
  7. 熟悉主流音视频框架,比如OpenMax或gstreamer等;
  8. 熟悉H264/H265等编码标准,以及MP4/MOV等容器标准;
  9. 有低延时优化、性能优化、内存优化经验者优先;有直播推流/全景推流经验者优先
  10. 学习能力强,有强烈的责任心,具有较好的沟通能力、创新能力及团队合作精神,愿意接受新的挑战。

中/高级嵌入式工程师(通用)

上海

5-10年

本科

收藏立即沟通

举报微信扫码分享

职位描述

工作职责

  1. 深入理解产品需求,完成产品的软件框架设计和集成;
  2. 设计并开发嵌入式产品的SDK和解决方案;
  3. 开发Linux系统应用程序,满足产品的功能、性能、功耗需求;
  4. 解决系统中的疑难问题,包括但不限于:稳定性、性能、功耗等;
  5. 深入理解产品,参与产品的整个生命周期的开发过程,包括需求定义、设计、实现、测试、生产、维修等。
    任职要求
  6. EE,CE,CS或同等专业本科及以上学历,4年以上嵌入式软件开发经验;
  7. 熟练掌握C/C++编程,具有独立设计开发能力,善于解决疑难问题;
  8. 深入理解多核编程和SMP相关的知识,能合理选用各种操作系统(RTOS、Linux等);
  9. 参加过复杂系统的分析和设计,具有基本的架构设计能力;
  10. 良好的学习能力、驱动力及团队领导力,喜欢挑战;
  11. 至少具有以下条件之一:
    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)

🚀 三、一个完整可实操的学习项目(贯穿全链路)

cpp 复制代码
不要贪多,要做一个"窄而深"的完整小项目,把一个技术链条吃透。

🎯 总体目标
用你现有条件(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: return
    frame = 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)

相关推荐
爬虫程序猿7 小时前
把 1688 商品详情搬进 MySQL:PHP 爬虫全链路实战(2025 版)
爬虫·python·音视频
aqi0010 小时前
FFmpeg开发笔记(八十四)使用国产的librestreaming实现RTMP直播
ffmpeg·音视频·直播·流媒体
筏.k11 小时前
FFmpeg 核心 API 系列:音频重采样 SwrContext 完全指南(新API版本)
ffmpeg·音视频
张晓~1833994812111 小时前
碰一碰发视频 系统源码 /PHP 语言开发方案
开发语言·线性代数·矩阵·aigc·php·音视频·文心一言
雨之小1 天前
RV1106+es8388音频采集和播放调试
音视频·rv1106·es8388
EasyCVR1 天前
不止于“看”:视频汇聚平台EasyCVR视频监控系统功能特点详解
音视频
来知晓1 天前
语音处理:音频移形幻影,为何大振幅信号也无声
开发语言·音视频
阿酷tony1 天前
开源项目:FlyCut Caption智能视频字幕裁剪工具
音视频·智能视频字幕裁剪·视频字幕裁剪