Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

YUV/PCM/H264/H265/AAC/FFmpeg/Opengl. 这有丰富的音视频开发的学习资源、开发工具、优秀书籍、教程、面试题和开源项目,旨在帮助开发者和爱好者更好地学习、实践和工作。

License

NotificationsYou must be signed in to change notification settings

xhunmon/VABlog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

为了更好的阅读请前往GitBook

欢迎加入QQ技术交流群:389713575

一、前言

这里整理有着丰富的音视频开发的学习资源、开发工具、优秀书籍、教程和开源项目,旨在帮助开发者和爱好者更好地学习、实践和工作。而下图是开发处理的过程:

音视频处理过程

二、学习技能

语言重要度作用
C/C++★★★★★作为底层开发语言,可以实现音视频编码/解码,滤镜等高性能的操作,是音视频开发中最为重要的基础语言之一。
Python★★★☆☆Python 在音视频开发中可以用于快速开发或原型开发,尤其在深度学习及音视频处理应用中表现突出。
Java/Kotlin★★★☆☆Java/Kotlin 适用于 Android平台的音视频开发,它们提供了音视频录制、剪辑、播放等 API。
Objective-C/Swift★★★☆☆用于MacOS、iOS平台的开发,其开发API包含音视频流的处理和流媒体播放等。
JavaScript★☆☆☆☆JavaScript是Web开发的常用编程语言,它的WebRTC技术可以用于浏览器中的音视频流处理和实时通讯。
Shell★☆☆☆☆脚本编写、系统管理等。
CMake★☆☆☆☆跨平台编译、构建工具等。
GLSL★☆☆☆☆图形学、OpenGL着色器等。

三、学习音视频理论知识

1.重要知识点

知识点重要度作用
YUV/RGB★★★★★视频原始(裸流)数据,解码最终显示就是一帧帧YUV数据 。
PCM★★★★★音频原始(裸流)数据,解码最终播放的就是PCM数据。
H.264(AVC)★★★★★目前主流的视频编解码协议。
H.265(HEVC)★★★☆☆基于H.264的升级版,大幅度提升了编码大小和质量。因为版权和收费问题没有普及。
AAC★★★★★目前主流的音频编解码协议。
RTMP★★★☆☆直播推流,看侧重点
封装格式★★☆☆☆MP4、AVI、MKV、RMVB、FLV等容器,把音频、视频、字幕等通道封装成一个文件
webrtc(VP8)★★★☆☆P2P的音视频通话,看侧重点
OpenGL★★★☆☆使用GPU渲染视频,释放宝贵的CPU资源,看侧重点

2.书籍推荐

3.实践

3.1.视音频数据处理入门

[总结]视音频编解码技术零基础学习方法 系列文章,介绍了视音频编解码技术大体上原理和流程,通俗易懂。包括以下文章:

3.2.完整的RTMP推送小项目

此过程,体现从0~1。0是采集到的原始视频和音频数据,进行编码、封装,变为1(文件)。

3.3.播放器小项目

此过程,体现从1~0。与3.2正好相反,把封装的文件(网络数据)通过解封装和解码,得到原始的裸数据(一帧帧图片)进行播放。

  • AFPlayer项目 Android实现FFmpeg、OpenSL ES、OpenGL SE、MediaCodec等,实现简单的播放器,主要体现出相关知识点的使用。

四、学习过程的分析工具

工具作用下载地址
VideoEye来自雷神的强大实时视频码流分析软件。地址
CodecianH264/H265等分析工具(跨平台)。地址
H264VisaH.264/AVC实时视频分析工具。(略)
Elecard StreamEye编码视频的可视化表现,流结构分析,这些流是MPEG-1/2/4 or AVC/H.264 VES(视频基本流)、SS(MPEG1的系统流)、PS(MPEG2的程序流)、TS(mpeg2的传输流)。(略)
Hxd Hex Editor16进制查看工具。地址
ffprobeffmpeg中自带的分析工具,非常强大,不过上手有难度。参考

五、重点开发工具/组件/开源库

1.FFmpeg

音视频开发是绕不开FFmpeg的,因为它是一个"集大成者",里面已经包含或可集成现代几乎所有的音视频技术(库)。

1.1.学习途径

1.2.学习路线

这里不推荐直接学习雷神的 [总结]FFMPEG视音频编解码零基础学习方法,建议是通过在学习FFmpeg官方例子中进行学习,避免先入为主使用了过时的API。

1.2.1.源码编译

编译ffmpeg4.2.2通过这篇文章我们基本可以编译出我们想要的FFmpeg库

1.2.2.源码阅读

1.2.3.学习官方例子

1.2.4.音视频同步

1.2.5.FFmpeg相关

2 OpenGL

OpenGL使用GPU渲染视频,释放宝贵的CPU资源,学习它是必不可少的。但是,正如雷神所说 :作为一个搞视频技术的人研究OpenGL,需要耗费大量时间和精力,这样学习不是很经济。所以推荐只学习有关视频渲染相关知识。

3.音频相关处理库

库名称作用平台项目地址
SoXSoX 可以进行音频处理,如音调、声速、混响、后暂式等等Linux、macOS、Windowshttps://github.com/chirlu/sox
EssentiaEssentia 可以进行音频处理、分析、提取等,提供了很多现成的功能算法Windows、macOS、Linux、Android、iOShttps://github.com/MTG/essentia
SpleeterSpleeter 是一款分离歌曲音轨的库,可以分离歌曲中的伴奏、人声等(如:不带背景乐的伴奏)Linux、macOS、Windowshttps://github.com/deezer/spleeter
libsndfilelibsndfile 可以读写、处理多种音频文件,支持变速、变调等处理Linux、macOS、Windowshttp://www.mega-nerd.com/libsndfile/
Rubber Band AudioRubber Band Audio 可以进行音频处理,支持变速、变调、变形和时间拉伸等多种处理操作Linux、macOS、Windowshttps://breakfastquay.com/rubberband/
librubberbandlibrubberband 是 Rubber Band Audio 的 C++ 接口,简化了音频处理操作。Linux、macOS、Windowshttps://github.com/breakfastquay/rubberband/tree/master/src
SoundTouchSoundTouch 可用进行音频连续变速变调处理,包括作品(“chipway/Pydub-Playground”),可实现歌曲同步播放。Windows、macOS、Linux、Android、iOShttps://gitlab.com/soundtouch/soundtouch
SonicSonic 可实现音频变速、变调等处理,运用于 播客、游戏等领域。Windows、macOS、Linux、Android、iOShttps://github.com/waywardgeek/sonic
OboeOboe是一个C++库,它使在Android上建立高性能的音频应用变得容易。Androidhttps://github.com/google/oboe

4.视频相关处理库

库名称作用平台项目地址
FFmpegFFmpeg 可以转换视频文件格式、添加滤镜、剪辑、提取音频等功能Linux、macOS、Windowshttps://github.com/FFmpeg/FFmpeg
Libavlibav 同样可以转换视频文件格式、添加滤镜、剪辑、提取音频等功能,是 FFmpeg 的一个分支版本Linux、macOS、Windowshttps://libav.org/
GStreamerGStreamer 是一个流媒体框架,支持流式传输视频文件并进行处理,可以添加滤镜、编解码、格式转换等功能Linux、macOS、Windowshttps://gstreamer.freedesktop.org/
MLT FrameworkMLT Framework 可以用于视频混合、转换、添加滤镜、效果等,也是 Kdenlive 软件所使用的引擎Linux、macOS、Windowshttps://github.com/mltframework/
OpenCVOpenCV 是一个计算机视觉库,但也支持读取、写入视频文件、添加滤镜、实现对象追踪等功能Linux、macOS、Windowshttps://github.com/opencv/opencv
BlenderBlender 是一个 3D 制作软件,支持读取、写入视频文件、添加滤镜、实现对象制作等功能Linux、macOS、Windowshttps://www.blender.org/
MLV AppMLV App 主要用于处理和编辑 Magic Lantern 的电影录制格式,可以进行视频转换和色彩分级等Linux、macOS、Windowshttps://bitbucket.org/dmilligan/mlv_app/
HandBrakeHandBrake 是一个跨平台的视频转换器,支持多种输入、输出格式,可以添加滤镜、转换分辨率等操作Linux、macOS、Windowshttps://github.com/HandBrake/HandBrake
AvidemuxAvidemux 是一款视频编辑器,支持许多基本的编辑功能,如修建、编码、添加滤镜等Linux、macOS、Windowshttp://avidemux.sourceforge.net/
ShotcutShotcut 是一个跨平台的视频编辑器,支持多种基本编辑功能,并提供了丰富的视频滤镜Linux、macOS、Windowshttps://www.shotcut.org/
LightworksLightworks 是一款视频编辑软件,支持多种高级编辑功能,如多个视频轨道、音频同步、字幕、剪辑等Linux、macOS、Windowshttps://www.lwks.com/
KinoKino 是一款开源的视频编辑器,支持视频的剪辑、滤镜、导出等Linuxhttp://www.kinodv.org/
Cinelerra GGCinelerra GG 是截至目前正在活跃开发的 Cinelerra 的一个独特分支,具有更多先进的编辑功能Linuxhttps://cinelerra-gg.org/
FlowbladeFlowblade 是一个跨平台的视频编辑器,具有自动编辑、视频剪辑、渐变调色、音轨图、文本动画等功能Linux、macOShttps://github.com/jliljebl/flowblade
OliveOlive 是一款跨平台的视频编辑器,支持多个视频、音频和图像轨道,具有类似 Adobe Premiere 和 Final Cut Pro 等视频编辑器的界面Linux、macOS、Windowshttps://www.olivevideoeditor.org/

5.其他常用库

库名称描述作用平台项目地址
ARToolKit一个用于创建增强现实体验的开源跟踪库多平台https://github.com/artoolkit/ARToolKit5/
Kurento可以集成WebRTC和媒体服务器的平台Webhttps://www.kurento.org/
Webrtc实时通信的开源项目,包括音频、视频和数据通信Webhttps://webrtc.org/
VLC一个免费的开源跨平台媒体播放器和框架,可播放大多数多媒体文件多平台https://www.videolan.org/vlc/index.html
ExoPlayer一个可扩展的Android媒体播放器,包括支持DASH和HLS的内置组件Androidhttps://github.com/google/ExoPlayer
VitamioAndroid和iOS的流媒体解决方案Android,iOShttps://www.vitamio.org/en/
AVPlayer一个iOS播放器框架,支持本地和网络音频和视频文件iOShttps://developer.apple.com/documentation/avfoundation/avplayer
FFmpegKitFFmpeg库的原生iOS和Android包装器iOS,Androidhttps://github.com/tanersener/ffmpeg-kit
libVLC适用于Android、iOS、tvOS和macOS的VLC音视频框架Android,iOS,tvOS,macOShttps://code.videolan.org/videolan/libvlc-framework
AVKit一个macOS框架,提供音频和视频播放和处理功能macOShttps://developer.apple.com/documentation/avkit
Unity Video Player一种用于在游戏中播放视频的Unity组件Unityhttps://docs.unity3d.com/Manual/class-VideoPlayer.html
Three.js一个基于WebGL的跨平台JavaScript库,可用于创建和显示3D计算机图形Webhttps://threejs.org/
A-Frame一个用于构建虚拟现实和增强现实的Web框架Webhttps://aframe.io/
WebVR一种可用于任何Web浏览器的虚拟现实解决方案Webhttps://webvr.info/
Web Audio APIJavaScript API,用于处理和操纵音频Webhttps://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API
Tone.js用于Web音乐软件的框架Webhttps://tonejs.github.io/
Pygame用于开发2D游戏的Python库Pythonhttps://www.pygame.org/news
OpenAL多平台上的跨API的3D音频库多平台https://www.openal.org/
SDL_mixer用于游戏和其他多媒体应用程序的音频库多平台https://www.libsdl.org/projects/SDL_mixer/
Houdini针对3D艺术家和游戏开发人员的3D建模、动画和视觉效果软件多平台https://www.sidefx.com/
Natron免费的、开源的视频合成软件多平台https://natrongithub.github.io/
OBS Studio免费、开源、跨平台的流媒体和录制软件多平台https://obsproject.com/
GIMP免费的开源图像编辑器多平台https://www.gimp.org/
Inkscape一个用于创建和编辑矢量图形的开源软件多平台https://inkscape.org/
MediaInfo一个开源的多媒体信息解析器,用于获取媒体文件的各种信息多平台https://mediaarea.net/en/MediaInfo
libde265一种异步HEVC解码器库多平台https://github.com/strukturag/libde265
libvpx适用于WebRTC、VP8和VP9的开源视频编解码器多平台https://github.com/webmproject/libvpx
x264一种高质量的H.264 / AVC编码器多平台https://www.videolan.org/developers/x264.html
x265一种用于UHD编码的开源HEVC编码器多平台https://bitbucket.org/multicoreware/x265_git
Theora一种开源视频编解码器Webhttps://www.theora.org/
Ogg一种开源多媒体容器格式,通常与Theora和Vorbis一起使用Webhttps://www.xiph.org/ogg/
Vorbis一种开源音频编解码器Webhttps://xiph.org/vorbis/
WebVTT一种用于视频文本替代品的Web文本轨道Webhttps://w3c.github.io/webvtt/
PyAV基于FFmpeg的Python封装,可用于解码、编码和处理音频和视频Pythonhttps://pyav.org/
FFpyplayerPython+FFmpeg解决方案,在Python中播放音频和视频Pythonhttps://ffpyplayer.readthedocs.io/en/latest/
SoundManager2一个轻型、大众化的JavaScript音频播放器库Webhttps://github.com/scottschiller/SoundManager2
wave.js用于简化Web音频的JavaScript库Webhttps://github.com/jaz303/waveform-data
Howler.js用于现代Web音频的JavaScript音频库Webhttps://github.com/goldfire/howler.js
Web Audio DAW用于在浏览器中创建数字音频工作站(DAW)的Web Audio EditorWebhttps://beryju.org/web

六、实践项目

  • AFPlayer项目 Android实现FFmpeg、OpenSL ES、OpenGL SE、MediaCodec等,实现简单的播放器,主要体现出相关知识点的使用。
  • OpenGLES基本使用 :点、线、三角形、四边形、矩阵、纹理(贴纸)、摄像头显示、FBO、EGL、滤镜叠加、视频流编码输出。
  • 直接阅读上方优秀开源库效果更佳...

七、最后

创作皆不易,有条件的朋友请支持原版,谢谢!密码:lqi9

    网易视频    价值几千块的音视频视频    动脑视频    C++侯捷视频    音视频开发进阶指南:基于Android与iOS平台的实践.pdf    音视频05-H265码流分析.pdf    音视频04-H265之CU TU PU划分.pdf    音视频03-H265深度解析.pdf    音视频02-H265编码与H264区别.pdf    音视频01-H265编码.pdf    新一代视频压缩编码标准-H.264_AVC(第二版).pdf    数字信号处理教程(第四版).pdf    视频技术手册(第5版).pdf    《FFmpeg从入门到精通》.pdf    《FFmpeg_Basics(260页)》.pdf    webrtc介绍.pdf    WebGL编程指南.zip    video_file_format_spec_v10_1.pdf    STL源码剖析简体中文完整版(清晰扫描带目录).pdf    SDL2-API手册.doc    rtmp规范翻译1.0.docx    rtmp_specification_1.0.pdf    rtmp.part3.Commands-Messages.pdf    rtmp.part2.Message-Formats.pdf    rtmp.part1.Chunk-Stream.pdf    jni基础介绍.pdf    OpenGL ES 2.0 编程指南 中文版.pdf    OpenGL+着色语言第三版.pdf    OpenGL.ES.2.0.Programming.Guide.pdf    OpenGL着色语言.pdf    ISO_IEC_14496-14_2003-11-15.pdf    ISO_IEC-14496-3-2009.pdf    hls-mpeg-ts-VB_WhitePaper_TransportStreamVSProgramStream_rd2.pdf    hls-mpeg-ts-iso13818-1.pdf    H.264官方中文版.pdf    H.264_MPEG-4-Part-10-White-Paper.pdf    H.264-AVC-ISO_IEC_14496-15.pdf    H.264-AVC-ISO_IEC_14496-10.pdf    ffmpeg命令大全.pdf    FFmpeg命令大全.docx    ffmpeg翻译文档.pdf    FFMPEG_FFPLAY源码剖析.7z    CMake中文手册.pdf    Cmake在Android studio Ndk使用.pdf    C++ Primer(第5版)中文版.pdf    C++ Primer Plus(第6版)中文版.azw3    C Primer中文版 第五版 .pdf    Android 音视频开发_何俊林.pdf    amf3_spec_121207.pdf    amf0_spec_121207.pdf    Advanced C and C++ Compiling.pdf    AAC解码算法原理详解.pdf    WebRTC权威指南(第三版中文版).pdf    音频编码(高泽华)上.pdf    视频技术手册.pdf    高级音频编解码器资料.pdf    《数字信号处理》视频:https://www.bilibili.com/video/BV13P411P7Pv

【重点声明】此系列仅用于学习,禁止用于非法攻击,非法传播。一切遵守《网络安全法》。且如有发现商用,必纠法律责任。如有侵权请联系我(邮箱:xhunmon@126.com)进行删除。

About

YUV/PCM/H264/H265/AAC/FFmpeg/Opengl. 这有丰富的音视频开发的学习资源、开发工具、优秀书籍、教程、面试题和开源项目,旨在帮助开发者和爱好者更好地学习、实践和工作。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages


[8]ページ先頭

©2009-2025 Movatter.jp