03 2019 档案

摘要:本文中实现的一个小功能是把一个YUV原始视频数据(时间序列图像)经过h264编码为视频码流,然后在使用mp4封装格式封装。 编码&封装的流程图如下: 使用ffmpeg编码流程: 1、首先使用av_register_all()函数注册所有的编码器和复用器(理解为格式封装器)。该步骤必须放在所有ffmp 阅读全文
posted @ 2019-03-10 12:12 灰色飘零 阅读(7229) 评论(2) 推荐(1) 编辑
摘要:为什么要用多线程?在音视频领域主要是实现音视频同步。实现了音视频同步,我们的播放器就基本上合格了。 这里我们将讲解一下SDL的多线程与锁机制。 多线程的好处主要是能使程序更加充分利用硬件(主要是CPU)的性能。但是也存在相应的隐患,如果多线程管理不好,会出现协调问题。 引进的机制:线程的互斥与同步 阅读全文
posted @ 2019-03-08 21:21 灰色飘零 阅读(4364) 评论(0) 推荐(0) 编辑
摘要:在前面我们讲了一下如何使用Java调用C,本文我们讲一下如何使用JNI提供的接口来反射得到Java方法进行调用。 主要步骤如下: FindClass (找到Java层的类) GetMethodID / GetFieldID (获取Java类中的方法 / Java类中的属性) NewObject (创 阅读全文
posted @ 2019-03-08 16:28 灰色飘零 阅读(1473) 评论(0) 推荐(0) 编辑
摘要:在JNI实战(二):Java 调用 C 我们了解了JNI的静态注册和动态注册。也知道我们应该使用动态注册来进行JNI函数与Java方法之间的映射。 示例的映射表的数组为如下: static JNINativeMethod g_methods[] = { // Java层方法、参数类型、JNI方法 { 阅读全文
posted @ 2019-03-08 10:19 灰色飘零 阅读(2455) 评论(0) 推荐(0) 编辑
摘要:1. JNI Env 和 Java VM 关系说明 JNIEnv 是 Java的本地化环境,是Java与C的交互的重要桥梁。 在Android上,一个进程对应一个JavaVM,也就是一个app对应一个JavaVM。 一个JavaVM可以有很多个线程,每一个Java线程对应一个JNI Env。 我们可 阅读全文
posted @ 2019-03-07 15:39 灰色飘零 阅读(1501) 评论(0) 推荐(0) 编辑
摘要:使用最新Android Studio的Cmake,创建一个Native C++项目后,我们就可以看到JNI的Hello World的项目及示例代码了。 JNI的项目代码,分为三层:Java层,C++层,CMake层。 其中Java层定义了调用C++的方法,C++层实现这个方法,CMake定义了如何将 阅读全文
posted @ 2019-03-07 14:18 灰色飘零 阅读(1427) 评论(0) 推荐(0) 编辑
摘要:在上文,我们做了YUV播放器,这样我们就入门了SDL播放视频。下面我们来做一个PCM播放,即使用SDL播放PCM数据。 下面说明一下使用SDL播放PCM音频的基本流程,主要分为两大部分:初始化SDL、循环播放数据。 1. 初始化SDL 1). 初始化SDL 执行的方法为SDL_Init(SDL_IN 阅读全文
posted @ 2019-03-04 20:37 灰色飘零 阅读(4102) 评论(1) 推荐(0) 编辑
摘要:前面铺垫了这么多,现在终于进入核心的主题了,那就是使用SDL播放视频,本节我们将使用SDL播放YUV视频,也就是做一个YUV播放器。 下面说明一下使用SDL播放YUV视频的基本流程,主要分为两大部分:初始化SDL、循环显示画面。 1. 初始化SDL 1). 初始化SDL (SDL_Init)2). 阅读全文
posted @ 2019-03-04 19:31 灰色飘零 阅读(3078) 评论(1) 推荐(0) 编辑
摘要:本文我们讲一下如何使用SDL_Texture将视频纹理渲染出来。 1. SDL 视频渲染相关对象 SDL 视频渲染主要涉及到四个对象:SDL_Window、SDL_Render、SDL_Texture和SDL_Surface。 SDL_Window代表的是窗口的逻辑概念,它是存放在主内存中的一个对象 阅读全文
posted @ 2019-03-03 18:43 灰色飘零 阅读(5326) 评论(2) 推荐(0) 编辑
摘要:在前面学习SDL的例子运行时,我们发现我们的窗口只停留了几秒,但是如果设置更长时间显然也有其他的弊端。 那么有没有一种好的办法可以解决这个问题呢?例如:能不能让窗口一直显示,直到检测到用户用鼠标点击关闭按钮后才关闭呢? 答:显然可以! 下面就来介绍一下SDL的事件处理机制。 1. SDL 事件处理机 阅读全文
posted @ 2019-03-03 18:05 灰色飘零 阅读(7191) 评论(0) 推荐(0) 编辑
摘要:在上文 SDL 开发实战(二):SDL 2.0 核心 API 解析 我们讲解了SDL最核心的API,并结合Hello World代码了解了SDL渲染画面的基本原理。 本文我们来讲一下,如何使用SDL的API绘制基本的图形。 SDL中绘制基本图形的 API并不多,主要是 点、线、矩形、填充矩形。其它图 阅读全文
posted @ 2019-03-02 12:28 灰色飘零 阅读(9076) 评论(0) 推荐(0) 编辑
摘要:在上一篇文章 SDL 开发实战(一):SDL介绍及开发环境配置 中,我们配置好了SDL的开发环境,并成功运行了SDL的Hello World 代码。但是可能大部分人还是读不太明白具体Hello Wold的代码的意义。下面我们来根据SDL的使用思路来讲解一下SDL核心API,各位可以将此文结合上一篇文 阅读全文
posted @ 2019-03-01 20:26 灰色飘零 阅读(5476) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示