侧边栏
首页代码

11 2022 档案

摘要:在《Java与CC++交互JNI编程》中有讲过AttachCurrentThread和DetachCurrentThread的使用。 我们知道在jni中我们可以使用pthread或者std::thread创建线程。因为线程并不是从Java环境创建的,所以这时候创建出的线程是没有JNIEnv的。如果需 阅读全文
posted @ 2022-11-21 10:16 咸鱼Jay 阅读(912) 评论(0) 推荐(0) 编辑
摘要:简介 之前接手的老项目,从接手到现在也没怎么去维护过,突然测试那边给我提了一个ANR的BUG,由于从别人手中接手,并且此项目也不是经常需要维护,所有对项目代码并不是特别熟悉,因此解决此问题还是比较麻烦的,今天就把解决ANR的过程记录一下。 分析ANR问题 通过的logcat日志文件可以查看到ANR是 阅读全文
posted @ 2022-11-19 14:28 咸鱼Jay 阅读(137) 评论(0) 推荐(0) 编辑
摘要:不论从事安卓应用开发,还是安卓系统研发,应该都遇到应用无响应(简称ANR)问题,当应用程序一段时间无法及时响应,则会弹出ANR对话框,让用户选择继续等待,还是强制关闭。本文将带你全面解析Android之ANR日志 一、概述 解决ANR一直是Android 开发者需要掌握的重要技巧,一般从三个方面着手 阅读全文
posted @ 2022-11-19 14:21 咸鱼Jay 阅读(1761) 评论(0) 推荐(0) 编辑
摘要:在Android中,封装的同步类主要有Mutex(AutoMutex)与Condition。 这两个类在android中被大量的使用,这也说明这两个类是非常重要的。 一、Mutex(AutoMutex)与Condition代码分析 1.1 Mutex(AutoMutex)代码分析 Mutex是互斥类 阅读全文
posted @ 2022-11-17 23:12 咸鱼Jay 阅读(343) 评论(0) 推荐(0) 编辑
摘要:我们在使用fopen打开文件的时候有时会出现失败返回null情况,但是我们不能直接通过log具体是什么原因导致的,所以这时我们可以通过errno和strerror获取错误码和错误信息。 我遇到的是错误码1,Operation not permitted。 经过检查是Android11,分区存储,不能 阅读全文
posted @ 2022-11-10 19:39 咸鱼Jay 阅读(475) 评论(0) 推荐(0) 编辑
摘要:一、实现seek功能 我们主要是使用ffmpeg的av_seek_frame方法实现seek功能,但是我们给外界提供seek功能的方法可以不叫seek,我这里使用setTime方法,单位是秒。 /** * 移动视频到指定的关键帧位置 * * @param s 输入媒体的上下文 * @param st 阅读全文
posted @ 2022-11-08 20:29 咸鱼Jay 阅读(314) 评论(0) 推荐(0) 编辑
摘要:简介 音视频同步的实现可以有两种方式 视频同步到音频 音频同步到视频 我们这里选择第一种,因为音频播放的频率是SDL控制的,我们没法改变,所以使用视频同步到音频。 实现音视频同步 在videoplayer.h先定义两个全局变量,用于记录音频时钟和视频时钟 /** 音频时钟,当前音频包对应的时间值 * 阅读全文
posted @ 2022-11-08 20:29 咸鱼Jay 阅读(162) 评论(0) 推荐(0) 编辑
摘要:一、简介 上节介绍了使用SDL播放音频,这节介绍视频显示,其解码流程跟音频差不多。 解码视频是比较耗时的,需要我们自己开个线程去解码,而音频是SDL帮我们管理了子线程去解码音频,初始化音频SDL后就开始进行播放(SDL_PauseAudio(0);)了,一播放就会调用回调函数(sdlAudioCal 阅读全文
posted @ 2022-11-08 17:53 咸鱼Jay 阅读(189) 评论(0) 推荐(0) 编辑
摘要:一、简介 接着上节的音频解码,使用SDL播放音频。 通过上节程序运行打印发现这些音频信息明显不符合SDL的,所以我们需要进行重采样 二、音频重采样 这里我们可以参考之前的《12_采样格式&音频重采样》来实现现在的重采样。 2.1 引入头文件 extern "C" { #include <libswr 阅读全文
posted @ 2022-11-08 17:48 咸鱼Jay 阅读(250) 评论(0) 推荐(0) 编辑
摘要:一、简介 如上图,我们在主线程中开启一个子线程进行解封装,然后在开两个线程分别进行视频解码和音频解码,其中音频解码我们使用的是SDL去渲染,SDL自己会管理子线程,不用我们来创建子线程,而视频解码是需要我们自己创建子线程进行管理。 解封装会解出视频包和音频包,分别塞入各自的队列中,然后各自解码器取出 阅读全文
posted @ 2022-11-08 17:31 咸鱼Jay 阅读(248) 评论(0) 推荐(0) 编辑
摘要:一、简介 我们使用QT+ffmpeg实现一个播放器,这里我们主要是为了学习ffmpege了,而QT只是辅助的,所以播放器的界面搭建我们不在介绍,可以直接看代码(界面搭建代码)。 现在我们直接接入主题,ffmpeg的解封装我们可以直接参考之前介绍的 FFmpeg音视频解封装格式 下面是使用FFmpeg 阅读全文
posted @ 2022-11-08 17:23 咸鱼Jay 阅读(125) 评论(0) 推荐(0) 编辑
摘要:一、简介 为什么要用多线程?在音视频领域主要是实现音视频同步。实现了音视频同步,我们的播放器就基本上合格了。 多线程的好处主要是能使程序更加充分利用硬件(主要是CPU)的性能。但是也存在相应的隐患,如果多线程管理不好,会出现协调问题。 这里我们将讲解一下SDL的多线程与锁机制。 引进的机制:线程的互 阅读全文
posted @ 2022-11-08 17:17 咸鱼Jay 阅读(264) 评论(0) 推荐(2) 编辑

页脚HTML代码
点击右上角即可分享
微信分享提示
电磁波切换