![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
音视频
小 黄 鸡
QQ:2500503624
展开
-
Android播放器(一) 通过FFmpeg解码为RGBA格式播放
代码可以参考: Github地址本文主要介绍如何通过FFmpeg将MP4格式的视频数据解码为一帧一帧的RGBA像素格式数据来播放。因为主要是视频的解码及播放,对于音频只是解码出了音频对应的pcm数据,并没有播放pcm。因此也不会涉及到音视频的同步。主要流程是解封装—>解码—>像素格式转换—>显示Java层的主要配置首先建一个支持cpp的项目1 app module ...原创 2019-12-25 08:06:31 · 1354 阅读 · 0 评论 -
Android播放器(二) 使用OpenSL ES播放音频原始数据PCM
源码地址 Video-Play-PCM本文主要介绍native层通过OpenSL来播放音频原始PCM数据。关于java层相关和项目配置的可以参考项目源码。直接在java调用native层的方法来播放pcmpublic native void playPcm();extern "C"JNIEXPORT void JNICALLJava_com_pcm_play_MainActivity...原创 2019-12-26 08:25:44 · 375 阅读 · 0 评论 -
Android播放器(三) 使用OpenGL ES播放yuv数据
本文主要介绍通过OpenGL ES来播放yuv数据项目地址OpenGl-Play-YUVjava层的代码主要是创建用于显示的SurfaceView,然后在子线程中将YUV的文件路径和SurfaceView所持有的Surface传递给native层。public class PlayView extends GLSurfaceView implements Runnable, SurfaceH...原创 2019-12-27 08:17:47 · 1175 阅读 · 1 评论 -
Android播放器(四) 使用FFmpeg实现播放器框架
Github地址 本文主要介绍一个用ffmpeg来封装的音视频的框架。这个框架的功能是完成从解码到最后播放的过程。代码结构清晰,1 框架整体结构2 解封装过程3 视频解码过程4 音频解码过程5 音视频同步6 视频使用OpenGL ES渲染7 音频使用OpenSL ES渲染 1 框架整体结构这个类图主要是标明解封装,解码,和音视频渲染之间的关系。IDemux是解封装类,作...原创 2020-01-01 09:48:43 · 1250 阅读 · 0 评论 -
WebRTC(十三) Web端实现远程1对1视频通话
效果展示如图: mac电脑和ipad实现了远程的视频通话功能。为了模拟真实的网络场景,mac连接的是无线网,ipad连接的是手机用4G开的热点。实现流程代码示例1 html部分代码<html><head> <title>WebRTC Video Chat</title> <link rel="stylesheet" href=...原创 2019-11-09 11:57:37 · 3539 阅读 · 6 评论 -
WebRTC(十二) Web端媒体协商
媒体协商的目的是让对端知道自己支持哪些媒体格式。其主要流程是首先设置原创 2019-11-09 11:56:45 · 1163 阅读 · 0 评论 -
WebRTC(十一) SDP
下面以一个sdp的实例来解释说明会话层v=0v:版本号o=- 2510751529507770530 2 IN IP4 127.0.0.10:owner, -:name,2510751529507770530:sessionID, 2:版本, IN:Internet, IP4:IP类型, 127.0.0.1:IP地址s=-s:sesssionId, -:name...原创 2019-11-09 11:54:51 · 800 阅读 · 0 评论 -
WebRTC(十) ICE
ice原创 2019-10-28 22:28:22 · 383 阅读 · 0 评论 -
WebRTC(九) 从零开始搭建coturn服务
turn协议原创 2019-10-28 19:53:07 · 803 阅读 · 0 评论 -
WebRTC(八) STUN协议
STUN简介STUN报文结构原创 2019-10-25 17:52:27 · 1296 阅读 · 0 评论 -
WebRTC(七) NAT类型及检测
NAT简介NAT全称network adress translation,即网络地址转换。其存在的意义是将私有的IP地址转化为公有IP地址。为什么会存在NAT?为什么会存在这一转换过程?所有的内网都改为公网地址难道不可以吗?其实存在这一转换过程的目的是防止其他主机或者电脑直接访问公网上的电脑,起到一定的安全作用。另一方面是因为起初公网的IPv4的地址不够用。NAT的种类既然上面说了,N...原创 2019-10-21 10:14:45 · 1559 阅读 · 0 评论 -
WebRTC(六) Node.js+Socket.io实现信令服务器
参考资料信令服务器的作用WebRTC需要一个房间服务器将多端聚集到一起管理,以及信令服务器进行信令数据交换(如媒体描述信息SDP的交换,连接地址的交换等),但在WebRTC的规范中没有对这部分内容进行规定,所以需要由用户自己处理。信令服务器的选型Nodejs 的最大优点即是可以使用 JS 语言开发服务器程序,这样客户端和服务端就可以使用同一种语言开发。另一方面是JS语言比较简单。而且Nod...原创 2019-10-21 10:14:36 · 1978 阅读 · 2 评论 -
WebRTC(五) Web端实现屏幕录制
1 完成html代码<html> <head> <title>WebRTC capture video and audio</title> <style> //============== 切换视频效果 ================== .none{ -webkit-filter:none; ...原创 2019-10-21 10:14:24 · 5220 阅读 · 4 评论 -
WebRTC(四) Web端音视频数据采集及处理
本文介绍如果通过html代码在浏览器中采集和播放音视频数据。原创 2019-10-21 10:14:06 · 1963 阅读 · 2 评论 -
WebRTC(三) Web端音视频设备信息获取
1 html代码,用于显示当前设备的信息<html> <head> <title>WebRTC get audio and video devices</title> </head> <body> <div> <label>audio input device:</labe...原创 2019-10-19 22:09:06 · 1755 阅读 · 0 评论 -
WebRTC(二) nodejs服务器搭建
1 安装nodejsbrew install nodejs2 安装依赖库brew install npm 3 创建一个简单的http服务require 引入http模块创建http服务监听端口var http = require('http');var app = http.createServer(function(req, res){ res.writeHead...原创 2019-10-11 23:42:13 · 772 阅读 · 0 评论 -
WebRTC(一) 简介
1 概述音视频处理+ 即时通讯的开源库2010年Google将其开源是一个非常优秀的多媒体框架,跨平台2 引用场景音视频实时互动游戏,即时通讯,文件传输等音视频处理(回音消除,降噪等)3 整体架构测试WebRTC视频通话的地址...原创 2019-10-11 11:58:30 · 404 阅读 · 0 评论 -
Android 使用RtmpDump推流
1 总结构图2 音频采集3视频采集原创 2020-01-07 09:13:25 · 712 阅读 · 1 评论 -
Camera2的简单使用
整个流程梳理1 初始化CameraManager对象CameraManager对象是相机调用的发起对象,CameraManager cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);通过此对象可以拿到可用的设备id,和设备id对应的一系列属性等。2 初始化CameraCharacteris...原创 2019-09-05 18:00:06 · 2119 阅读 · 1 评论 -
Android ijkDemo
1 引入VideoView <tv.danmaku.ijk.media.example.widget.media.IjkVideoView android:id="@+id/video_view" android:layout_width="match_parent" android:layout_heig原创 2018-01-17 16:18:55 · 1108 阅读 · 0 评论