• 传统Android 开发与 Android 音视频开发的差距……


    随着短视频平台的持续火热了好几年,招聘市场对会视频研发的人才需求越来越旺盛。像直播带货、视频会议、音视频通话等社交产品的更新与迭代等,都是给了工程师们创造了新机会

    最简单粗暴的方式是,你可以直接通过各大招聘平台去了解相关的就业薪资的趋势。如果那Android 开发来对比的话,目前做音视频开发的薪资水平要比同资历的 Android 开发要高出 30% 左右。在随着AI、元宇宙等技术的发展,视频技术还会是主流技术。

    但对大家而言,学习音视频技术还是有一定的门槛,比如

    • 短视频需要应用图像处理和视频编码技术,如何在保持高画质的情况下,尽量减少视频文件的大小,是很难也很重要的;
    • 连麦直播则需要懂 RTC 和直播技术,如何能够保证在各种网络状况下实现超低延时、降低卡顿率是一个非常难的问题;
    • 视频会议则需要你十分熟悉 RTC 和转码合流服务等技术,几十上百人的大型视频会议,如何保证流畅度、卡顿率、画质等指标也是十分具有挑战性的。

    音视频涉及到的技术有很多,比如视频前处理,就涉及到很多信号处理;视频的编码算法;而视频的传输就更多了,包含了各种网络协议和拥塞控制算法……

    正是因为这些点,学习起来有一定难度,能真正坚持学习下去的人才比较少,这也导致该岗位的人才缺失,所以市场招聘音视频岗位薪资亦是水涨船高。而且目前 Android 音视频开发这块没有比较系统性的教科书籍,网上的技术博客又比较杂乱,自己只能东拼西凑的学习,然后在慢慢的累积把知识点串联起来。我之前的学习之路就是这样,为了学习好这技术用了一年多的时间。回头想一下该岗位薪资高还是有原因的。

    为了后者学习音视频技术少走弯路少踩坑,能更好有体系性的学习,整理了一份完整且全面的 《音视频开发技术学习》思维导图

    **并附有相关的《音视频开发核心知识点笔记》,希望能帮助到大家更好更快速的掌握该技术,有需要的朋友们可以私信回复: “音视频” 进行货取!!! 查漏补缺

    音视频核心笔记完整目录

    音视频初级入门

    音视频初级入门主要是接触Android多媒体展示相关的API,通过单独的列举和使用这些API,对Android音视频处理有一个基本的轮廓,虽然知识点相对来说是比较散的,但是点成线、线成面,基本的基础掌握了,通过学习Android音视频核心的API将音视频的流程串联起来,这样对于音视频的了解和控制就不仅仅局限于最外层的API了,而是能够通过相对底层的方式来加深对Android 音视频开发的认知。

    • Android 音视频开发(一):通过三种方式绘制图片
    • Android 音视频开发(二):使用 AudioRecord 采集音频PCM并保存到文件
    • Android 音视频开发(三):使用 AudioTrack 播放PCM音频
    • Android 音视频开发(四):使用 Camera API 采集视频数据
    • Android 音视频开发(五):使用 MediaExtractor 和 MediaMuxer API 解析和封装 mp4 文件
    • Android 音视频开发(六):MediaCodec API 详解
    • Android 音视频开发(七):音视频录制流程总结
    • ……

    音视频中级进阶:OpenSL ES 学习

    学习 Android 平台 OpenSL ES API,了解 OpenSL 开发的基本流程,使用OpenSL播放PCM数据,并了解相关API的简单使用

    • Android OpenSL ES 开发:Android OpenSL 介绍和开发流程说明
    • Android OpenSL ES 开发:使用 OpenSL 播放 PCM 数据
    • Android OpenSL ES 开发:Android OpenSL 录制 PCM 音频数据
    • Android OpenSL ES 开发:OpenSL ES利用SoundTouch实现PCM音频的变速和变调

    这一部分主要是动手实践,积累实战经验,可以试试给自己定以下目标:

    • 使用 OpenGL 显示一张图片
    • GLSurfaceviw 绘制 Camera 预览画面及实现拍照
    • 使用OpenGL ES 完成视频的录制,并实现视频水印效果

    • Android OpenGL ES 开发(一): OpenGL ES 介绍
    • Android OpenGL ES 开发(二): OpenGL ES 环境搭建
    • Android OpenGL ES 开发(三): OpenGL ES 定义形状
    • Android OpenGL ES 开发(四): OpenGL ES 绘制形状
    • Android OpenGL ES 开发(五): OpenGL ES 使用投影和相机视图
    • Android OpenGL ES 开发(六): OpenGL ES 添加运动效果
    • Android OpenGL ES 开发(七): OpenGL ES 响应触摸事件
    • Android OpenGL ES 开发(八): OpenGL ES 着色器语言GLSL
    • Android OpenGL ES 开发(九): OpenGL ES 纹理贴图
    • Android OpenGL ES 开发(十): 通过GLES20与着色器交互
    • ……

    有需要的朋友们可以私信回复: “音视频” 进行货取!!!

    音视频高级探究

    • 深入学习音视频编码,如H.264,AAC,研究使用开源编解码库,如x.264,JM 等
    • 深入研究音视频相关的网络协议,如 rtmp,hls,以及封包格式,如:flv,mp4
    • 深入学习一些音视频领域的开源项目,如 webrtc,ffmpeg,ijkplayer,librtmp 等等
    • 将 ffmpeg 库移植到 Android 平台,结合上面积累的经验,编写一款简易的音视频播放器
    • 将 x264 库移植到 Android 平台,结合上面积累的经验,完成视频数据 H264 软编功能
    • 将 librtmp 库移植到 Android 平台,结合上面积累的经验,完成 Android RTMP 推流功能

    音视频编解码技术

    • 音视频编解码技术(一):MPEG-4/H.264 AVC 编解码标准
    • 音视频编解码技术(二):AAC 音频编码技术
    • ……

    流媒体协议

    • 流媒体协议(一):HLS 协议
    • 流媒体协议(二):RTMP协议
    • ……

    多媒体文件格式

    • 多媒体文件格式(一):MP4 格式
    • 多媒体文件格式(二):FLV 格式
    • 多媒体文件格式(三):M3U8 格式
    • 多媒体文件格式(四):TS 格式
    • 多媒体文件格式(五):PCM / WAV 格式
    • ……

    FFmpeg 学习

    • FFmpeg命令行工具学习(一):查看媒体文件头信息工具ffprobe

    • FFmpeg命令行工具学习(二):播放媒体文件的工具ffplay

    • FFmpeg命令行工具学习(三):媒体文件转换工具ffmpeg

    • FFmpeg命令行工具学习(四):FFmpeg 采集设备

    • FFmpeg命令行工具学习(五):FFmpeg 调整音视频播放速度

    • ……

    • FFmpeg 学习(一):FFmpeg 简介

    • FFmpeg 学习(二):Mac下安装FFmpeg

    • FFmpeg 学习(三):将 FFmpeg 移植到 Android平台

    • FFmpeg 学习(四):FFmpeg API 介绍与通用 API 分析

    • FFmpeg 学习(五):FFmpeg 编解码 API 分析

    • FFmpeg 学习(六):FFmpeg 核心模块 libavformat 与 libavcodec 分析

    • ……

    • FFmpeg 结构体学习(一):AVFormatContext 分析

    • FFmpeg 结构体学习(二):AVStream 分析

    • FFmpeg 结构体学习(三):AVPacket 分析

    • FFmpeg 结构体学习(四):AVFrame 分析

    • FFmpeg 结构体学习(五):AVCodec 分析

    • FFmpeg 结构体学习(六):AVCodecContext 分析

    • FFmpeg 结构体学习(七):AVIOContext 分析

    • FFmpeg 结构体学习(八):FFMPEG中重要结构体之间的关系

    • ……

    • FFmpeg 开发之 AVFilter 使用流程总结

    • FFmpeg 过时 Api 汇总整理

    • ……

    有需要的朋友们可以私信回复: “音视频” 进行货取!!!

  • 相关阅读:
    2022南京邮电大学-计软网安学院-电子信息-应届生-考研分享
    R语言 某高校的期末综合测评
    客如云×OceanBase:分布式云升级助力客如云降本增效
    Mybatis的XML配置文件
    Shell脚本——提取目录名和文件名
    Git使用详细教程
    数据库表数据类型datetime 和 timestamp区别,以及优缺点
    【Mysql】主从一致
    QAnything部署Mac m1环境
    性能分析与调优(硬核分享)
  • 原文地址:https://blog.csdn.net/m0_71263309/article/details/126374973