原文作者:Linux

原文链接:音视频流媒体高级开发-学习路线

如果你想往音视频方向发展,那么本文一定要认真阅读~

大家都知道音视频开发薪资高、门槛高、发展空间大,心里蠢蠢欲动,却不知道怎么入门,怎么进阶?

是学 FFmpeg 还是 OpenSL ES?是研究编码协议还是实时传输机制?

这次我会给大家做一个深度的学习路线总结分享!技术点都是当下企业要求必须要掌握的!希望对音视频流媒体方向的同学有帮助。

一、学习音视频的门槛高不高?

答案是肯定的:高!

如今,随着在线教育、远程办公、直播带货、实时互动等应用场景的蓬勃发展,音视频技术正变得越来越重要。不仅大厂在积极布局,越来越多的中型公司和初创企业也开始重视音视频相关岗位的招聘。

一个有趣的现象是:即便是有一定经验的中级音视频工程师,在市场上也可能同时被3~4家公司争抢。

这背后的原因在于——音视频从业者的基数小、高端人才稀缺、技术门槛高。不同于前端、后端这类相对“标准化”的开发方向,音视频涉及底层编解码、网络传输优化、多平台适配、图像处理等多个复杂模块,学习曲线陡峭,系统性要求强。

正因为如此,音视频开发并不容易通过短期突击掌握,也难以完全依赖开源库“堆砌”出稳定的产品。它需要扎实的基础知识、丰富的实战经验和持续的技术积累。

但这也意味着——

一旦你掌握了音视频核心技术,你就拥有了区别于大多数开发者的竞争优势,形成了自己的技术护城河。在行业普遍内卷的大环境下,这种“技术分水岭”显得尤为珍贵。

所以,虽然这条路起点难、过程苦,但正是因为它“难”,才更不容易被淘汰

技术门槛体现在哪?

  1. 知识体系庞杂
  2. 音视频领域涵盖编解码、封装格式、传输协议、渲染引擎、硬件加速等多个方向。
  3. 每一个模块背后都是一套完整的知识体系。
  4. 依赖底层编程能力
  5. 不像前端或 UI 开发以 Java/Kotlin/Swift 为主,音视频开发常常需要 C/C++、JNI、NDK、FFmpeg 等技能。
  6. 对内存管理、指针操作、多线程等底层机制要求较高。
  7. 调试困难、问题隐蔽性强
  8. 音视频问题往往不容易复现,如花屏、卡顿、不同设备兼容性差等。
  9. 缺乏统一的调试工具和日志规范,排查问题耗时长。

网上音视频学习资源真的太少了!

这是很多人放弃音视频开发的最主要原因之一。

如果大家的技术栈还是仅仅是停留在简简单单的四大组件、UI、网络这一块,你的被替代性还是非常高的。

二、既然这么难!为什么还是要选择音视频开发?

✅ 行业需求旺盛

随着短视频、直播、在线教育、远程会议等行业的爆发式增长,对音视频人才的需求也日益高涨。

✅ 技术壁垒较高

不同于传统 App 开发,音视频涉及编解码、渲染、网络传输、硬件加速等多个底层领域,具备一定学习门槛,也因此更具竞争力。

✅ 薪资待遇优厚

从各大招聘平台来看,资深音视频开发工程师的薪资普遍高于普通 Android/iOS 开发者,且岗位稀缺性强,议价能力更高。

音视频开发门槛高、资料少、路难走,但正因为如此,它才更值得你去深耕。

三、音视频该怎么学习?

如果细分的话,可以分为9个就业方向:

接下来将从多个维度梳理音视频领域的主流全栈开发技术,内容由浅入深、层层递进,包括:音视频开发基础、进阶成长路径、常用开源库、流媒体协议、实战项目等等,适合各类开发者转型或深耕音视频领域,包括但不限于:

  • 嵌入式开发人员
  • 桌面应用开发人员
  • Android / iOS 移动端开发人员
  • 后台服务开发人员
  • IT 行业有意转向音视频方向的技术从业者

同时,也适用于已有一定经验的音视频从业人员进行系统化提升,帮助他们构建完整的知识体系,拓展技术视野。

一、音视频开发基础

1.1、音频基础知识

音频相关的核心概念包括:

  • 采样率:即每秒采集声音样本的次数,决定了音频的频率范围。
  • 声道数与声道布局:如单声道、立体声、5.1声道等,涉及声音的空间分布方式。
  • 采样格式:表示每个音频样本的数据精度,如8位、16位或浮点型。
  • PCM与波形图:PCM(脉冲编码调制)是最常见的原始音频数据格式,波形图则用于可视化音频信号的变化。
  • 音质:通常与比特率、编码方式等因素有关。
  • 音频编码格式:如MP3、AAC、OGG等,影响音频压缩效率和音质。
  • 音频封装格式:如WAV、FLAC、MP4等,决定音频文件的存储结构。

1.2、通用基础知识

这一部分是音视频开发的基础技能,包括:

  • 编码原理:掌握基本的压缩与编码理论,如熵编码、预测编码等。
  • C/C++基础:作为音视频开发的主流语言,熟练掌握其语法与性能优化技巧至关重要。
  • 视频分析工具:如使用VLC、Elecard等工具进行音视频流分析。
  • FFmpeg常用命令:熟悉FFmpeg的基本操作,如转码、剪辑、提取音轨等。
  • 平台相关的多媒体API:如Windows下的DirectShow、Android中的MediaCodec、iOS的AVFoundation等。

1.3、视频基础知识

视频开发中需要掌握的核心概念包括:

  • 帧率:每秒显示的画面数量,常见有24fps、30fps、60fps等。
  • 码率:单位时间内传输的数据量,直接影响视频清晰度和文件大小。
  • 分辨率:画面的像素尺寸,如720p、1080p、4K等。
  • 像素格式:如YUV、RGB等,描述图像的颜色表示方式。
  • 色彩空间:如RGB、YUV、HSV等,用于不同场景下的颜色处理。
  • I帧、P帧、B帧:视频压缩中的关键帧类型,分别代表完整帧、前向预测帧和双向预测帧。
  • DTS与PTS:解码时间戳与显示时间戳,用于音视频同步。
  • YUV与RGB:两种主要的图像表示方式,YUV常用于视频压缩,RGB用于显示。
  • 位深与色域:影响图像的色彩表现力和动态范围。
  • 视频编码格式:如H.264、H.265、VP9、AV1等,决定了压缩效率和兼容性。
  • 视频封装格式:如MKV、MP4、AVI、TS等,决定了视频文件的组织结构。

二、音视频进阶成长

在掌握音视频开发基础之后,进一步深入学习将围绕音频、通用技能和视频三大方向展开,逐步提升至中高级开发水平。

2.1、音频进阶技能

在音频领域的深入学习主要包括以下几个方面:

  • 录音与麦克风采集:理解如何从设备获取原始音频数据,涉及采样控制、降噪处理等。
  • 音频编解码技术:熟悉主流音频编码标准(如AAC、PCM、Opus)及其软硬件编解码实现。
  • 音频播放机制:掌握音频输出流程,包括混音、缓冲管理、低延迟播放等关键技术。
  • 音频分析能力:如频谱分析、语音识别前端处理、音频特征提取等。
  • 音效处理:包括回声消除(AEC)、自动增益控制(AGC)、噪音抑制、混响效果等常见音频增强技术。

2.2、通用进阶技能

这部分是音视频开发的核心能力拓展,适用于多个应用场景:

  • 流媒体协议理解:掌握RTMP、HLS、RTP/RTCP、SRT等主流传输协议的工作原理与使用场景。
  • 音视频传输机制:了解网络传输中的丢包、抖动、带宽自适应等问题的应对策略。
  • 音视频同步播放:掌握 PTS/DTS 时间戳同步机制,实现精准的音画同步。
  • 平台多媒体开发实践:深入掌握 Android 的 AudioTrack/OpenSL ES、iOS 的 AVAudioEngine、Windows 的 WASAPI 等平台相关音频接口。
  • FFmpeg API 编程:不再仅限于命令行使用,而是能够基于 FFmpeg 的 libavcodec、libavformat、libswresample 等库进行定制化开发。
  • OpenGL 渲染技术:用于视频画面的高效渲染与特效处理,尤其在移动端应用广泛。
  • 音视频编辑功能开发:如剪辑、拼接、合成、添加字幕、转场效果等。

2.3、视频进阶技能

在视频方向上的深入学习内容如下:

  • 录像与摄像头采集:掌握不同平台下摄像头的调用方式,如 Android Camera API/CameraX、iOS AVCaptureSession、V4L2(Linux)等。
  • 视频编解码实现:深入了解 H.264/H.265 编码原理,掌握软硬编码的选择与优化方法。
  • 视频播放器开发:包括播放控制、格式兼容、异常处理、多分辨率适配等。
  • 滤镜与特效处理:如美颜、磨皮、瘦脸、滤镜叠加、人脸检测等视觉增强功能。
  • 视频转码与压缩优化:根据目标平台或网络环境调整视频参数,实现高质量与低带宽之间的平衡。

三、音视频工作方向

在学习和掌握了音视频开发的基础与进阶技能之后,很多人会面临一个关键问题:未来的职业方向该如何选择?

确实,在音视频领域,技术面广、应用场景多,初学者常常会在众多方向中感到迷茫。其实,这并不是坏事,说明你拥有广阔的选择空间。正如小米创始人雷军所说:“不要害怕做出选择。”只要你愿意投入热情去探索,终会找到属于自己的那条路。

乔布斯也曾说过:“做你热爱的事,热爱你所做的事。”只有真正热爱自己所从事的方向,才能走得更远、做得更深。

结合当前行业趋势,我将音视频相关的工作方向总结为以下九大方向:

3.1、直播方向

主要涉及实时音视频推流、拉流、低延迟优化、互动功能(如弹幕、连麦)、美颜滤镜等。常见于社交直播、电商带货、在线教育等领域。

3.2、传输方向

聚焦音视频在网络中的高效传输,包括协议选型(RTMP、HLS、SRT等)、抗丢包处理、QoS/QoE优化、CDN调度策略等。

3.3、算法方向

涵盖音频增强、语音识别、图像识别、视频超分、AI降噪、人像分割、美颜算法、编解码算法优化等多个前沿技术领域,是当前AI+音视频融合的重要方向。

3.4、视频播放器方向

专注于打造高性能、高兼容性的视频播放体验,包括格式解析、渲染优化、字幕支持、硬件加速、多码率自适应、离线缓存等功能模块。

3.5、流媒体后端方向

偏向服务端开发,负责搭建和维护音视频服务器系统,如媒体转发、转码集群、信令服务、负载均衡、日志监控等,通常需要掌握 Golang、C++ 或 Java 等语言。

3.6、短视频方向

围绕短视频采集、编辑、上传、推荐、播放等全链路展开,尤其注重用户体验与内容生产效率,常涉及剪辑工具、特效合成、智能推荐等内容引擎。

3.7、音频播放方向

专注于音频播放器、播控逻辑、音效处理、蓝牙耳机适配、后台播放机制等,广泛应用于音乐播放器、播客、有声书、语音助手等领域。

3.8、视频编辑方向

涉及剪辑、拼接、特效叠加、转场效果、字幕添加、调色、导出压缩等全流程开发,是影视制作类应用或平台的核心能力之一。

3.9、图像处理方向

主要关注图像质量提升、画质修复、风格迁移、图像识别、人像美化、背景虚化、AR贴纸等视觉增强技术,广泛应用于相机类 App 和 AR/VR 场景。

四、音视频开源库

在音视频开发中,利用开源库可以极大地提升开发效率和项目质量。以下是一些关键领域的优秀开源库介绍。

4.1、多媒体处理

多媒体处理是音视频开发的基础,常用的开源库包括:

  • FFmpeg:最广泛使用的多媒体框架之一,支持封装格式、编解码、滤镜、图像缩放、音频重采样等功能。
  • libav:FFmpeg的一个分支,提供了相似的功能集,但发展路径略有不同。
  • GStreamer:一个强大的流媒体处理框架,适用于构建各种复杂的音视频应用。

4.2、流媒体传输

对于实现低延迟的实时通信,推荐使用如下开源库:

  • WebRTC:目前最为流行的实时通讯(RTC)库,拥有JitterBuffer、NetEQ、pacer等模块用于优化网络条件下的音视频传输。
  • live555:主要用于流媒体传输,支持多种协议如RTSP、RTP等,适合构建基于IP的流媒体服务。

4.3、播放器

播放器的选择直接影响用户体验,以下是几个知名选项:

  • ijkplayer:由B站推出的跨平台播放器,高度可定制化。
  • ExoPlayer:Google为Android平台开发的播放器,提供丰富的功能和良好的兼容性。
  • VLC:由VideoLAN组织维护,是一款全能型播放器,支持几乎所有常见的音视频格式。

4.4、编解码

音视频编码与解码是保证内容高效传输的关键:

  • AAC:常用于点播和短视频,因其高质量而受到青睐。
  • Opus:专为RTC场景设计,具有出色的语音压缩性能。
  • VP9:Google推出的高效视频编码格式。
  • x264:由VideoLAN团队维护的H.264视频编码器,性能卓越。
  • AV1:由开放媒体联盟(AOMedia)推出的新一代视频编码标准,致力于提供更高的压缩率。

4.5、音频处理

针对音频处理,有几款非常实用的开源工具:

  • SoX:被誉为音频处理界的瑞士军刀,能够执行各种音效处理和滤波操作。
  • SoundTouch:专注于音频变速变调处理,支持变速不变调。
  • Speex:除了是一个优秀的音频编码器外,还包含PLC(丢包隐藏)、VAD(静音检测)、AEC(回声消除)等多种音频处理功能。

4.6、流媒体服务器

选择合适的流媒体服务器对项目的成功至关重要:

  • SRS:一款简单高效的视频服务器,支持多种协议如RTMP、WebRTC、HLS等。
  • Janus:由MeetEcho公司开源,基于WebRTC的流媒体服务器,实际上更像一个网关。

4.7、音视频分析

掌握一些分析工具对于开发者来说非常重要:

  • Mp4Parser:用于解析mp4文件结构,帮助理解其内部构成。
  • VideoEye:雷神开源的一款Windows平台上的视频码流分析工具。
  • Audacity:一款多功能的开源音频编辑软件,可用于编辑音频及分析音频波形。

4.8、视频渲染

为了增强视频视觉效果,可选用以下开源库:

  • GPUImage:允许添加各种滤镜特效,非常适合移动端开发。
  • Grafika:由Google工程师贡献,提供了基于Android平台的视频渲染示例。
  • LearnOpenGL:配合教程学习OpenGL,适用于希望深入理解图形编程的开发者。

五、流媒体协议

了解不同的流媒体协议对于开发高效、稳定的音视频应用至关重要,音视频传输优化不仅是当前音视频系统开发中的核心难点,也是提升用户体验、构建高质量服务的关键所在。深入理解并掌握相关技术,将为开发者打开通往高性能音视频系统的大门。

下面将介绍常见的流媒体传输协议、应用协议、WebRTC信令协议以及音视频编码和封装格式。

5.1、流媒体传输协议

常用的流媒体传输协议包括:

  • RTP (Real-time Transport Protocol):用于传送实时数据如音频、视频等,适用于一对一或一对多的通信场景。
  • SRTP (Secure Real-time Transport Protocol):在RTP的基础上增加了加密功能,确保数据传输的安全性,防止被窃听。
  • RTMP (Real Time Messaging Protocol):由Adobe公司开发,常用于视频直播中,支持多种变体如RTMPE(加密)、RTMPS(通过HTTPS)、RTMPT(通过HTTP)。
  • RTSP (Real Time Streaming Protocol):提供对流媒体服务器的控制功能,如播放、暂停、停止等操作,其命令字段包括OPTIONS、DESCRIBE、SETUP、PLAY、PAUSE、TEARDOWN等。
  • RTCP (RTP Control Protocol):与RTP一起使用,用于监控服务质量并提供反馈,例如统计丢包率、发送延迟等信息。

5.2、流媒体应用协议

针对不同需求的应用场景,选择合适的流媒体应用协议非常重要:

  • HLS (HTTP Live Streaming):苹果公司推出的流媒体协议,基于m3u8文件格式和ts流,支持自适应码率切换。
  • DASH (Dynamic Adaptive Streaming over HTTP):谷歌广泛使用的流媒体协议,采用fmp4切片技术,能够实现无缝的多码率自适应切换。

5.3、WebRTC信令协议

WebRTC需要信令来建立连接,主要涉及以下几种协议:

  • SDP (Session Description Protocol):用于描述多媒体通信会话参数。
  • ICE (Interactive Connectivity Establishment):解决NAT穿越问题,使得两个处于私有网络中的设备可以直接通信。
  • STUN (Session Traversal Utilities for NAT)TURN (Traversal Using Relays around NAT):帮助客户端穿透NAT,其中TURN作为最后手段,在直接连接失败时通过中继服务器转发数据。

5.4、音视频编码协议

为了提高传输效率和压缩质量,通常采用特定的编码协议:

  • 音频编码:如MP3、AAC、OPUS、FLAC、AC3、EAC3、AMR_NB、PCM_S16LE等。
  • 视频编码:如H.264、HEVC、VP9、MPEG4、AV1等,每种编码标准都有其适用场景和优势。

5.5、音视频封装格式

封装格式是多媒体容器,它包含了多媒体信息及音视频码流:

  • 视频封装格式:如mp4、mov、mkv、webm、flv、avi、ts、mpg、wmv等。
  • 音频封装格式:如mp3、m4a、flac、ogg、wav、wma、amr等。

这些格式不仅包含了音视频码流本身,还涵盖了关于多媒体内容的重要元数据,例如时长、分辨率、帧率、码率、采样率、声道数等。此外,字幕码流通常以特定格式的文本或位图形式存在。

六、实战项目

多个由浅入深、覆盖主流业务场景的实战项目。通过这些项目的训练,将具备独立开发完整音视频系统的能力,同时也能为简历加分、积累项目经验。

6.1、基础级项目:音视频采集与播放器开发

掌握音视频采集、播放的基本流程,熟悉FFmpeg、OpenCV、OpenGL等工具库的使用。

📌 项目内容:

  1. 音视频采集系统
  • 使用系统API或FFmpeg采集摄像头画面和麦克风音频
  • 支持多分辨率、帧率设置
  • 实现本地预览功能
  1. 简易播放器开发
  • 支持常见格式(MP4、MKV、FLV)的解析与播放
  • 基于FFmpeg + SDL/OpenGLES实现解码与渲染
  • 支持基本控制功能(暂停、快进、静音)
  1. 跨平台兼容性处理
  • Android/iOS/Windows/Linux 多平台支持思路讲解

6.2、中级项目:推拉流直播系统开发

掌握RTMP协议、推拉流原理,能够搭建一个完整的实时直播系统。

📌 项目内容:

  1. 直播推流端开发
  • 使用FFmpeg或librtmp进行音视频编码与封装
  • 支持摄像头/录屏采集+音频混音
  • 添加美颜滤镜(GPUImage/OpenGL实现)
  • 推流至云服务器或自建SRS服务器
  1. 直播播放端开发
  • 拉取RTMP/HLS流进行播放
  • 支持低延迟播放优化(buffer机制、首帧优化)
  • 支持硬件加速解码
  1. 信令交互与状态管理
  • 实现播放器状态同步、错误处理机制

6.3、高级项目:WebRTC一对一音视频通话系统

掌握WebRTC通信原理及实战开发,能够实现跨平台的一对一音视频通信。

📌 项目内容:

  1. WebRTC信令服务器搭建
  • 使用Node.js + WebSocket实现信令交互
  • 支持SDP交换、ICE候选者收集与转发
  1. Web端音视频通话系统
  • Web to Web 视频通话
  • 支持摄像头切换、静音、屏幕共享等功能
  1. Android/iOS 端接入
  • 实现 Android 与 Web、Android 与 iOS 的互通
  • 处理平台差异、权限申请、前后台切换逻辑
  1. 穿透服务部署
  • 配置 Coturn STUN/TURN 服务器,解决NAT穿越问题
  • ICE策略配置与连接成功率优化

6.4、企业级项目:视频监控系统开发

掌握视频监控系统的架构设计与开发要点,适用于安防、工业、教育等场景。

📌 项目内容:

  1. 多路视频采集与上传
  • 支持 RTSP 流采集(如摄像头、DVR)
  • 支持 H.264/H.265 编码压缩上传
  1. 视频存储与回放
  • 存储到本地文件或云端对象存储
  • 实现时间轴检索、倍速播放、截图功能
  1. 视频分析与报警联动
  • 接入 AI 分析模块(如人脸识别、移动侦测)
  • 报警信息推送与日志记录
  1. 监控客户端开发
  • 支持多窗口查看、PTZ控制、语音对讲
  • 支持移动端查看(H5/小程序)

6.5、拓展项目:流媒体服务器部署与二次开发

掌握主流流媒体服务器部署、调试与定制化开发能力。

📌 项目内容:

  1. 开源流媒体服务器部署
  • SRS(Simple Realtime Server)搭建与配置
  • Janus WebRTC网关部署与测试
  • 支持 RTMP、HLS、HTTP-FLV、WebRTC 等多种协议
  1. 服务器性能调优
  • 并发连接数限制与负载均衡
  • 日志分析与异常排查
  1. 基于SRS的插件开发
  • 自定义鉴权模块、转码任务调度
  • 实现录制回调、消息通知等扩展功能

6.6、综合项目:短视频系统开发

掌握短视频从采集、编辑、上传、播放的全流程开发。

📌 项目内容:

  1. 短视频录制与剪辑
  • 支持片段选取、裁剪、添加滤镜
  • 支持字幕、贴纸、转场特效
  1. 视频上传与转码
  • 上传至服务端并触发异步转码
  • 支持多分辨率、多编码格式输出
  1. 短视频播放器开发
  • 支持列表播放、自动加载更多、弹幕互动
  • 支持点赞、评论、分享等社交功能集成
  1. 推荐系统初探(可选)
  • 简单推荐算法实现,如热门榜、相似推荐

七、音视频相关书籍

在音视频开发的学习过程中,阅读专业书籍是构建系统知识体系的重要方式。以下从音频类视频类编程语言类三个维度,精选了一些高质量的技术书籍,供不同阶段的学习者参考。

7.1、音频类书籍

如果你希望深入理解音频信号处理与编码原理,以下书籍将为你打下坚实的理论基础:

  • 《The Music of Theory》:虽然偏音乐理论方向,但对理解音频感知和听觉特性有一定帮助。
  • 《DSP Noise Reduction》:聚焦数字信号处理中的噪声消除技术,适用于语音增强、降噪算法等场景。
  • 《Audio Signal Processing and Coding》:系统讲解音频信号处理与编码原理,适合进阶学习。
  • 《数字音频原理及应用》:国内经典教材,内容涵盖采样、量化、压缩编码等基础知识。
  • 《音频信号处理与编码》:结合理论与实践,介绍常见音频编解码器的设计与实现。

这些书籍有助于你理解音频底层原理,为后续开发如语音识别、音频增强、混音合成等打下坚实基础。

7.2、视频类书籍

视频开发涉及图像处理、编解码标准、渲染优化等多个方面,推荐如下书目:

  • 《数字图像与视频处理》:全面介绍图像与视频的基本概念与处理方法,适合入门。
  • 《音视频开发进阶指南》:实战导向,适合已有一定基础的开发者提升技能。
  • 《视频编码全角度详解》:深入解析主流视频编码标准,如H.264/AVC、H.265/HEVC等。
  • 《新一代视频压缩编码标准 H.264/AVC》:专注于H.264编码标准的原理与应用。
  • 《新一代高效视频编码 H.265/HEVC》:详细介绍HEVC编码框架、核心算法及性能优势。
  • 《数字图像处理(冈萨雷斯版)》:图像处理领域的权威教材,内容详实、理论扎实。
  • 《多媒体信号编码与传输》:探讨多媒体数据的编码方式与传输机制,适合研究方向读者。
  • 《OpenGL 编程指南》:图形渲染的经典教材,掌握GPU加速渲染必备。
  • 《WebRTC Native 开发实战》:针对WebRTC底层开发,适合想深入了解实时通信的同学。
  • 《FFmpeg 从入门到精通》:系统讲解FFmpeg的使用与API开发,实用性极强。
  • 《在线视频技术精要》:覆盖流媒体服务端与客户端的关键技术,适合工程落地参考。

这些书籍不仅适合个人自学,也可作为项目开发时的参考资料。

7.3、编程语言类书籍(C/C++)

音视频开发多以 C/C++ 为主,因此熟练掌握这两门语言至关重要。以下是一些经典书籍推荐:

  • 《C语言程序设计》(谭浩强):初学者友好,适合作为C语言入门教材。
  • 《C++编程思想》(Bruce Eckel):讲解面向对象思想,适合过渡到C++开发。
  • 《C++ Primer Plus》:语言通俗易懂,适合自学者打基础。
  • 《C++程序设计语言》(Bjarne Stroustrup):C++之父所著,权威性极高。
  • 《Effective C++》(Scott Meyers):C++进阶必读,总结了55条实用经验。
  • 《程序员的自我修养》:深入理解链接、装载、库、内存管理等底层机制,非常适合音视频底层开发人员阅读。

在这个卷的时代,我们要做的不是跟风,而是找到一条别人不敢走、不愿走、走不下去的路,然后稳扎稳打地走下去。如果你愿意深耕音视频领域,未来一定会收获属于你的技术红利和职业成长。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LINUX 通过rsync同步 免密备份

1,增加免密码用户密码 useradd backup echo "5566777" | passwd --stdin backup echo "backup ALL(ALL) ALL" >> /etc/sudoers # 源服务器操作 ssh client_usersource_server ssh-keygen -t rsa # 一路回车 ssh-copy-id serv…

在使用 HTML5 的 <video> 标签嵌入视频时,有时会遇到无法播放 MP4 文件的问题

原因分析: 只能播放声音,却无法播放视频。这通常是由于视频编码格式不兼容导致的。虽然 MP4 是一种常见的视频格式,但它包含多种编码方式,并非所有编码方式都受 HTML5 支持。 解决方案: 确认视频编码格式: …

【bugfix】记一次Spring Boot 配置层级错误导致数据库连接失败

前言:为什么你的数据库配置读不到? 在 Spring Boot 项目中,配置文件的层级(prefix) 是决定属性能否被正确解析的核心因素。一个看似微小的缩进错误,可能导致整个应用的数据库连接失败、服务启动异常&#…

wpf 队列(Queue)在视觉树迭代查找中的作用分析

文章目录 队列(Queue)在视觉树迭代查找中的作用分析示例代码一、队列的核心作用1. 替代递归的迭代机制2. 实现广度优先搜索(BFS) 二、队列的工作流程1. 初始化阶段2. 处理循环 三、队列操作的详细步骤查找过程分解: 四、为什么使用队列而不是其他数据结构1. 与栈(St…

快手数据开发面试SQL题:取窗口内排名第一和排名倒数第一的作为两个字段输出

目录 问题描述 样例数据表 sales 解决方案 第三步:使用条件聚合将多行合并为单行输出" 步骤1:计算排名的中间结果 中间结果输出: 步骤2:最终查询(处理并列情况) 最终输出结果: 关键点解释: RANK() OVER (PARTITION BY group_id ORDER BY amount DESC):…

第十六届蓝桥杯国赛(2025)C/C++B组 蓝桥星数字 独家解析

这题我中午是12点以后开始做的,只剩下1个小时了,12点50的时候完成了框架,但是细节总是实现不对,现在晚上来复盘的时候才把这题A出来了。 但是,就像高考的导数你整个思路都会,你死在了求导上。。。&#xf…

Google 的 Protocol Buffers 介绍

Protocol Buffers(简称 Protobuf)是由 Google 开发的一种高效、灵活、跨语言的数据序列化协议,广泛用于网络通信、分布式系统、持久化存储等场景。 一、什么是 Protocol Buffers? Protocol Buffers 是一种结构化的数据交换格式,类似于 XML 和 JSON,但更小、更快、更简单…

犀思云Fusion WAN与阿里云NIS深度融合,实现端到端智能可观测

随着“AI数智化”浪潮逐步深入行业,企业网络的复杂与故障感知日渐凸显。如何实现网络的高效运维、智能诊断与全域可视化管理,已成为企业上云的核心挑战。 近日,犀思云与阿里云达成深度产品级合作,将阿里云网络智能服务&#xff0…

基于gec6818的环境监测系统设计

一、设计要求 将环境中温湿度数值、环境的光照强度和烟雾的信息获取到开发板,显示在图形界面上。当温度值高于阈值时,温度指示灯变红、蜂鸣器告警并且启动直流电机正转降温;当湿度值高于阈值时,湿度指示灯变红、蜂鸣器告警并且继电器吸合接通…

c++中std::transform详解和应用代码示例

std::transform 是 C 标准库中非常常用的算法之一&#xff0c;属于 <algorithm> 头文件。它的作用是将一个&#xff08;或两个&#xff09;序列中的元素通过某个函数进行变换&#xff0c;并将结果输出到另一个序列中。 一、std::transform 作用总结 std::transform 支持…

Yolov5 使用

1.开发背景 在已有的 Conda 环境下实现目标检测标定。 2.开发需求 实现演示例子的图片标定。 3.开发环境 Ubuntu20.04 Conda Yolov5 4.实现步骤 4.1 安装环境 # 创建环境 python 版本建议 3.9 以上 conda create -n yolov5 python3.9# 进入环境 conda activate yolov5# …

资深Java工程师的面试题目(四)性能优化

以下是针对Java性能优化的面试题&#xff0c;涵盖前后端技术栈的常见优化方式&#xff0c;适合评估候选人对性能调优的理解和实际应用能力&#xff1a; 1. JVM性能调优 题目: 请说明JVM垃圾回收&#xff08;GC&#xff09;的常见类型及其适用场景&#xff0c;并描述如何通过J…

火山引擎TTS使用体验

文章目录 前言1. 简介1.1 能力体验1.2 功能特性1.3 音色列表1.4 收费情况 2. 开启服务2.1 创建应用2.3 使用服务介绍 3.Websocket接入演示3.1 编写demo3.2 代码解释3.4运行demo 4. 参考链接 前言 语音合成TTS&#xff08;text to Speech&#xff09;是我觉得后续开发产品所不可…

Django中使用流式响应,自己也能实现ChatGPT的效果

最近在研究ChatGPT的时候&#xff0c;想通过openai提供的接口使国内用户也可以无限制访问&#xff0c;于是打算基于django开发一款应用。页面的渲染也得想ChatGPT一样采用流式响应&#xff0c;django中StreamingHttpResponse是支持流式响应的一种方式。 django 代码 class Ch…

Python Redis 简介

Redis 是一个高性能的内存键值数据库&#xff0c;支持多种数据结构&#xff08;字符串、列表、哈希、集合等&#xff09;&#xff0c;常用于缓存、消息队列和实时数据处理。Python 通过 redis-py 库与 Redis 交互。 核心功能 内存存储&#xff1a;数据存储在内存中&#xff0c…

mac安装whistle代理抓包工具(支持mock)

工具地址&#xff1a;https://wproxy.org/whistle/ 1、 安装nodejs环境 参考方法&#xff1a;https://github.com/nvm-sh/nvm 1&#xff09;安装 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash如图&#xff0c;安装成功 2&#xff09;…

基于 mydumper 实现 MySQL 定期全量备份、恢复方案

一、Mydumper 工具介绍 mydumper 是一款社区开源的逻辑备份工具,由 C 语言编写,与 MySQL 官方提供的 mysqldump 相比,它具有更高的性能和更多的功能,例如: • 支持多线程导出数据,速度更快; • 支持一致性备份; • 支持将导出文件压缩,节约空间; • 支持多线程恢复;…

C++中,std::async 一个用于异步编程的工具

在C中&#xff0c;std::async 是一个用于异步编程的工具&#xff0c;它允许你在一个单独的线程中执行任务&#xff0c;并返回一个 std::future 对象&#xff0c;通过这个对象可以获取任务的结果或者检查任务的状态。 基本用法1 lambda 表达式 #include <iostream> #incl…

【Linux驱动开发 ---- 4_驱动开发框架和 API】

Linux驱动开发 ---- 4_驱动开发框架和 API 目录 Linux驱动开发 ---- 4_驱动开发框架和 API&#x1f3af; 目标&#xff1a;&#x1f4cc; 1. Linux 设备模型&#xff08;Linux Device Model&#xff09;**设备模型的核心概念**&#xff1a; &#x1f4cc; 2. 设备树&#xff08…

实景VR展厅建设流程

实景VR展厅&#xff1a;建设流程、用途、案例与未来发展 随着虚拟现实&#xff08;VR&#xff09;技术的发展&#xff0c;实景VR展厅作为一种创新的展示方式&#xff0c;正在各个领域得到广泛应用。实景VR展厅提供沉浸式的体验&#xff0c;丰富展示内容和形式&#xff0c;为观…