音视频处理(直播等流媒体/多媒体)

时间:2022-12-04 20:31:29

方案: x264、mp3lame、faac、ffmpeg,opengles,OpenCV,opencl,实现图像滤镜,图像美化; android视频处理如秒拍,美拍,gif快手

> Ubuntu 14 - http://releases.ubuntu.com/14.04/  windows下安装Ubuntu,即有双系统
最简单的视频编码器:编译(libx264,libx265,libvpx)- http://blog.csdn.net/leixiaohua1020/article/details/42069383
x264,x265,vpx这三个开源的视频编码器可以说是当今“最火”的视频编码器。x264现在占据着H.264视频编码器的半壁*;x265则是目前实现H.265标准最好的开源视频编码器,并且在未来可能接替x264;而vpx则是Google推出的开源视频编码器,它提出的VP9编码标准的性能也不错。

video-transmission(X264,ffmpeg)- https://github.com/liushu1231/video-transmission
X264编码h264- http://blog.csdn.net/liushu1231/article/details/9203239

使用NDK编译ffmpeg,x264库- http://developer.t-firefly.com/thread-201-1-1.html
音视频聊天开发: 7 Android下ffmpeg+x264编译- http://blog.chinaunix.net/uid-15063109-id-4579915.html
Android(android-ndk-r8b)下编译X264- http://blog.csdn.net/echoaiya/article/details/22669497
android ndk 编译ffmpeg+x264- http://blog.csdn.net/liuhongxiangm/article/details/8929735
使用NDK编译x264库 - http://blog.chinaunix.net/uid-26000296-id-5213411.html
下载Ubuntu-  http://cn.ubuntu.com/download/

Ubuntu 14 , ubuntu 13, windows10 ubuntu16.04双系统

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

  视频转码技术就不得不提到两个开源工程:ffmpeg和x264。ffmpeg强大完善的流媒体处理和x264高效高性能的视频压缩能力以及H.264格式在市场中的广泛应用使得它们的组合成为大多数流媒体工程师在转码时的不二选择。添加水印也不过是ffmpeg在命令行的一组命令而已,几个视频滤镜加x264的几个编码参数就可以很方便的在直播流中加入水印并转推出去。
  与之前的编码标准如MPEG-2、H.263相比,H.264在很多编码技术上都是高度依赖上下文的,如帧内预测,mv预测,甚至残差的熵编码,前边宏块的编码模式或者残差发生改变.


图像和流媒体- http://blog.csdn.net/dj0379/article/category/563022
直播 音频、视频、流媒体开发- http://blog.csdn.net/xiejiashu

Android Multimedia框架总结- http://blog.csdn.net/hejjunlin?viewmode=contents

> android NDK(含语音编解码)- http://blog.csdn.net/xyz_lmn/article/category/922246

流媒体/视频- http://blog.csdn.net/xiejiashu?viewmode=contents

语音处理三方开源:
  Speex在Android上的实现。Speex是一套主要针对语音的开源免费,无专利保护的音频压缩格式。Speex工程着力于通过提供一个可以替代高性能语音编解码来降低语音应用输入门槛 。另外,相对于其它编解码,Speex也很适合网络应用,在网络应用上有着自己独特的优势。同时,Speex还是GNU工程的一部分,在改版的BSD协议中得到了很好的支持。Speex是基于CELP并且专门为码率在2-44kbps的语音压缩而设计的。Speex源码是基于c语音实现的(也有Java实现,效率相对较低)。
  iLBC算法也是开源算法,在GitHub可以下载到,源地址如下https://github.com/bjdodson/iLBC-Android ,同时code.google(http://code.google.com/p/android-ilbc/)上也有一份,code.google.上的比较清晰.iLBC 算法为数据包网络实现了尖端的固定比特率编码,在质量与比特率之间取得了非常出色的平衡。
  Silk编解码是Skype向第三方开发人员和硬件制造商提供免版税认证(RF)的Silk宽带音频编码器。Skype已将其开源,可以访问http://developer.skype.com/silk获取最新动向。SILK Codec是一个语音和音频编解码算法, 对于音频带宽、网络带宽和算法复杂度都具有很好的弹性。支持4种采样率:8KHz、12KHz、16KHz、24KHz;三种复杂度:低、中、高。编码码率在 6~40kbps(不同采样率具有不同的码率范围)以及还支持VAD、DTX、FEC等模块,感觉还是比较全面。最重要的一点是提供了定点C代码,非常有利于向ARM、DSP移植和优化。


Android多媒体- http://blog.csdn.net/itachi85/article/category/928064

Android多媒体- http://blog.csdn.net/jdsjlzx/article/category/1346312
Android 视频- http://blog.csdn.net/jdsjlzx/article/details/8997752  
  游戏、视频、图像等应用可能直接使用OpenGL ES.
  对程序进行架构设计的原因,归根结底是为了提高生产力。通过设计是程序模块化,做到模块内部的高聚合和模块之间的低耦合(如依赖注入就是低耦合的集中体现)。

Android 视频-http://blog.csdn.net/jdsjlzx/article/category/1261130
音视频开发中常见基础问题总结- http://blog.csdn.net/hejjunlin/article/details/54962205

雷霄骅(语音、视频、FFmpeg)博客- http://blog.csdn.net/leixiaohua1020/article/

> FFmpeg http://trac.ffmpeg.org/wiki/CompilationGuide/Android
最简单的基于FFmpeg的移动端例子- http://blog.csdn.net/leixiaohua1020/article/category/5680665


Android中直播视频技术探究之---基础知识大纲介绍-- http://blog.csdn.net/jiangwei0910410003/article/details/51871358?t=1468295404397
Android中直播视频技术探究之---摄像头Camera视频源数据采集解析-- http://blog.csdn.net/jiangwei0910410003/article/details/52057543

ARGB颜色空间,A代表透明度,RGB是三原色.YUV中,Y表示亮度,U和V表示色度,总之它是将RGB信号进行了一种处理,根据人对亮度更敏感些,增加亮度的信号,减少颜色的信号,以这样“欺骗”人的眼睛的手段来节省空间。录制视频和上传视频等。


TextureView在4.0(API level 14)中引入。GLSurfaceView从Android 1.5(API level 3)开始加入.
1、Android5.0以下,获取root权限使用adb shell screenrecord命令功能进行录制
2、Android5.0以上,使用系统Api功能:MediaProjection和VirtualDisplay

  Android标准的VideoView不支持RTMP的播放。MediaRecorder得到的MP4格式的视频流其实并不适合直播的,因为,MP4文件会在文件结束的时候才写入SPS(序列参数值)和PPS(图片参数集),而SPS和PPS是解码的关键信息,我们直播的时候必须先发送SPS和PPS,后续的视频流才能被服务器正确的接受和处理。
  直播CameraStreaming-- https://github.com/dourgulf/CameraStreaming
  Vitamio是一个android和ios上基于FFmpeg的开源项目。-- https://github.com/yixia/VitamioBundle
  直播RtmpRecoder--https://github.com/beautifulSoup/RtmpRecoder/tree/master

在Android上使用OpenCL调用GPU加速Android-OpenCL-Sobel-Filter https://github.com/WhiteIsClosing/Android-OpenCL-Sobel-Filter/tree/master/ImageSobelFilter

>EasyDarwin公司成熟的方案

音视频处理: jni -> ffmpeg,An ffmpeg and SDL Tutorial- http://dranger.com/ffmpeg/tutorial01.html

EasyVideoRecorder作为一款短视频拍摄的工具,开源流媒体-- https://github.com/EasyDarwin/EasyPlayer

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

Android/iOS video player based on FFmpeg n3.1, with MediaCodec, VideoToolbox support.-- https://github.com/Bilibili/ijkplayer

Yasea is an Android streaming client. It encodes YUV and PCM data from camera and microphone to H.264/AAC, encapsulates in FLV and transmits over RTMP.-- https://github.com/begeekmyfriend/yasea

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

研究一下B站开源的弹幕引擎DanmakuFlameMaster:https://github.com/Bilibili/DanmakuFlameMaster  
移动视频播放框架ijkplayer: https://github.com/Bilibili/ijkplayer  
html5视频转码内核flv.js:https://github.com/Bilibili/flv.js
不断地探究技术内在精髓,才能在某项技术上进行足够深度的钻研。

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

移动平台(iOS/Android)播放器以及主站HTML5播放器等方面的开发、维护和技术预研等工作。
  主要工作和研究兴趣包括视频编解码技术、移动视频技术开发、流媒体技术、应用于多媒体领域的云计算/大数据/模式识别/数据挖掘、视频异构开发等领域。

  其实无论是多么复杂精密的多媒体系统,其整体架构都离不开这几个结构,以视频信号为例,视频采集→视频预处理→视频编码与封装→数据的存储/传输→视频解封装/解码→视频后处理→视频输出。根据系统的规模和需求不同,每一个模块的复杂度和规模可能有非常巨大的不同。

  视频的编码和封装可谓是整个系统的心脏,很多时候甚至直接决定了整个系统的性能和使用体验。编码/封装器用于将数据量庞大的图像数据压缩为某种格式的视频码流,压缩的性能直接影响后期进行存储和传输的代价,编码的运算速度又影响了整个系统的输入——输出延迟。

  视频的存储和传输在多年的发展中产生了巨大的变化。从最初的有线电缆、录像带到后来的无线电视广播、DVD,到再后来的云存储、P2P、CDN技术,发展的核心在于更低地花销代价和更强的实时性。另外,在很多时候,在这一部分还可能进行多种视频处理,如视频转码、数据分析等。
  解码和解封装通常与编码端是同步发展,与编码端略有不同的地方在于,解码端在移动端、嵌入式系统上的应用更为广泛。因此,对低复杂度优化、低功耗等方面要求常常会更高。

  视频的后处理的最显著的用途之一可谓是视频水印。例如电视台的台标、字幕等附加信息都是视频重要的组成部分。

  视频渲染的设备最初以电视、显示器为主。近年来,随着新技术和设备的发展,越来越多的视频观看的设备涌入了我们的生活,例如使用手机、平板电脑等移动设备的机会大有取电视电脑而代之的趋势。在未来可能还会有更多新型设备占领我们的视野,如VR/AR设备、全息显示,甚至一些我们目前还无法想象的东西。

> 我想做视频直播app,有技术大牛分享技术吗?- https://www.zhihu.com/question/37887655

视屏播放器- https://github.com/CarGuo/GSYVideoPlayer
  ijkplayer(https://github.com/Bilibili/ijkplayer),鼎鼎大名的BILIBILI开源的播放器。基于FFMPEG,支持Android与IOS,还封装了谷歌亲儿子MediaPlayer与干儿子EXOPlayer(https://github.com/google/ExoPlayer)(为什么要用EXO),支持直播流,Star-9000多与fork-3000的视频播放器你支持安利。