代码改变世界

FFMpeg笔记(十三)升级FFmpeg6.1

2024-03-24 11:21 by jiayayao, 6 阅读, 0 推荐, 收藏, 编辑
摘要:FFmpeg最新版已更新6.1,许多之前标记为deprecated的api被彻底删除了,同时也增加了很多新的特性和功能。FFmpeg团队持续优化代码,新版本往往也具有更高的编码和解码效率,更多的格式支持,因此及时更新FFmpeg版本,有利于提升应用的处理速度和资源利用率。本文记录项目中FFmpeg更 阅读全文

FFMpeg笔记(十二)MP4 box解析

2023-05-27 12:38 by jiayayao, 580 阅读, 0 推荐, 收藏, 编辑
摘要:mp4是MPEG-4 Part 14的实现,包含3大box。 一、ftyp file type box,包含视频文件使用的mp4标准,也作为probe mp4的标志; 二、moov 包含媒体的元数据信息,包含一个mvhd(也就是header box)和若干个trak(track)。trak包含一条音 阅读全文

FFMpeg笔记(十一)常用FFmpeg命令行

2022-02-14 20:29 by jiayayao, 146 阅读, 0 推荐, 收藏, 编辑
摘要:获取yuv文件(100帧) ffmpeg -i /Users/jiayayao/Documents/Samples/video/3_1280_720_30fps_h264.mp4 -vframes 100 output.yuv 获取全部yuv文件 ffmpeg -i /Users/jiayayao/ 阅读全文

WebRTC笔记(四)NAT、STUN和ICE

2020-07-12 21:44 by jiayayao, 1199 阅读, 0 推荐, 收藏, 编辑
摘要:一、NAT NAT(Network Address Translator),网络地址转换。NAT是在IPv4地址日益缺乏的情况下产生一种缓解地址问题的方案。它的主要目的是为了地址重用。 NAT的基本思想是,由NAT设备(比如家用路由器)修改从私有网络发送到互联网的IP报文的源地址字段,以及修改从互联 阅读全文

WebRTC笔记(二)NetEQ模块简单分析

2020-04-05 18:33 by jiayayao, 1843 阅读, 0 推荐, 收藏, 编辑
摘要:NetEQ是WebRTC的音频处理模块,主要包含MCU和DSP两大处理单元,包含自适应缓冲区、语音解码器、抖动控制和丢包隐藏模块及播放四大部分。MCU的主要作用的安排数据包的插入和控制数据包的输出。插入的关注点是插入的位置,输出的关注点是输出的时间。抖动消除的算法思路在MCU控制模块中得以体现。DS 阅读全文

FFMpeg笔记(八) 读取RTP数据时的PTS计算[转载]

2020-04-04 21:29 by jiayayao, 3010 阅读, 0 推荐, 收藏, 编辑
摘要:结构体struct RTPDemuxContext中有若干时间戳相关的成员,含义如下 timestamp:上一个接收到的RTP时间戳 base_timestamp:第一个接收到的RTP时间戳 cur_timestamp:未知 unwrapped_timestamp:假如rtp时间没有32位溢出的话, 阅读全文

LeetCode 9. 回文数

2020-02-09 23:00 by jiayayao, 162 阅读, 0 推荐, 收藏, 编辑
摘要:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121输出: true示例 2: 输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3: 输入: 10输出: 阅读全文

一个线程相关的高CPU占用问题的定位

2019-12-21 21:54 by jiayayao, 685 阅读, 0 推荐, 收藏, 编辑
摘要:最近在重构项目代码时,发现两个线程同时访问一个加锁的std::list队列时,会出现恶性竞争锁的现象。 具体现象是A线程总是拿不到锁,B线程抢占几次后,A才抢占到。 由于是重构项目,也无法通过回滚代码来解决。 最终定位问题是,重构时对std::list队列单独封装了一个类导致的。单独封装一个类,那么 阅读全文

iOS的VideoToolBox与Android的MediaCodec对PTS的处理异同

2019-12-21 20:42 by jiayayao, 1451 阅读, 0 推荐, 收藏, 编辑
摘要:视频源,不论是从采集设备采集到的,还是本身压制好的文件,其流中的数据都是按照编码顺序存储的。比如1 2 3 4 5,5帧视频数据,1编码成I帧,2 3 4编码成B帧,5编码成P帧。 编码过程: 1. 编码1为I帧; 2. 2,3,4准备编码为B帧,先缓存下来,记录其时间点作为PTS; 3. 再编码5 阅读全文

使用Xcode Instruments定位APP稳定性问题

2019-09-08 19:54 by jiayayao, 1804 阅读, 0 推荐, 收藏, 编辑
摘要:Xcode Instruments提供了各种各样的工具用来定位APP的各种稳定性问题。这里简单总结几个问题: 1. 内存泄漏 Xcode->Open Developer Tools->Instruments->Leak,打开后点击运行。执行测试流程后,如果没有内存泄漏,则Leak工具显示的是√,如果 阅读全文