好咖啡要和朋友一起品尝,好“模板”也要和同样喜欢它的人一起分享。 网站首页心得笔记
12. 读取媒体帧数据获取类型信息(音频、视频)存入XData~1
发布时间:2021-06-09 18:16:42作者:雪饮
为了区分帧数据的类型,比如音频或者视频帧。则需要在cpp/FFDemux.cpp中实现GetAPara和GetVPara方法:#include "FFDemux.h"
#include "XLog.h"
extern "C"{
#include <libavfor
11. 封装FFDecode解码的Send和Recv接口~1
发布时间:2021-06-09 17:16:16作者:雪饮
接收压缩包和发送压缩包,需要实现Send和Recv接口。cpp/IDecode.h:#ifndef XPLAY_IDECODE_H
#define XPLAY_IDECODE_H
#include "XParameter.h"
#include "IObserver.h"
//
10. 添加IDemux的GetVPara获取视频XParamter参数接口用IDecode的Open测试~1
发布时间:2021-06-09 16:21:37作者:雪饮
获取视频参数的话,要在cpp/FFDemux.cpp中实现GetVPara方法:#include "FFDemux.h"
#include "XLog.h"
extern "C"{
#include <libavformat/avformat.h>
}
//打开文件,或者流媒
9. FFDecode的Open打开解码器接口编写和Observer基类添加~1
发布时间:2021-06-09 15:53:34作者:雪饮
解码器接口其实上篇就实现了,只是有个地方需要注意下cpp/FFDecode.cpp:extern "C"
{
#include <libavcodec/avcodec.h>
}
#include "FFDecode.h"
#include "XLog.h"
boo
8. IDecode和FFDecode模块代码创建~1
发布时间:2021-06-09 15:27:15作者:雪饮
封装解码器获取与具体的解码以及对于下一步的考量,对于FFDecode、Idecode、Xparameter的cpp或者头文件的完善。cpp/CMakeLists.txt:# For more information about using CMa
详细信息>>7. 观察者Observer模式的代码实现并使用IDemux进行测试~1
发布时间:2021-06-09 14:50:56作者:雪饮
先实现观察者服务好吧。cpp/CMakeLists.txt:# For more information about using CMake with Android Studio, read the
# documentation: https://d.android.com/studio/p
6. 添加了XSleep完成XThread线程函数的停止和超时判断~1
发布时间:2021-06-09 11:40:19作者:雪饮
完成线程的休眠以及停止cpp/XThread.cpp:#include "XThread.h"
#include "XLog.h"
#include <thread>
using namespace std;
void XSleep(int mis)
{
chrono::millise
5. 完成XThread线程类IDemux继承后在线程中读取帧数据~1
发布时间:2021-06-09 11:10:34作者:雪饮
用线程去读取帧数据,首先要在CMakeLists.txt中配置线程cpp# For more information about using CMake with Android Studio, read the
# documentation: https://d.android.
4. FFdemux的Read读取帧数据接口编写~1
发布时间:2021-06-09 10:30:38作者:雪饮
其实读取数据帧的接口(方法)在上一步中就已经实现了。这次主要是利用这个读取数据帧的接口。在cpp/native-lib.cpp:#include <jni.h>
#include <string>
#include "FFDemux.h
3. FFDemux的Open实现打开媒体文件~1
发布时间:2021-06-08 22:03:55作者:雪饮
上一篇把xplay項目的整體代碼結構設計好了。這次就來實現部分功能。首先嘛從文件的打開開始。但是在此之前首先把ndk環境修改下,因爲這次又回到家裏了,所以ndk環境路徑又變了
详细信息>>2. 创建安卓流媒体播放器XPlay项目并配置添加了解封装模块代码及其依赖日志类~1
发布时间:2021-06-08 17:56:33作者:雪饮
为了防止编译时候遇到arm64-v8a架构,而且现在64位比较主流。并且调整了ndk的版本。所以:app/build.gradle:plugins {
id 'com.android.application'
}
android {
co
1. 项目创建权限ABI和CMake相关库和头文件配置~1
发布时间:2021-06-08 15:11:25作者:雪饮
新建一个项目Xpay的android studio的c++支持的项目权限:AndroidManifest.xml:<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.co
11. 通过OpenglES纹理修改完成yuv文件的播放显示~1
发布时间:2021-06-08 10:33:41作者:雪饮
能够修改纹理数据和显示之后,接下来就要对yuv视频文件进行解析播放了。生成一个yuv视频文件如:ffmpeg.exe -i 1080.mp4 -pix_fmt yuv420p -s 424x240 out.yuv可以发现一个8.0
详细信息>>10. OpenglES纹理数据修改和显示~1
发布时间:2021-06-07 18:29:50作者:雪饮
要让纹理内容像是视频一样可以播放出来,需要不断的修改纹理内容各个层的内容。每次变换了纹理内容都要同步到纹理的各个层上面。每个层面都完成渲染之后就可以对本次纹理内容
详细信息>>9. opengl的yuv纹理的创建和初始化~1
发布时间:2021-06-07 17:24:54作者:雪饮
创建纹理数据需要对纹理的第一层、第二层、第三层分别进行缩小与放大的过滤、纹理格式和大小的设置。具体实例:cpp/native-lib.cpp:#include <jni.h>
#include <string>
#in
8. program渲染程序初始化给shader传递顶点和材质顶点数据~1
发布时间:2021-06-07 16:26:37作者:雪饮
顶点坐标的程序的渲染和材质坐标程序的渲染,主要区别于顶点坐标比材质坐标多了一个z轴。主要流程是创建渲染程序,加入对应着色器、链接程序、激活指定属性。具体实例:cpp/nati
详细信息>>7. shader初始化完成并编译顶点和片元着色器代码~1
发布时间:2021-06-07 15:18:23作者:雪饮
这次主要是封装一个初始化方法对之前创建的片元着色器和顶点着色器进行初始化。大多数代码都是约定俗成的,没有什么可说的。然而对于一个头文件不得不说。可以看到这个错误,G
详细信息>>6. yuv420p片元着色器glsl编写~1
发布时间:2021-06-06 15:52:56作者:雪饮
YUV轉RGB,基本上都是一些固定的程序,主要依賴的是YUV轉RGB的公式。這裏有兩個公式,而這裏我們使用第二個公式,直接計算乘以一個矩陣。那麽具體實現如cpp/native-lib.cpp:#inclu
详细信息>>5. 顶点着色器代码glsl代码编写~1
发布时间:2021-06-06 11:38:54作者:雪饮
繼使用NDKC++完成EGL、display、surface、contex配置和初始化之後。這次我們需要完成材質坐標信息到輸出的材質坐標信息的轉換,也就是要完成一個頂點著色器的方法編寫。這裏
详细信息>>3. 使用NDKC++完成EGL、display、surface、contex配置和初始化~1
发布时间:2021-06-05 20:51:12作者:雪饮
繼上次shader项目配置和创建完成了java部分的代码之後。接下來我們來完成cpp部分的代碼。EGLDisplay 是一个关联系统物理屏幕的通用数据类型,表示显示设备句柄,也可以认为是
详细信息>>2. testopengles_shader项目配置和创建_完成java部分代码~1
发布时间:2021-06-05 15:02:35作者:雪饮
這第一步我們要準備一個yuv數據。C:\Users\Administrator>cd D:\software\ffmpegwin\ffmpeg\ffmpeg-20180605-b748772-win64-static\binC:\Users\Administrator>d:D:\softw
详细信息>>5. 读取pcm音频文件并使用OpenSL播放~1
发布时间:2021-06-04 22:13:10作者:雪饮
上篇完成了混音器、配置了音頻信息。這次我們就能正式的進行pcm音頻的播放了。主要用到的就是OpenSL ES中具体的接口类 播放器:SLPlayItf。然後通過隊列不斷的從音頻流中去
详细信息>>4. 配置OpenSL的PCM音频输入格式~1
发布时间:2021-06-04 16:14:27作者:雪饮
創建混音器之後,就可以進行下一步配置音頻信息了,感覺夏曹俊老師在這裏節奏就有點滿了,擠牙膏一樣。。。cpp/native-lib.cpp:#include <jni.h>
#include <string>
#include <S
3. 完成OpenSLES混音器CreateOutputMix初始化~1
发布时间:2021-06-04 15:43:48作者:雪饮
上一步創建了OpenSLES下的SLEngineItf引擎,接下來第二步就是創建混音器。cpp/native-lib.cpp:#include <jni.h>
#include <string>
#include <SLES/OpenSLES.h>
#include <S
2. 创建OpenSLES音频播放测试项目并完成引擎初始化~1
发布时间:2021-06-04 15:07:27作者:雪饮
上篇中實現了安卓视频播放窗口去掉标题栏、全屏、横屏等的處理並在雷電模擬器4中進行了測試。但是目前來説視頻還有最致命的問題就是沒有聲音,雖然聲音也解碼了。但是這裏音
详细信息>>