稀缺的音视频,50道音视频经典面试题,国内国外教学视频,N个经典开源项目

img

—— 近年来热门、吃香、值得学习的技术方向

📢【推荐收藏】音视频流媒体开发知识归纳导图

🏹【熟读兵法,搞定面试】50道音视频经典面试题

👁️【不想看文字,视频更直接】国内国外大佬教学视频

🗜【项目实战应用,日后100%要用到】N个经典开源项目

img

本资源节选自:https://github.com/0voice/audio_video_streaming 更多内容请移步至github仓。

🌅 面试题

1. 为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?

2. 怎么做到直播秒开优化?

3. 直方图在图像处理里面最重要的作用是什么?

4. 数字图像滤波有哪些方法?

5. 图像可以提取的特征有哪些?

6. 衡量图像重建好坏的标准有哪些?怎样计算?

7. AAC和PCM的区别?

8. H264存储的两个形态?

9. FFMPEG:图片如何合成视频?

10. 常见的音视频格式有哪些?

11. 请指出“1080p”的意义?

12. 请解释颜色的本质及其数字记录原理,并说出几个你所知道的色域。

13. 请解释“矢量图”和“位图”的区别?

14. 请从“光圈”“快门速度”“感光度”“白平衡”“景深”中任选2个进行叙述?

15. 视频分量YUV的意义及数字化格式?

16. 在MPEG标准中图像类型有哪些?

17. 列举一些音频编解码常用的实现方案?

18. 请叙述MPEG视频基本码流结构?

19. sps和pps的区别?

20. 请叙述AMR基本码流结构?

21. 预测编码的基本原理是什么?

22. 说一说ffmpeg的数据结构?

23. 说一说AVFormatContext 和 AVInputFormat之间的关系?

24. 说一说AVFormatContext, AVStream和AVCodecContext之间的关系?

25. 说一说视频拼接处理步骤?(细节处理,比如分辨率大小不一,时间处理等等)

26. NV21如何转换成I420?

27. DTS与PTS共同点?

28. 影响视频清晰度的指标有哪些?

29. 编解码处理时遇到什么困难?

30. 如何秒开视频?什么是秒开视频?

31. 如何降低延迟?如何保证流畅性?如何解决卡顿?解决网络抖动?

32. 需要把网络上一段视频存储下来(比如作为mp4 ), 请实现并说出方法(第一个视频需要翻墙才能进)?

33. 需要把网络上一段语音存储下来(比如作为mp3 ), 请实现并说出方法?

34. 为什么要有YUV这种数据出来?(YUV相比RGB来说的优点)

35. H264/H265有什么区别?

36. 视频或者音频传输,你会选择TCP协议还是UDP协议?为什么?

37. 平时说的软解和硬解,具体是什么?

38. 何为直播?何为点播?

39. 简述推流、拉流的工作流程?

🌐 开源框架

实时音视频开源项目

实时音视频应用共包括几个环节:采集、编码、前后处理、传输、解码、缓冲、渲染等很多环节。每一个细分环节,还有更细分的技术模块。 比如,前后处理环节有美颜、滤镜、回声消除、噪声抑制等,采集有麦克风阵列等,编解码有VP8、VP9、H.264、H.265等。

采集->前处理编码->传输->解码后处理->渲染

实时音视频开源项目思维导图

img

编解码开源项目

  • WebRTC

地址:webrtc.org

WebRTC实现了基于网页的视频会议,标准是WHATWG 协议,目的是通过浏览器提供简单的javascript就可以达到实时通讯(Real-Time Communications (RTC))能力。WebRTC提供了视频会议的核心技术,包括音视频的采集、编解码、网络传输、显示等功能,并且还支持跨平台:windows,linux,mac,android。

  • H.264

地址:www.linuxfromscratch.org

H.264是ITU(International Telecommunication Union,国际通信联盟)和MPEG(Motion Picture Experts Group,运动图像专家组)联合制定的视频编码标准。而x264是一个开源的H.264/MPEG-4 AVC视频编码函数库,是最好的有损视频编码器之一。

  • FFmpeg

地址:ffmpeg.org

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。FFmpeg提供了编码、解码、转换、封装等功能,以及剪裁、缩放、色域等后期处理。

  • ijkplayer

地址:bilibili/ijkplayer

ijkplayer 是一个基于 ffplay 的轻量级 Android/iOS 视频播放器。实现了跨平台功能,API易于集成;编译配置可裁剪,方便控制安装包大小;支持硬件加速解码,更加省电;提供Android平台下应用弹幕集成的解决方案。

  • JSMpeg

地址:jsmpeg.com

JSMpeg is a Video Player written in JavaScript. It consists of an MPEG-TS Demuxer, WebAssembly MPEG1 Video & MP2 Audio Decoders, WebGL & Canvas2D Renderers and WebAudio Sound Output. JSMpeg can load static files via Ajax and allows low latency streaming (~50ms) via WebSocktes.

  • Opus

地址:opus.nlpl.eu

Opus是一个有损声音编码的格式,由Xiph.Org基金会开发,之后由IETF(互联网工程任务组)进行标准化,目标是希望用单一格式包含声音和语音,取代Speex和Vorbis,且适用于网络上低延迟的即时声音传输,标准格式定义于RFC 6716文件。Opus格式是一个开放格式,使用上没有任何专利或限制。

  • live555

地址:www.live555.com

服务端开源项目

  • jitsi

地址:jitsi/jitsi

Jitsi是一个音频/视频和聊天通信器,它支持SIP、XMPP/Jabber、IRC和许多其他有用的特性。

  • JsSIP

地址:jssip.net

JsSIP是一个简单易用的JavaScript库,它利用SIP和WebRTC的最新发展,在任何网站上提供全功能的SIP端点。通过JsSIP ,只要几行代码,任何网站都可以通过音频,视频等获得实时通信功能。

  • SRS

地址:www.ossrs.net

SRS定位是运营级的互联网直播服务器集群,追求更好的概念完整性和最简单实现的代码。SRS提供了丰富的接入方案将RTMP流接入SRS,包括推送RTMP到SRS、推送RTSP/UDP/FLV到SRS、拉取流到SRS。SRS还支持将接入的RTMP流进行各种变换,譬如将RTMP流转码、流截图、转发给其他服务器、转封装成HTTP-FLV流、转封装成HLS、转封装成HDS、录制成FLV。SRS包含支大规模集群如CDN业务的关键特性,譬如RTMP多级集群、源站集群、VHOST虚拟服务器、无中断服务Reload、HTTP-FLV集群、Kafka对接。此外,SRS还提供丰富的应用接口,包括HTTP回调、安全策略Security、HTTP API接口、RTMP测速。

  • JRTPLIB

地址:j0r1/JRTPLIB

jrtplib是一个基于C++、面向对象的RTP封装库, jrtplib支持定义于RFC3550中的RTP协议,它使得发送和接收RTP报文变得异常简单,用户不用担心SSRC冲突,也不用考虑如何传输RTCP数据,因为RTCP功能完全在内部实现。

  • OPAL

地址:opalvoip

openphone抽象库(OPAL)是一个c++多平台、多协议的库,用于IP和其他网络上的传真、视频和语音。还包括可移植工具库(PTLib),这是一个c++多平台抽象库。

  • Kurento

地址:www.kurento.org

Kurento 是一个WebRTC流媒体服务器以及一些客户端API,开发WWW及智能手机平台的高级视频应用就变得更加容易。可以利用Kurento开发的应用类型包括,视频会议,音视频广播,音视频录制、转码等。

  • Janus

地址:janus.conf.meetecho.com

🧿 视频

国外大神

img

国内大佬

img

本资源节选自:https://github.com/0voice/audio_video_streaming 更多内容请移步至github仓。

🥌 实践项目

音视频通话项目

实现了多人语音/多人视频项目, 房间号Id一致,用户Id不一致,即可实现多人语音/多人视频。

Android/iOS 视频播放器

ijkplayer 是一个基于 ffplay 的轻量级 Android/iOS 视频播放器。实现了跨平台功能,API易于集成;编译配置可裁剪,方便控制安装包大小;支持硬件加速解码,更加省电;提供Android平台下应用弹幕集成的解决方案。

仿网易云音乐安卓版客户端

仿网易云音乐 安卓版,netease android,音乐播放器 在线 下载。

Timber

Timber是一个设计漂亮,功能完善,Material Design风格的音乐播放器。

WebRTC入门项目

WebRTC初学者的启动演示,包括一个基于Socket.IO的简单信号服务器,以及一些客户端演示Web/Android/IOS/Windows平台。 WebRTC入门项目部署步骤

getStats

使用WebRTC getstats APL返回对等连接状态的微小JavaScript库,如带宽使用、数据包丢失、本地)远程IP地址和端口、连接类型等。

MPlayer

跨平台的视频播放器,可在Linux和其他类Unix系统、Windows及Mac OS X系统使用。

KxMovie

IOS平台基于FFMPEG播放器

Vitamio

Android/IOS平台上的多媒体框架,带有硬件加速解码和渲染.

YUV2RGB

YUV转RGB.

TSDemux

将TS流解码为PES或ES.(下载这个源码需要FQ)

VLC

跨平台的视频播放器。现在也有安卓版本。也可以作为流媒体服务器。

FFDshow

免费的编解码软件,基于windows平台。原因就是directshow就是微软开发的,只能用于windows平台。

PlayerSDK(Android平台)

这是一个专注音视频播放器的库,目前还在不断优化中。

VideoDownloader(Android平台)

视频下载SDK功能。

MediaSDK(Android平台)

这是一个专注音视频边下边播的库。

本资源节选自:https://github.com/0voice/audio_video_streaming 更多内容请移步至github仓。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值