
RTMP
we1less
学习
展开
-
RTMP直播推流Audio(音频)
LivePushActivitypackage com.example.glivepush;import android.os.Bundle;import android.os.Environment;import android.se.omapi.SEService;import android.util.Log;import android.view.View;import androidx.annotation.Nullable;import androidx.appcompa原创 2020-12-13 13:41:26 · 1984 阅读 · 0 评论 -
RTMP直播推流Video(视频)
SPS、PPS 的头部信息 增加了额外的16字节的长度 sps/pps 按照关键帧处理frame type : 关键帧 / 非关键帧 (4 bit) CodecID : 7表示AVC CodecID 和frametype组合成一个...原创 2020-12-12 21:51:26 · 1562 阅读 · 0 评论 -
利用MediaCodec 获取视频的sps pps 和视频数据
LivePushActivitypackage com.example.glivepush;import android.os.Bundle;import android.os.Environment;import android.se.omapi.SEService;import android.util.Log;import android.view.View;import androidx.annotation.Nullable;import androidx.appcompa原创 2020-12-11 23:08:59 · 1602 阅读 · 1 评论 -
RTMP的回调
CMakeLists.txt 中添加相关cppGConnectListenerpackage com.example.glivepush.push;public interface GConnectListener { // void onConnecting(); void onConnectSuccess(); void onConnectFail(String msg);}PushVideopackage com.example.gli.原创 2020-12-10 23:30:31 · 231 阅读 · 0 评论 -
android jni c++回调java{主线程/子线程} c++线程创建
首先更新一些知识点1、根据jobject获取jclass(静态方法就不用这一步了)如:jclassclz=env->GetObjectClass(jobj);获取jmethodid如: jmethodid jmid= env->GetMethodID(clz,"onError","(ILjava/lang/String;)V")3、调用方法如: jenv->CallVoidMethod(jobj,jmid,code,jmsg) ...原创 2020-10-17 15:16:43 · 1300 阅读 · 0 评论 -
直播推流RTMP
<uses-permission android:name="android.permission.INTERNET" /><activity android:name=".LivePushActivity" />CMakeLists.txtcmake_minimum_required(VERSION 3.4.1)set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DNO_CRYPTO")add_library( gpush.原创 2020-12-10 21:38:55 · 350 阅读 · 1 评论 -
集成RTMPDump H.264协议
源码地址:http://rtmpdump.mplayerhq.hu/拷贝:librtmp源码到cpp中设置不适用OpenSSLset(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DNO_CRYPTO")加入rtmp源码编译src/main/cpp/librtmp/amf.csrc/main/cpp/librtmp/hashswf.csrc/main/cpp/librtmp/log.csrc/main/cpp/librtmp/parseurl.csrc/mai.原创 2020-12-09 21:45:42 · 201 阅读 · 0 评论 -
Nginx搭建RTMP流媒体服务器
下载地址1、Nginx:https://github.com/nginx/nginx2、OpenSSL:https://github.com/openssl/openssl https://www.openssl.org/source/3、rtmp:https://github.com/arut/nginx-rtmp-module下载之后解压OpenSSL:进入openssl 生成MakeFile./config --prefix=`pwd`...原创 2020-12-09 20:47:47 · 330 阅读 · 1 评论 -
OpenSL ES 声音录制 andoridLog
<activity android:name=".OpenSLESActivity" />cmake 配置OpenSLEScmake_minimum_required(VERSION 3.4.1)add_library( native-lib SHARED native-lib.cpp RecordBuffer.cpp AndroidLog.h)...原创 2020-12-06 14:58:15 · 270 阅读 · 0 评论 -
音频录制 AudioRecord
权限<uses-permission android:name="android.permission.RECORD_AUDIO" />AudioRecordUtilpackage com.example.glivepush.audioRcord;import android.media.AudioFormat;import android.media.AudioRecord;import android.media.MediaRecorder;public cla原创 2020-12-05 23:51:10 · 306 阅读 · 0 评论 -
播放yuv数据
YuvActivitypackage com.example.glivepush;import android.os.Bundle;import android.os.Environment;import android.util.Log;import android.view.View;import androidx.annotation.Nullable;import androidx.appcompat.app.AppCompatActivity;import com.exa原创 2020-12-05 22:56:09 · 2491 阅读 · 4 评论 -
OpenGL ES 绘制图片
流程1、编写着色器(顶点着色器和片元着色器)2、设置顶点、纹理坐标3、加载着色器4、创建纹理5、渲染图片OpenGL ES 中的顶点坐标与纹理坐标绘制四边形规定:图形环绕方向必须一致参数属性:三角形 GL_TRIANGLES:v1, v2, v3,v3, v2, v4,参数属性:三角形扇 GL_TRIANGLE_STRIP:偶数:n-1, n-2, n奇数:n-2, n-1, n顶点内存数组1、绘制坐标范围: float[] v...原创 2020-12-05 13:18:18 · 1070 阅读 · 0 评论 -
添加水印
GCameraFboRenderpackage com.example.glivepush.camera;import android.content.Context;import android.graphics.Bitmap;import android.opengl.GLES20;import com.example.glivepush.R;import com.example.glivepush.egl.GShaderUtil;import java.nio.ByteBuff原创 2020-11-30 23:26:17 · 316 阅读 · 0 评论 -
视频编码录制 BaseMediaEncoder类
GBaseMediaEncoderpackage com.example.glivepush.encodec;import android.content.Context;import android.media.MediaCodec;import android.media.MediaCodecInfo;import android.media.MediaFormat;import android.media.MediaMuxer;import android.util.Log;im原创 2020-11-29 20:31:51 · 1470 阅读 · 2 评论 -
[FFmpeg + OpenGL + OpenSL ES] MediaCodec 硬解码 AVPacket- 11 硬解码
初始化MediaCodec:解码器类型(mime)例 "video/avc“,视频宽度(width),视频高度(height),最大数据输入大小(max_input_size),csd-0 头信息,csd-1 头信息。mediaFormat = MediaFormat.createVideoFormat(mime, width, height);mediaFormat.setInteger(MediaFormat.KEY_WIDTH, width);mediaFormat.setIntege.原创 2020-11-15 00:42:09 · 698 阅读 · 0 评论 -
预览摄像头画面-解决小问题
GCamerapackage com.example.glivepush.camera;import android.content.Context;import android.graphics.ImageFormat;import android.graphics.SurfaceTexture;import android.hardware.Camera;import com.example.glivepush.util.DisplayUtil;import java.io.IO原创 2020-11-28 22:20:38 · 402 阅读 · 0 评论 -
预览摄像头画面
原理利用OpenGL生成纹理并绑定到SurfaceTexture,然后把camera的预览数据设置显示到SurfaceTexture中,这样就可以在OpenGL中拿到摄像头数据并显示了。vertex_shader.glslattribute vec4 v_Position;attribute vec2 f_Position;varying vec2 ft_Position;void main() { ft_Position = f_Position; gl_Positio原创 2020-11-27 22:43:00 · 741 阅读 · 0 评论 -
[OpenGL ES] 单Surface渲染多个纹理 返回图片数据的纹理工具方法
GGLTextureRenderpackage com.example.opengldemo;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.opengl.GLES20;import android.opengl.GLUtils;import android.opengl.Matrix;import an.原创 2020-11-24 22:21:37 · 424 阅读 · 0 评论 -
[OpenGL ES] 多Surface渲染同一纹理
Activitypackage com.example.opengldemo;import android.os.Bundle;import android.view.ViewGroup;import android.widget.LinearLayout;import androidx.annotation.Nullable;import androidx.appcompat.app.AppCompatActivity;public class GTextureActivity e原创 2020-11-24 21:32:31 · 1286 阅读 · 0 评论 -
[OpenGL ES] 矩阵旋转
Matrix.rotateM(matrix, o, a, x, y, z);a:正数:逆时针旋转负数:顺时针旋转x、y、z:分别表示相应坐标轴package com.example.opengldemo;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.opengl.GLES20;import a.原创 2020-11-22 15:00:21 · 710 阅读 · 0 评论 -
[OpenGL ES] 正交投影
在OpenGL中就需要用到矩形来改变顶点坐标的范围,最后再归一化就可以了。顶点着色器中添加矩阵vertex_shader_m.glslattribute vec4 v_Position;attribute vec2 f_Position;varying vec2 ft_Position;uniform mat4 u_Matrix;void main() { ft_Position = f_Position; gl_Position = v_Position * u_Mat原创 2020-11-22 11:35:14 · 1056 阅读 · 1 评论 -
[OpenGL ES] FBO 帧缓冲对象
FBO: Frame Buffer object 帧缓冲对象为什么要用FBO?当需要对纹理进行多次渲染采样时,而这些渲染采样是不需要展示给用户看的,可以用一个单独的缓冲对象(离屏渲染)来存储这几次渲染采样的结果,等处理完后才显示到窗口上。优势提高渲染效率,避免闪屏,可以很方便的实现纹理共享等。渲染方式 渲染到缓冲区(Render)- 深度测试和模板测试 渲染到纹理(Texture)- 图像渲染创建FBO1、创建FBOGLES20.glGenBuffe...原创 2020-11-21 22:09:18 · 523 阅读 · 0 评论 -
[OpenGL ES] VBO 顶点缓冲对象
VBO: Vertex Buffer object 顶点缓冲对象为什么要用VBO?不使用VBO时,每次绘制( glDrawArrays )图形时都是从本地内存处获取顶点数据然后传输给OpenGL来绘制,这样就会频繁的操作CPU->GPU增大开销,从而降低效率。使用VBO,可以把顶点数据缓存到GPU开辟的一段内存中,然后使用时不必再从本地获取,而是直接从显存中获取,这样就能提升绘制的效率。创建VBO1、创建VBOGLES20.glGenBuffers(1, vbos, 0);...原创 2020-11-21 20:19:06 · 1002 阅读 · 1 评论 -
[FFmpeg + OpenGL + OpenSL ES]OpenGL ES绘制三角形 - 4 ShaderUtil 工具类
绘制坐标范围:在 WlRender 类中声明顶点坐标数组 绘制坐标范围private final float[] vertexData = { -1.0f, 0f, 0f, 1f, 1f, 0f };为坐标分配本地内存地址在 WlRender 类中声明成员变量 private FloatBuffer verTexBuffer; 并且在构造器...原创 2020-11-08 01:39:54 · 238 阅读 · 0 评论 -
[OpenGL ES] 自定义GLSurfaceView
MyGLSurfaceViewpackage com.example.opengldemo;import android.content.Context;import android.util.AttributeSet;import android.view.Surface;import android.view.SurfaceHolder;import android.view.SurfaceView;import androidx.annotation.NonNull;impo原创 2020-11-20 20:11:36 · 1541 阅读 · 1 评论 -
[OpenGL ES] 编写MyEglHelper
MyEglHelperpackage com.example.opengldemo;import android.view.Surface;import javax.microedition.khronos.egl.EGL10;import javax.microedition.khronos.egl.EGLConfig;import javax.microedition.khronos.egl.EGLContext;import javax.microedition.khronos..原创 2020-11-19 01:04:09 · 183 阅读 · 0 评论