Android GLSurfaceView 清屏问题
编写了一个通过 GLSurfaceView 渲染视频画面的逻辑,但是发现移除之后会残留最后一帧,排查了一天终于找到了问题。 先说结论,只要管理好他的生命周期,系统会处理好清屏,不会发生残留。 由于问题太傻逼,先卖个关子,问题的原因在最后面。下面是网上找的不太行的方法: public void onDrawFrame(GL10 gl) { // 清屏逻辑:仅绘制背景,无法做到透...
编写了一个通过 GLSurfaceView 渲染视频画面的逻辑,但是发现移除之后会残留最后一帧,排查了一天终于找到了问题。 先说结论,只要管理好他的生命周期,系统会处理好清屏,不会发生残留。 由于问题太傻逼,先卖个关子,问题的原因在最后面。下面是网上找的不太行的方法: public void onDrawFrame(GL10 gl) { // 清屏逻辑:仅绘制背景,无法做到透...
Metal 中清屏的核心代码是通过设置渲染通道描述符(MTLRenderPassDescriptor)中的colorAttachments 的 loadAction 为MTLLoadActionClear,并设置清屏颜色clearColor,然后通过命令编码器执行清屏操作。 具体流程如下: 1. 从CAMetalLayer获取当前绘制的drawable和texture 2. 创建MTL...
背景 同事突然找我说 Jenkins 连不上 slave 节点了,昨天打包还好好的。经过排查时 slave 机器上配置的公钥丢失导致的,几天前另外一个同事清理的,我猜测可能跟配置节点时可用性选择的 “尽量保持代理在线” 有关系吧,直到今天断了 jenkins 重连才发现。 Jenkins 这边使用的是提前配置好的凭据,实际上是一个 Ed25519 算法生成的私钥,对应的公钥则配置到要远程...
背景 上篇文章记录了找不到 libswiftCore.dylib Swift 运行时库导致的无法启动问题,今天又遇到了一个找不到 __darwin_check_fd_set_overflow 符号导致无法启动的有趣问题: Dyld Error Message: Symbol not found: ___darwin_check_fd_set_overflow Reference...
背景 App 在较新的系统上正常运行,可是在 10.13 系统上启动的时候却崩溃了,原因是 libswiftCore.dylib 找不到,报错如下: Dyld Error Message: Library not loaded: /usr/lib/swift/libswiftCore.dylib Referenced from: /Applications/XXX.app/C...
背景 刚做播放器的时候就发现我司的视频无法硬解,当时对比了重构前的原版 ijkplayer 发现在 iOS 上可以硬解,然后定位到问题是创建 videotoolbox 的时候传入的 AVCC 数据不对导致的,当时刚接触 FFmpeg 不久,根本没有能力解释这个问题的原因,修复的方式简单粗暴了些: FFmpeg 在 ff_videotoolbox_avcc_extradata_create...
今天把代码切到了 23 年的一次提交,目的是复现当时的一个 bug,需要编译下 FFmpeg 4,当我开始编译时遇到了下面两个编译问题,其实在升级编译脚本时也遇到了,当时没有做记录,这次刚好记录一下。 我的 clang 版本: $ clang -v Apple clang version 17.0.0 (clang-1700.0.13.5) Target: arm64-apple-dar...
Markdown是一种轻量级的「标记语言」。 请阅读下方文本熟悉工具使用方法,本文可直接拷贝到微信中预览。 1 Markdown.com.cn 简介 支持自定义样式的 Markdown 编辑器 支持微信公众号、知乎和稀土掘金 点击右上方对应图标,一键复制到各平台 2 Markdown语法教程 2.1 标题 不同数量的#可以完成不同的标题,如下: 一级标题 二级...
将 FFmpeg 升级到 6 代的时候,av_frame_get_pkt_pos 方法已经删除了,改成了直接访问 frame->pkt_pos 属性,但是会有产生一个警告:‘pkt_pos’ is deprecated,下面介绍下如何去掉这个警告。 在 FFmpeg 开发过程中,我们经常会遇到需要在编解码阶段传递私有数据的场景,AV_CODEC_FLAG_COPY_OPAQUE 标志...
今天刚把 FSPlayer 依赖的 FFmpeg 从 6.1.1 升级到了 7.1.1,记录了升级过程中遇到的一些问题,由于 FSPlayer 大部分代码来自于 ijkplayer,所以也适用于 ijkplayer 升级到 7 代 FFmpeg。 编译问题汇总 1、新的编解码器 ID 必须添加到列表末尾 libavcodec/version.c:38:19: error: static...