“深入浅出”系列之FFmpeg:(3)音视频开发的学习路线和必备知识

news2025/1/19 23:08:56

一、岗位要求

音视频开发属于我自己想要学习的板块,我想知道公司招聘音视频开发工程师所需要的条件,于是我就从招聘网站上找来了几个有关音视频开发的岗位需求,内容仅供参考:

(1)算法工程师-视频编解码

参与JVET / VVC的下一代视频编码标准设计和算法研究;

参与视频编码(包括但不限于VVC/AV1/AVS3)优化:通过信号处理和机器学习的快速编码决策、数据结构、并行框架设计,优化编码速度,同时在有竞争力的视频编码内核基础上,探索基于语义的内容自适应编码优化;

参与超低带宽的视频压缩:针对超低带宽场景下,探索针对信号处理和语义的信息论极限;

参与视频编码与处理联合优化:在标准编码框架的基础上,借助AI领域的新技术成果来研究视频信号的表征、编码与处理,将视频前后处理与编码联合优化,提升端到端压缩效果;

进行面向人眼视觉模型编解码技术研究:将视频编码与质量评价相结合,提升人眼压缩体验;

参与为VR/ AR等新兴应用设计和实施新颖的视频处理、编码和质量评估算法,以推动端到端系统体验优化。

加入我们,迎接未来的视频洪流的挑战,同时为用户提供无处不在的沉浸式高品质视频服务,布局下一代多媒体标准开发和沉浸式多媒体体验创新(如虚拟现实、增强现实、沉浸式音视频等)

职位要求【必备项】

1、本科及以上学历,计算机等相关专业,有视频或图像编码和处理研究背景;

2、有视频编码优化或视频标准的经验优先考虑,如X264,X265,VVENC, VVC,JEM,HEVC,SHVC,SCC,H.264 / AVC,SVC,MVC,AVS,VP8和/或图像编码标准,如JPEG,JPEG-XR,JPEG HDR或JPEG2000;

3、精通C ++和C编程,有使用视频编码开源软件或标准参考软件的经验,如X264,X265,VVENC, VTM,JEM,HM,SHM,JM和JSVM优先考虑;

4、有出色的分析研究及创新能力。

(2)研发工程师-音视频

负责为用户提供最优的播放体验,负责直播推流和视频播放,包括但不限于音视频采集渲染、RTC视频传输、QOS优化、视频架构设计、客户端性能优化等;

职位要求【必备项】

  1. 熟悉音视频引擎技术架构和常见的多媒体框架,如WebRTC、FFMPEG、GStreamer等;
  2. 了解音视频通话的客户端架构,了解音视频采集、编码、推流等环节;如H.264、Opus、AAC、AV1等,熟悉常见的系统层,如RTP、RTCP、RTSP、RTMP等;
  3. 熟练掌握C/C++开发语言,计算机基础扎实;
  4. 扎实的网络技术基础,对Socket通信、UDP、TCP/IP、HTTP、ICE有深刻的理解;
  5. 有较强的学习欲、好奇心和进取心,积极乐观、责任心强,具有良好的团队沟通和协作能力

(3)云计算工程师

可以参与到弹性计算、智算超算、云存储、云网络、混合云、数据库、云终端、云原生、操作系统、高性能网络、芯片、信息安全、其他(架构及平台研发)等一个或多个领域,开展科研及技术研发工作。

1.从事云计算、云网融合领域的新技术研究探索,开展技术评测与验证;

2.承担天翼云操作系统、弹性计算、分布式存储、服务器、云安全等技术及软硬协同、云网融合、云边协同、ABC一体化(AI/BigData/Cloud)等方向关键问题的深入研究,提出创新方法,并与产品研发团队协同,完成落地实施;

3.跟踪、研究云计算领域前沿技术和相关产业的发展趋势,提出云计算领域关键核心技术攻关方向,探索和解决核心技术问题,提出创新性解决方案;

4.产出高质量的研究报告、知识产权和技术标准,丰富中国电信在云计算领域的知识产权储备;

二、学习路线

根据上面的这些岗位要求,再从互联网上看一下其他人的经验,我总结出音视频开发的学习路线:

音视频流媒体所需要具备的技能

1、音视频基础(ffmpeg环境搭建,音视频基础)

2、FFMPEG编程(FFMPEG命令,音视频渲染,FFmpeg API,音视频编码,音视频封装格式,音视频过滤器,播放器开发,ffplay播放器,ffmpeg录制转码)

3、流媒体(rtmp流媒体,hls流媒体,http-flv流媒体,RTMP/HLS/HTTP-FLV流媒体服务器,RTSP流媒体)

主流的流媒体协议主要有:RTMP,HLS,RTSP

4、WEBRTC(WebRTC中级开发, WebRTC高级开发,Janus服务器源码)

(1)从一个简单的音视频播放器开始

FFmpeg常见的API    -->    音频队列视频队列    -->    PTS DTS 音视频同步    -->    OpenGL渲染视频    -->    音频冲采样    -->    音频播放    -->    硬件解码

(2)视频容器mp4封装技术

h.264 265编码    -->    aac编码    -->    音视频同步    -->    pts 时间基

(3)在音视频开发领域里,OpenGL基础是必须要掌握的。

1、基本概念和安装配置

学习图形学的基本概念:像素、坐标系、颜色、矢量、矩阵等。

绘制基本形状:使用顶点缓冲对象(VBO)和顶点数组对象(VAO)绘制三角形、四边形等基本形状。

简单着色器:编写顶点着色器(Vertex Shader)和片段着色器(Fragment Shader),理解着色器的基本概念。

2、变换和3D投影

变换矩阵:学习平移、旋转、缩放变换,以及使用矩阵表示和计算这些变换。

视图变换:了解视角变换和观察点的概念,学习设置观察矩阵。

投影变换:理解正交投影和透视投影,学习设置投影矩阵。

3、纹理映射 

基本纹理映射:学习加载和使用纹理,理解纹理坐标和采样。

多重纹理:了解如何在一个物体上应用多个纹理。

纹理过滤和环绕方式:学习设置纹理的过滤模式(如线性过滤、最近邻过滤)和环绕方式(如重复、镜像等)。

4、光照和材质

基本光照模型:学习Phong光照模型,包括环境光、漫反射光、镜面反射光。

光源:学习如何在场景中添加点光源、平行光和聚光灯。

材质属性:了解物体材质的属性,如漫反射、镜面反射、发光等。

5、高级OpenGL技术

帧缓冲对象(FBO):学习使用FBO进行离屏渲染,理解多重渲染目标(MRT)。

高级着色器技术:了解几何着色器(Geometry Shader)和计算着色器(Compute Shader)的使用。

后期处理:实现一些常见的后期处理效果,如模糊、边缘检测、HDR等。

6、动画和物理

基本动画技术:学习关键帧动画、骨骼动画等。

物理引擎:了解如何结合物理引擎(如Bullet)进行物理模拟。

7、优化和高级渲染技术

性能优化:学习减少绘制调用、使用Instancing、批处理等技术来优化性能。

高级渲染技术:了解延迟渲染(Deferred Shading)、全局光照(Global Illumination)、环境光遮蔽(Ambient Occlusion)等。

三、学习阶段

(1)音视频流媒体开发

第一阶段:

无论是音视频图像渲染方向,还是流媒体方向,音视频基础都是需要学习的,比如rgb、yuv,FFmpeg 播放器核心,音视频编解码,硬件编解码,H.264 265编码算法,解析mp3/aac/mp4/flv/mkv这些视频容器。以及如何将264 265这些视频流封装到mp4 都是需要深入学习的

流媒体开发方向侧重于网络通讯,所以Linux网络socket通讯编程是基础中的基础,从自己手写tcp udp私有协议开始,到深入tcp协议栈,可靠性udp封装,udp打洞 p2p,流媒体转发服务器等,都要滚瓜烂熟。 然后就是一些常见的流媒体协议,比如rtsp rtmp rtcp rtp hls sip等。当然这些东西,你音视频网络通讯功底好,就非常容易学习。

第二阶段:

深入研究网络通讯,比如webrtc这种低延迟,经济实惠的p2p 结合relay的框架, 比如它里面的udp打洞,网络拥塞,都懂,丢包重传等机制。这些东西一方面需要你的网络通讯基础,另一方面需要C++工程能力。

第三阶段:

进一步研究这一套低延迟框架如何适应大规模的应用场景。这种工作更加偏向于后端音视频服务器开发,当然这种岗位现在局限于一些大厂。中小公司没这种技术以及金钱的实力

应用场景:视频点播、视频会议、远程教育、远程医疗、短视频、在线直播系统等

(2)OpenGL+音视频

这些岗位主要做的工作,其实在音视频领域叫后期处理。

1、 视频特效叠加。这个属于AR领域,直播带货虚拟场景,直播特效,人脸上带个狗鼻子,变脸,最近几年新兴的一些应用场景特别多。我们将实时采集的图片,交给机器学习,机器学习就能实时识别场景里面的内容,比如识别到人脸,就能准确标定人脸上鼻子的具体位置,嘴唇的具体位置,有了这些位置数据以后,我们就可以用opengl叠加各种特效,动画。 所以这个属于比较前沿的AR领域。

 2、AIGC领域,随着大模型人工智能越来越火,那么大模型要接触到终端消费者,一些前端的交互界面,渲染,都需要用到OpenGL。

3、各种设计软件领域,比如CAD、CAE啊,这几年国产替代,很多国产设计软件都在大量招人,这个领域一般跟Qt结合开发的岗位比较多。

4、游戏引擎,以及游戏引擎周边的工具软件开发,比如游戏编辑器啊等等。

5、一些前沿的虚拟现实、虚拟仿真软件领域的基础软件开发,这个市场稍微小一些,但是依然有公司在做。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2279099.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【BUUCTF】[GXYCTF2019]BabySQli

进入页面如下 尝试万能密码注入 显示这个(qyq) 用burp suite抓包试试 发现注释处是某种编码像是base编码格式 MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5 可以使用下面这个网页在线工具很方便…

CSS基础知识 ----- 学习

介绍 CSS(Cascading Style Sheets)是一种用于定义网页样式和布局的样式表语言。 它与 HTML 一起用于构建 Web 页面,HTML 负责定义页面的结构和内容,而 CSS 则负责控制页面的外观和样式(各种元素的字体,颜色,大小,间距,边距)。 …

计算机网络 (50)两类密码体制

前言 计算机网络中的两类密码体制主要包括对称密钥密码体制(也称为私钥密码体制、对称密码体制)和公钥密码体制(也称为非对称密码体制、公开密钥加密技术)。 一、对称密钥密码体制 定义: 对称密钥密码体制是一种传…

Asp.Net Core 8.0 使用 Serilog 按日志级别写入日志文件的两种方式

1、所需的Nuget包 本文项目的版本是.NET 8.0,如果使用其它版本安装适配版本即可。 Serilog.AspNetCore(8.0.2) Serilog.Sinks.File(5.0.0) Serilog.Expressions(5.0.0) 2、两种配置方式 2.1 代码形式(Program.cs) 在Program.cs文件中&am…

华为HuaweiCloudStack(一)介绍与架构

本文简单介绍了华为HCS私有云解决方案,并从下至上介绍HCS的整体架构,部署架构、部署方式等内容。 目录 HCS简介 HCS架构 纵向结构 ?管理平台类型 HCS节点类型 FusionSphere OpenStack CPS ServiceOM SC 运营面 OC 运维面 HCS部署架构 regi…

彻底讲清楚 单体架构、集群架构、分布式架构及扩展架构

目录 什么是系统架构 单体架构 介绍 示例图 优点 缺点 集群架构 介绍 示意图 优点 缺点 分布式架构 示意图 优点 缺点 生态扩展 介绍 示意图 优点 缺点 扩展:分布式服务解析 纵切拆服务 全链路追踪能力 循环依赖 全链路日志(En…

flutter 常用UI组件

文章目录 1. Toast 文本提示框oktoastbot_toast2. loading 加载窗flutter_easyloading3. 对话框gex dialog4.下拉刷新pull_to_refresh5. pop 窗custom_pop_up_menu6. pin code 密码框pinput7. 二维码qr_flutter8. swiper 滚动组件carousel_sliderflutter_swiper_view9. Badge 角…

【王树森搜索引擎技术】概要01:搜索引擎的基本概念

1. 基本名词 query:查询词SUG:搜索建议文档:搜索结果标签/筛选项 文档单列曝光 文档双列曝光 2. 曝光与点击 曝光:用户在搜索结果页上看到文档,就算曝光文档点击:在曝光后,用户点击文档&…

【开源免费】基于SpringBoot+Vue.JS欢迪迈手机商城(JAVA毕业设计)

本文项目编号 T 141 ,文末自助获取源码 \color{red}{T141,文末自助获取源码} T141,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

【ArcGIS微课1000例】0140:总览(鹰眼)、放大镜、查看器的用法

文章目录 一、总览工具二、放大镜工具三、查看器工具ArcGIS中提供了三种局部查看的工具: 总览(鹰眼)、放大镜、查看器,如下图所示,本文讲述这三种工具的使用方法。 一、总览工具 为了便于效果查看与比对,本实验采用全球影像数据(位于配套实验数据包中的0140.rar中),加…

【TCP】rfc文档

tcp协议相关rfc有哪些 TCP(传输控制协议)是一个复杂的协议,其设计和实现涉及多个RFC文档。以下是一些与TCP协议密切相关的RFC文档列表,按照时间顺序排列,涵盖了从基础定义到高级特性和优化的各个方面: 基…

智能学习平台系统设计与实现(代码+数据库+LW)

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装智能学习平台系统软件来发挥其高效地信息处理的作用&#…

5 分钟复刻你的声音,一键实现 GPT-Sovits 模型部署

想象一下,只需简单几步操作,就能生成逼真的语音效果,无论是为客户服务还是为游戏角色配音,都能轻松实现。GPT-Sovits 模型,其高效的语音生成能力为实现自然、流畅的语音交互提供了强有力的技术支持。本文将详细介绍如何…

HunyuanVideo 文生视频模型实践

HunyuanVideo 文生视频模型实践 flyfish 运行 HunyuanVideo 模型使用文本生成视频的推荐配置(batch size 1): 模型分辨率(height/width/frame)峰值显存HunyuanVideo720px1280px129f60GHunyuanVideo544px960px129f45G 本项目适用于使用 N…

浅谈 JVM

JVM 内存划分 JVM 内存划分为 四个区域,分别为 程序计数器、元数据区、栈、堆 程序计数器是记录当前指令执行到哪个地址 元数据区存储存储的是当前类加载好的数据,包括常量池和类对象的信息,.java 编译之后产生 .class 文件,运…

macOS安装的Ubuntu 20 VM虚拟机扩充磁盘的便捷方式

文章目录 说明操作一 VM扩充虚拟磁盘二 ubuntu系统调整分区 说明 建议ubuntu虚拟机安装图形化界面,方便磁盘管理。如果你安装的debian12,那可能需要使用命令行的方式,本人选择放弃,操作太复杂! 操作 一 VM扩充虚拟磁…

关于机器学习的一份总结

在之前的文章中分别有详细的关于机器学习中某一学习算法的介绍,但缺少一个总体关于机器学习的总结,所以在这篇文中就是关于机器学习的一份总结。 在最近的日子中,人工智能日益火热起来,而机器学习是其中举足轻重的一部分&#xf…

idea中远程调试中配置的参数说明

Ⅰ 远程调试中配置的端口号与服务本身端口号区别 一、远程调试中配置端口号的作用 在 IDEA 中进行远程调试时配置的端口号主要用于建立开发工具(如 IDEA)和远程服务之间的调试连接。当你启动远程调试时,IDEA 会监听这个配置的端口号&#xf…

初识JVM HotSopt 的发展历程

目录 导学 目前企业对程序员的基本要求 面向的对象 实战 学习目标 JVM 是什么 JVM 的三大核心功能 各大 JVM look 看一下虚拟机 HotSopt 的发展历程 总结 导学 目前企业对程序员的基本要求 面向的对象 实战 学习目标 JVM 是什么 JVM 的三大核心功能 即时编译 主要是…

3. 后端验证前端Token

书接上回,后端将token返回给前端,前端存入cookie,每次前端给后端发送请求,后端是如何验证的。 若依是用过滤器来实现对请求的验证,过滤器的简单理解是每次发送请求的时候先发送给过滤器执行逻辑判断以及处理&#xff0…