您的位置:首页 > 其它

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

2016-12-11 14:37 393 查看
微信 Android 视频编码爬过的那些坑- http://blog.csdn.net/byeweiyang/article/details/77453844
  MediaCodec 是 API 16 之后 Google 推出的用于音视频编解码的一套偏底层的 API,可以直接利用硬件加速进行视频的编解码。调用的时候需要先初始化 MediaCodec 作为视频的编码器,然后只需要不停传入原始的 YUV 数据进入编码器就可以直接输出编码好的 H.264 流,整个 API 设计模型同时包含了输入端和输出端的两条队列。

  一般来说,起码在 4.4+ 的系统上,这两种格式在大部分机器上都有支持:

MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420Planar

MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420SemiPlanar

 除了使用 MediaCodec 进行编码之外,另外一种比较流行的方案就是使用 FFmpeg + x264/OpenH264 进行软编码,FFmpeg 适用于一些视频帧的预处理。这里主要是使用 x264/OpenH264 作为视频的编码器。

  x264 基本上被认为是当今市面上最快的商用视频编码器,而且基本上所有 H264 的特性都支持,通过合理配置各种参数还是能够得到较好的压缩率和编码速度的

  OpenH264 则是由思科开源的另外一个 H264 编码器,项目在 2013 年开源,对比起 x264 来说略显年轻,不过由于思科支付买了 H.264 的年度专利费,所以对于外部用户来说,相当于可以直接免费使用了。另外,firefox 直接内置了 OpenH264,作为其在 WebRTC 中的视频编解码器使用。

  https://chromium.googlesource.com/libyuv/libyuv/ Google 开源的一个 YUV 处理库,上面只针对 1080p->540p 视频帧缩放的算法,而对于通用的压缩处理,可以直接使用这里的实现,对比起 FFmpeg 的速度快上不少。

仿网易云音乐 安卓版-- 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.htmlhttps://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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐