android音视频点/直播模块开发

前言

随着音视频领域的火热,在很多领域(教育,游戏,娱乐,体育,跑步,餐饮,音乐等)尝试做音视频直播/点播功能,那么作为开发一个小白,如何快速学习音视频基础知识,了解音视频编解码的传输协议,编解码方式,以及如何技术选型,如何解决遇到的坑,本文抛砖引玉,欢迎大咖交流。

一. 音视频的基础知识

1.1 基本概念

视频是什么

静止的画面叫图像(picture)。连续的图像变化每秒超过24帧(frame)画面以上时,根椐视觉暂留原理, 人眼无法辨别每付单独的静态画面,看上去是平滑连续的视觉效果。这样的连续画面叫视频。 当连续图像变化每秒低于24帧画面时,人眼有不连续的感觉叫动画(cartoon)

流媒体

指采用流式传输的方式在Internet / Intranet播放的媒体格式.流媒体的数据流随时传送随 时播放,只是在开始时有些延迟 边下载边播入的流式传输方式不仅使启动延时大幅度地缩短,而且对系统缓存容量的需求也大大降低,极大地减少用户用在等待的时间

分辨率

分辨率是一个表示平面图像精细程度的概念,通常它是以横向和纵向点的数量来衡量的,表示成水平点数垂直点数的形式,在计算机显示领域我们也表示成“每英寸像素”(ppi).在一个固定的平面内,分辨率越高,意味着可使用的点数越多,图像越细致

码流

数据传输时单位时间传送的数据位数,可以理解其为取样率,单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件,但是文件体积与取样率是成正比的如何用最低的码率达到最少的失真,一般我们用的单位是kbps即千位每秒

帧率

帧/秒(frames per second)的缩写,也称为帧速率,测量用于保存、显示动态视频的信息数量。每一帧都是静止的图象,快速连续地显示帧便形成了运动的假象。 每秒钟帧数 (fps) 愈多,所显示的动作就会愈流畅,可理解为1秒钟时间里刷新的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次,也就是指每秒钟能够播放(或者录制)多少格画面。

1.2 多媒体的格式分类

封装格式(专业上讲叫容器,通俗的叫文件格式),视频编解码,音频编解码

1.1常见的封装格式 MPEG : 编码采用的容器,具有流的特性。里面又分为 PS,TS 等,PS 主要用于 DVD 存储,TS 主要用于 HDTV.

MPEG Audio Layer 3 :大名鼎鼎的 MP3,已经成为网络音频的主流格式,能在 128kbps 的码率接近 CD 音质

MPEG-4(Mp4) : 编码采用的容器,基于 QuickTime MOV 开发,具有许多先进特性;实际上是对Apple公司开发的MOV格式(也称Quicktime格式)的一种改进.

MKV: 它能把 Windows Media Video,RealVideo,MPEG-4 等视频音频融为一个文件,而且支持多音轨,支持章节字幕等;开源的容器格式

3GP : 3GPP视频采用的格式, 主要用于流媒体传送;3GP其实是MP4格式的一种简化版本,是手机视频格式的绝对主流.

MOV : QuickTime 的容器,恐怕也是现今最强大的容器,甚至支持虚拟现实技术,Java等,它的变种 MP4,3GP都没有这么厉害;广泛应用于Mac OS操作系统,在Windows操作系统上也可兼容,但是远比不上AVI格式流行

AVI : 最常见的音频视频容器,音频视频交错(Audio Video Interleaved)允许视频和音频交错在一起同步播放.

WAV : 一种音频容器,大家常说的 WAV 就是没有压缩的 PCM 编码,其实 WAV 里面还可以包括 MP3 等其他 ACM 压缩编码 等等

1.3 流媒体协议(RTP RTCP RTSP RTMP HLS)

【学习地址】:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发 【文章福利

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 应用开发的知识主要包括以下几个方面: 1. Java 编程基础:Android 应用开发主要使用 Java 语言进行编程,因此需要掌握 Java 基本语法、面向对象编程等知识。 2. Android 框架:Android 提供了一套完整的应用开发框架,包括 Activity、Service、BroadcastReceiver、ContentProvider 等组件,以及布局、资源管理、界面设计等功能模块,需要掌握 Android 框架的使用方法。 3. UI 设计:Android 应用的用户界面设计非常重要,需要掌握 Android 的布局方式、控件使用、样式和主题等知识,以及常见的 UI 设计模式和规范。 4. 数据存储:Android 应用需要存储数据,包括文件存储、数据库存储等方式,需要掌握 Android 的数据存储 API。 5. 网络编程:Android 应用需要与网络进行通信,需要掌握 Android 的网络编程 API,包括 HTTP、TCP/IP、WebSocket 等协议。 6. 多媒体处理:Android 应用需要处理多媒体数据,包括频、视频、图像等,需要掌握 Android 的多媒体处理 API。 7. 性能优化:Android 应用需要考虑性能问题,包括应用启动时间、响应时间、内存占用等方面,需要掌握 Android 应用优化的方法和技巧。 8. 测试和调试:Android 应用需要进行测试和调试,包括单元测试、集成测试、UI 测试等方面,需要掌握 Android 的测试和调试工具和方法。 以上是 Android 应用开发的主要知识,需要根据具体的应用需求和开发场景进行深入学习和实践。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值