使用 ffprobe 分析音视频流
背景 当排查推流问题时,第一步就是拿到流地址,观察 packet 的情况,介绍下如何通过 ffprobe 快速排查。 查看流信息 命令: ffprobe -hide_banner -i "https://your.flv" 结果: Input #0, flv, from 'https://your..flv': Metadata: encoder : ...
背景 当排查推流问题时,第一步就是拿到流地址,观察 packet 的情况,介绍下如何通过 ffprobe 快速排查。 查看流信息 命令: ffprobe -hide_banner -i "https://your.flv" 结果: Input #0, flv, from 'https://your..flv': Metadata: encoder : ...
背景 记录一次看似由 SIMD 优化代码和共享内存读取保护冲突引发的崩溃,实际是 Apple 和 Google 在特殊情况下数据处理不同导致崩溃的经典案例。 问题现场:在使用 libyuv 将摄像头输出的 NV12 格式的 CVPixelbuffer 转成 BGRA 格式时,仅当 CVPixelBuffer 高度为奇数时会引发 NEON 内存越界崩溃,堆栈如下: stop reason...
编写了一个通过 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 标题 不同数量的#可以完成不同的标题,如下: 一级标题 二级...