音视频的流程:录制、播放、编码解码、上传下载等

仿网易云音乐 安卓版-- https://github.com/aa112901/remusic

Android本地视频播放器开发- http://blog.csdn.NET/jwzhangjie/article/category/953509
android本地视频播放器开发--NDK编译FFmpeg- http://blog.csdn.net/jwzhangjie/article/details/9038111

> 多媒体流的几个环节:采集,编码,推流,转码,分发,拉流,解码和渲染。
  推流端的协议有RTMP, WebRTC和基于UDP的私有协议:
  1) RTMP是基于TCP的标准协议,CDN网络普遍支持,也能做到相对比较低的延迟。即构科技的互动直播技术在推流端使用RTMP协议,拉流端兼容三种协议:RTMP,HLS和FLV。HLS协议的延迟比较大,在需要进行连麦互动的场景下,不应该使用HLS协议。
  2) WebRTC的好处在于用户体验好,不需要安装东西,分享一个链接就可以看。但是它有一个缺点,就是WebRTC是Google推的一项技术,除了Google Chrome和Opera支持WebRTC,其他浏览器大部分不支持WebRTC。换一句话说,40%的浏览器支持WebRTC,剩下60%浏览器不支持,所以适用范围就比较局限。然后,在中国国内,WebRTC在Google Chrome上的表现也大打折扣。最后,因为浏览器没有开放核心的能力,所以在浏览器上运行的协议比较难以做到比较低的延迟。
  3) 基于UDP的私有协议十分适合做实时音视频系统,它是面向无连接的,避免了TCP做网络质量控制所需要的开销,能够做到比较低的延迟。但是它也有一个缺点,那就是私有协议的兼容性不好。CDN支持标准的RTMP协议,但是不支持基于UDP的私有协议。为了吸纳UDP的优点,而避免UDP的缺点,即构科技的互动直播技术采用了基于UDP的私有协议作为补充,在有必要的时候用来弥补RTMP协议的不足。比如说,只有在网络环境比较恶劣或者在跨国互通的情况下,才使用基于UDP的私有协议;比如说,只在推流端到媒体服务器这一段才使用基于UDP的私有协议,而从媒体服务器转推流到CDN网络这一段采用RTMP协议,在这两段之间通过把UDP私有协议转换成RTMP协议来进行适配和衔接。这样一来,即构科技的直播方案既拥有超低延迟的优势,又保留了标准协议普遍被CDN网络支持的好处。


哔哩哔哩殷汶杰:合格的多媒体技术工程师有成为全栈架构师的潜质 - http://geek.csdn.Net/news/detail/124824
殷汶杰 视频方案博客 - http://blog.csdn.net/shaqoneal

> 音视频的录制、播放、编码、上传、下载、观看等,视频编解码,音频编解码,线音频播放 音视频同步等,软硬编码解码

IM软件就需要即时通讯技术、视频软件就需要视频编解码技术、游戏就需要引擎技术。

查看源码的工具:sourceinsight , 不了解JNI的一定要学习下,否则只能在Java层搞,太狭隘了。


视频播放Demo -http://blog.csdn.net/itachi85/article/details/7216962 ,http://blog.csdn.net/x605940745/article/details/18302111

音频数据的播放- http://download.csdn.net/detail/geniuseoe2012/4378393
  AudioRecord和AudioTrack类是Android获取和播放音频流的重要类,放置在android.media包中。与该包中 的MediaRecorder和MediaPlayer类不同,AudioRecord和AudioTrack类在获取和播放音频数据流时无需通过文件保 存和文件读取,可以动态地直接获取和播放音频流,在实时处理音频数据流时非常有用.
  当然,如果用户只想录音后写入文件或从文件中取得音频流进行播放,那么直接使用MediaRecorder和MediaPlayer类是首选方案,因为这 两个类使用非常方便,而且成功率很高。而AudioRecord和AudioTrack类的使用却比较复杂,我们发现很多人都不能成功地使用这两个类,甚 至认为Android的这两个类是不能工作的。
  MediaPlayer在底层是基于OpenCore(PacketVideo)的库实现的,为了构建一个MediaPlayer程序,上层还包含了进程间通讯等内容,这种进程间通讯的基础是Android基本库中的Binder机制。但是该类只能对完整的音频文件进行操作,而不能直接对纯PCM音频数据操作。假如我们通过解码得到PCM数据源,又当如何将它们播放?没错,就是用AudioTrack这个类(MediaPlayer内部也是调用该类进行真正的播放音频流操作).

Android深入浅出之Audio 第一部分 AudioTrack分析 - http://www.cnblogs.com/innost/archive/2011/01/09/1931457.html

https://github.com/mabeijianxi/small-video-record


Audio:
 AudioManager:这个主要是用来管理Audio系统的
 AudioTrack:这个主要是用来播放声音的

 AudioRecord:这个主要是用来录音的

百度MP3下载连接: http://219.138.125.22/myweb/mp3/CMP3/JH19.MP3

服务端共开放两个端口,一个udp上行端口用来接收amr音频流,另一个tcp下行端口用来发送amr音频流。服务端实现了组播的功能,即一个人在录音,可以同时让很多人同时听到。

录制音频demo-http://m.blog.csdn.net/article/details?id=51074218 , http://download.csdn.net/detail/u012808234/9482926
android语音录制与播放-http://blog.csdn.net/xu_fu/article/details/12648845
  android语音录制可以通过MediaRecorder和AudioRecorder。
  MediaRecorder本来是多媒体录制控件,可以同时录制视频和语音,当不指定视频源时就只录制语音;AudioRecorder只能录制语音。
  二者录制的区别在于,MediaRecorder固定了语音的编码格式,具体平台支持类型可以在http://developer.android.com/guide/appendix/media-formats.html这里查看,而且使用时指定输出文件,在录制的同时系统将语音数据写入文件。AudioRecorder输出的是pcm,即原始音频数据,使用者需要自己读取这些数据,这样的好处是可以根据需要边录制边对音频数据处理,读取的同时也可以保存到文件进行存储.


> 视频实时上传
Android仿微信录制视频和播放-http://download.csdn.net/download/u010665691/8805731
Android开源视频录制库:LandscapeVideoCamera
Android 实现视频录制播放-http://blog.csdn.net/yilip/article/details/45075541

现在有个场景是录制视频是一直在录的,有个拍照的功能,怎么取到实时预览的那一帧呢?Camera有previewlistener,设置监听器,在onFrame中可以接受到每一帧的数据。

Android 使用FFmpeg实现视频录制和视频播放-http://download.csdn.net/detail/somnus_comm/8691523
vitamio框架开发视频播放需要的全部类库 - http://download.csdn.net/detail/gaoshouxiaodi/8173955
android录制视频实现-http://blog.csdn.net/csdn_blog_lcl/article/details/52673905

Android端对网页内的图片/视频进行探测的一个小应用 源码的开始传 https://github.com/qqliu10u/ResourceDetector
Android仿爱奇艺视频的下载模块所写,简单实现下载原理-http://download.csdn.net/detail/u011495464/9506943
android 在线视频边下边播-http://download.csdn.net/download/lin415005334/8855367
android边缓存边播放mp4-http://blog.csdn.net/c_crazyren/article/details/7184948


Android使用VideoView播放网络视频-http://blog.csdn.net/kepoon/article/details/6772060
Android视频实时采集和播放实例-http://download.csdn.net/download/zy452362635/6034369  
android推送实时视频流到darwin流媒体服务器的思路-http://blog.csdn.net/xiaoliouc/article/details/8723246


Android 实时视频采集/编码/传输/解码/播放—方案调研-http://blog.csdn.net/sinat_35845281/article/details/52794344

------------------------------------------------

视频开发 Android

android 视频播放(一)利用android原生的videoview- http://blog.csdn.net/shenxiaolei507/article/details/41046345
android视频播放(二) 利用android原生的MediaPlayer+SurfaceView- http://blog.csdn.net/shenxiaolei507/article/details/41349295

http://stackoverflow.com/questions/25079145/how-to-resolve-error-libx264-not-found
https://github.com/halfninja/android-ffmpeg-x264
https://github.com/dennishucd/FFmpeg4Android
http://download.csdn.net/detail/qandroidj/4137324
android 视频开发(仿美拍,糗百)- http://download.csdn.net/detail/u013895206/8850751
vitamio 
webRTC 
ffmpeg 
vlc 
ijkplayer
android音视频点/直播模块开发- http://blog.csdn.net/u011570979/article/details/51205401

------------------------------------------------

Android使用SurfaceView播放视频时横竖屏的调整 - http://blog.chinaunix.net/uid-20771867-id-4171565.html , https://github.com/Chaoba/BlueVideoPlayer
支持横竖屏切换的视频播放器demo(iOS)- http://download.csdn.net/download/yqxh_wang/8950747
android_横竖屏切换demo- http://download.csdn.net/download/agan75/6033923
android 视频播放 点击横竖屏切换 自动旋转横竖屏切换 冲突- http://download.csdn.net/download/liubo080852/8446445
Android网页播放视频(含横竖屏切换)DEMO(实测有效)- http://download.csdn.net/detail/nuobabijie730/9780160

Android实现视频播放的话,有2中方式,第一种是MediaPlayer+surfaceView实现,第二种是直接用VideoView来实现,当然市面上也有一些主流的视频能播放的框架,像Vitamio,ExoPlayer等。
Android三种播放视频的方式- http://blog.csdn.net/itachi85/article/details/7216962
Android 利用发送Intent播放本地视频和网络视频- http://blog.csdn.net/dj0379/article/details/50915770

猜你喜欢

转载自blog.csdn.net/myself8202/article/details/76836739