我们长路漫漫,只因学无止境。网站首页学无止境
14. 加入生产者消费者模式控制音视频缓冲~1
发布时间:2021-06-10 11:40:18作者:雪饮[心得笔记]

说到这个缓冲啊,其实需要定义一个最大队列缓冲限制,这样避免耗尽太多内存。cpp/IDecode.h:#ifndef XPLAY_IDECODE_H
#define XPLAY_IDECODE_H
#include "XParameter.h"
#inc
13. 完成音视频解码和并重构解码器加入观察者模式~1
发布时间:2021-06-09 20:51:20作者:雪饮[心得笔记]

上篇咱們實現了幀數據類型的獲取,那麽接下來我們要實現觀察者的加入。那麽我們在cpp/native-lib.cpp:中調用添加觀察者:#include <jni.h>
#include <string>
#include "FFDe
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.