我们长路漫漫,只因学无止境。网站首页学无止境
7、基于NDKC++FFmpegAndroid视频(流媒体)播放器开发实战-2019年Udemy学习笔记
发布时间:2021-06-15 14:01:56作者:雪饮[心得笔记]
(3705)2. AndroidStudio开发工具安装使用讲解~1(3706)3. Android SDK目录内容分析~1(3707)4. AndroidNDK工具目录功能分析~1(3708)5. 安卓模拟器安装和第一个c++安卓程序编
详细信息>>22. 通过手动解码帧数据完成了IPlayer控制视频播放进度的功能~1
发布时间:2021-06-14 19:13:54作者:雪饮[心得笔记]
這次改動不大主要是涉及cpp/FFdecode.cpp:extern "C"
{
#include "../../../include/libavcodec/avcodec.h"
#include "../../../include/libavcodec/jni.h"
#include "../
21. 修改了视频播放到结尾再次打开会锁死的bug~1
发布时间:2021-06-14 18:12:23作者:雪饮[心得笔记]
其實之前在實現鎖的時候cpp/FFDemux.cpp中鎖的實現是有問題的,這裏要修復下:#include "FFDemux.h"
#include "XLog.h"
extern "C"{
#include <libavformat/avformat.h>
}
//
19. 完成了IDemux的Seek和界面SeekBar的事件响应~1
发布时间:2021-06-14 16:54:16作者:雪饮[心得笔记]
Seek的實現比較複雜,這裏首先從cpp/FFDemux.cpp中實現seek方法:#include "FFDemux.h"
#include "XLog.h"
extern "C"{
#include <libavformat/avformat.h>
}
//分数转为浮点
17. 完成了播放进度的显示并修正了硬解码参数传递错误~1
发布时间:2021-06-14 14:28:23作者:雪饮[心得笔记]
首先在cpp/IPlayer.cpp中實現播放定位:#include "IPlayer.h"
#include "IDemux.h"
#include "IDecode.h"
#include "IAudioPlay.h"
#include "IVideoView.h"
#include "IRes
16. 在835cpu的手机中测试并修正了音频播放Close的bug~1
发布时间:2021-06-14 11:10:45作者:雪饮[心得笔记]
要解決這個問題的核心在於重采樣的時候close方法,因爲一般不關閉頂多就是一直消耗著内存,最後被强行崩潰或者假死,而這種秒崩的情況肯定是close處理的不當。所以cpp/IPlayer.c
详细信息>>15. 完成通过界面多次打开视频文件,修正了多次打开显示出现的bug~1
发布时间:2021-06-14 10:40:29作者:雪饮[心得笔记]
爲了處理視頻多次打開時候由於多綫程導致會出現沒有規律的打不開的錯誤,所以要在cpp/GLVideoView.cpp處理下綫程鎖問題:#include "GLVideoView.h"
#include "XTexture.h"
#in
14. 添加视频打开路径和香港卫视rtmp打开路径的界面~1
发布时间:2021-06-14 09:45:41作者:雪饮[心得笔记]
對於這次的界面設計,希望有兩個輸入框,一個是打開本地的視頻,一個是打開網絡直播流。那麽假如這個界面命名為OpenUrl,則有:AndroidManifest.xml:<?xml version="1.0" encoding="u
详细信息>>12. IPlayer完成Close清理函数编写并完成多次打开视频文件的测试~1
发布时间:2021-06-13 21:37:51作者:雪饮[心得笔记]
首先我們要在ffmpeg解碼之前先清理下,防止之前解碼殘留cpp/FFdecode.cpp:extern "C"
{
#include <libavcodec/avcodec.h>
#include <libavcodec/jni.h>
}
#include
11. XTexture和GLVideoView的线程安全和清理函数编写~1
发布时间:2021-06-13 19:50:01作者:雪饮[心得笔记]
同樣的爲了實現綫程安全,這次輪到XTexture和GLVideoView了。首先在cpp/GLVideoView.cpp中實現:#include "GLVideoView.h"
#include "XTexture.h"
#include "XLog.h"
void GLV