多媒体开发
永远的红姐
不积跬步,不至千里!
展开
-
Android 多媒体之AudioManager
做对讲播放的时候需要打开扩音器,使用AudioManager,下面是对它的介绍.AudioManagerAudioManager是用来控制音量和铃声的Framework层的一个Manager类,管理系统的音量.下面看下它的api.// 调整手机指定类型的声音public void adjustStreamVolume (int streamType, int direction, int flag原创 2016-11-02 23:48:26 · 615 阅读 · 0 评论 -
WebRtc Build for Android
webrtc编译自己动手编译了webrtc,这里做个简单的笔记。记录自己编译webrtc的过程以及遇到的坑!编译环境Ubantu14.04 由于Webrtc源码非常的大,vpn下载源码不太稳定,特别慢,而且容易断开!所以买一个不被墙的ubantu云主机,运行稳定,速度飞快!NDK环境wget -c http://dl.google.com/android/ndk/android-ndk-r原创 2017-03-18 22:36:19 · 856 阅读 · 0 评论 -
Android视频数据采集,H.264编码
Andriod视频采集在Android端通过摄像头可以采集到视频数据,通过parameters.setPreviewFormat(ImageFormat.NV21)通过adb logcat -s jw可以查看支持的格式,一般是NV21,YV12可以指定视频的格式! 采集完成后的数据buffer就可以传到JNI层,进行格式转换以及编码!NV,YUV格式转换Android端采集完成的数据是NV21原创 2017-02-25 15:26:57 · 2345 阅读 · 0 评论 -
I.P.B与DTS.PTS
I.P.B在音视频解码时,从Avpacket读取数据一帧一帧的数据,这些帧数据都是经过一定的算法进行压缩了的,根据压缩算法的分为I帧,P帧以及B帧。I帧I帧称为关键帧,属于帧内压缩帧,经过解压可以得到一帧完整的数据!压缩到原来的80%!P帧P帧称为前向预测帧,表示与上一帧的差别,需要缓存前面一帧才能得到完整的数据!可压缩到50%左右!B帧B帧称为双向预测帧,表示与上一阵以及下一帧的差别,需要缓冲上,原创 2017-02-15 20:58:57 · 592 阅读 · 0 评论 -
条件变量与互斥锁
互斥锁互斥锁也叫互斥变量,是一把锁,在访问共享资源时,给共享变量加一把锁,其他线程由于没有持有互斥变量的锁将会阻塞直到该线程释放该互斥锁! c通过pthread.h下几个方法来实现互斥锁: pthread_mutex_init:初始化互斥变量 pthread_mutex_lock:给互斥变量加锁 pthread_mutex_unlock:释放互斥变量锁 pth原创 2017-02-13 22:26:49 · 379 阅读 · 0 评论 -
Linux nginx+rtmp服务器配置
nginx服务器nginx服务器是开源的高性能的http服务器,反向代理服务器,是俄罗斯的大佬开发的,在国内许多公司应用比较多,具体看百科!反向代理服务器:代理服务器接收internet请求,然后改代理服务器将请求转向内部的服务器,内部服务器将处理的结果返回代理服务器,这个代理服务器就为反向代理服务器!rtmp实时消息传输协议(real time messaging protocol),主要应用在原创 2017-02-12 21:53:25 · 4316 阅读 · 0 评论 -
RTMP协议推流
RTMP协议Real Time Messaging Protocol(实时消息传送协议协议)是Adobe 公司为Flash播放器和服务器之间音频、视频和数据传输开发的私有协议。RTMP协议是TCP/IP五层体系结构中应用层的协议。RTMP协议中基本的数据单元称为消息,当RTMP协议通过网络传送数据的时候,消息将会被拆分成更小的数据单元,称为消息快(CHUNK)。RTMP消息结构消息是RTMP协议中最原创 2017-03-01 12:48:31 · 1278 阅读 · 0 评论 -
Eclipse编译使用SO步骤
好久没有在Eclipse上通过NDK根据编译使用so,今天写了一个简单的demo就各种报错,下面做个笔记记录在Eclipse使用so的步骤:1.创建工程,添加支持创建工程,添加native支持:add native support,指定对应的so名称!2.编写native关键字代码编写调用native代码,同时加上: static { System.loadLibrary(原创 2017-02-18 20:15:53 · 3132 阅读 · 0 评论 -
FFMPEG命令参数
命令解析进入bin目录,输入ffmpeg -help可以查看相关命令参数,如下:Getting help: -h -- print basic options -h long -- print more options -h full -- print all options (including all format and codec specific opt原创 2017-02-08 14:29:04 · 786 阅读 · 0 评论 -
FFmpeg解码视频绘制到屏幕
步骤1.Android端写surfaceView,设置视频格式ARGB,callback,holder,不多说 2.解码视频数据,得到一帧一帧的YUV数据(了解视频解码流程) 3.通过surfaceView获取nativewindow 4.lock Window 5.第三方的libyuv to RGBA 6.set buffer 7.unlock Window实现代码#include <原创 2016-12-30 16:57:57 · 1370 阅读 · 1 评论 -
FFMPEG 视频解码流程
FFMPEG的SO库在前面在Linux编译好FFMPEGso库之后,产生了一系列的so文件,如下: 解码视频接下来就要使用这些库来解码视频数据.FFMPEG的视频解压的流程如下:函数解释如下:数据结构如下:原创 2016-12-28 22:00:56 · 1307 阅读 · 0 评论 -
音视频初探
音视频首先看到的是一张图,这是播放一个视频文件的基本流程,下面我将分别对其中的步骤做出自己的理解! 自己的理解1.我们播放一个视频数据的时候,首先拿到的是封装格式的数据,这个数据是压缩数据,不能立即被播放,需要被解封装.2.视频文件既有视频画面也有音频数据,那么经过解封装的步骤,可以将音视频数据分离开来,分别拿到音频压缩数据与视频压缩数据.3.音频视频压缩数据是经过一些算法压缩产生的,音频的压缩算原创 2016-12-28 21:33:44 · 431 阅读 · 0 评论 -
FFMPEG 解码音频
目的通过FFMPEG解码音频的码流,得到PCM的音频采样数据并用AudioTraker播放步骤1.注册所有组件av_register_all();2.拿到封装格式上下文AVFormatContext *avFormatContext = avformat_alloc_context();3 打开文件 if (avformat_open_input(&avFormatContext, src原创 2017-01-03 21:51:13 · 1934 阅读 · 1 评论 -
AudioRecord
AudioRecord简介1.AudioRecord与MediaRecorder一样用来录制音频的 2.AudioRecord可以对录制的数据进行实时的处理,比如降噪,除杂,或者将音频进行实时传输,比如IP电话,对讲功能等操作。 3.AudioRecord比MediaRecorder更接近底层,录制的音频是PCM格式的,只能用AudioTraker进行播放,或者将PCM数据转换成amr,wav等原创 2016-11-08 01:14:14 · 6131 阅读 · 1 评论 -
Camera
CameraThe Android framework includes support for various cameras and camera features available on devices, allowing you to capture pictures and videos in your applications。 Camera用来拍照和录制视频。Camera的使用1.原创 2016-11-06 22:59:12 · 272 阅读 · 0 评论 -
MediaRecorder
MediaRecorderUsed to record audio and video.用来音视频的录制与播放,状态图如下:A common case of using MediaRecorder to record audio works as follows,使用流程如下: // initial MediaRecorder recorder = new MediaRecorder(); //原创 2016-11-05 20:49:45 · 462 阅读 · 0 评论 -
SurfaceView的使用
SurfaceViewSurfaceView,顾名思义是带有surface(表层)的view,是View的子类,用来控制自定义绘图,绘制的View在surface之上。 我们知道View的绘制只能在UI线程里面进行,SurfaceView是一个特例,它可以在非UI线程里面绘制图形(使用canvas),绘制完成后post一个消息给UI线程,让绘制的图形显示在UI上,这样可以让UI线程来处理与用户的操原创 2016-11-05 20:14:57 · 283 阅读 · 0 评论 -
YV12,YU12,NV12,NV21,YVU420,I420,YUV420P,YUV420SP
最近在做手机相机视频采集,需要采集视频数据然后转换成相应的格式进行传输,对一些存储格式做了一些了解,总结如下:WHY YUV RGB类似,YUV也是一种颜色编码方法,主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的,这样的设计很好地解决了彩色电视机与黑白电视的兼容问题。并且,YUV不像RGB那样要求三个...原创 2018-05-21 22:41:53 · 5139 阅读 · 0 评论