摘要:Xcode Instruments提供了各种各样的工具用来定位APP的各种稳定性问题。这里简单总结几个问题: 1. 内存泄漏 Xcode->Open Developer Tools->Instruments->Leak,打开后点击运行。执行测试流程后,如果没有内存泄漏,则Leak工具显示的是√,如果 阅读全文
视频播放器的丢帧逻辑
2018-11-26 23:58 by jiayayao, 2695 阅读, 0 推荐, 收藏, 编辑
摘要:最近在做播放器在电视盒子上的适配,发现一个严重的问题:低端机型解码能力不足。表现是丢帧,音画不同步。对此,有两种解决方法。 一、解码前丢帧 思路是记录25帧(1s)解码的总时间decodeTotalTime,减去25帧播放的总时间playTotalTime得到差值diff。如果diff大于0,说明解 阅读全文
iOS VideoToolBox decoder解码失败(-12909和-12911)问题解决
2018-09-02 20:21 by jiayayao, 4906 阅读, 2 推荐, 收藏, 编辑
摘要:对于任何H.264解码器而言,都要将SPS和PPS信息传递给解码器。FFmpeg内部做了设置,所以没有显示设置。但是对于硬件解码器来讲,开发者必须手动设置。另外,使用FFmpeg解码出来的视频帧是以YUV格式存储于内存中的,但是对于硬件解码器来讲,一般都是直接解码到显存,便于后续的处理与渲染。H.2 阅读全文
H.264从SPS中提取视频宽高
2018-08-05 23:12 by jiayayao, 3142 阅读, 1 推荐, 收藏, 编辑
摘要:H.264有两种封装模式: (1)annexb模式:传统模式,使用start code来分隔NAL, SPS和PPS是在ES流的头部; (2)mp4模式:没有start code,使用NALU长度(固定字节,通常为4个字节)来分隔NAL。AVCodecContext的extradata内部保存着分隔 阅读全文
FFMpeg笔记(五) 录制小视频问题记录
2018-04-05 23:00 by jiayayao, 5046 阅读, 1 推荐, 收藏, 编辑
摘要:1. YUV数据在使用avfilter scale时在特定的分辨率下UV分量不对 由于是小视频,那么分辨率不需要太高,但是有的视频源是1080p,甚至有的是4K的,所以对视频源进行scale非常有必要。scale操作可以使用avfilter或者sws_scale完成,具体参考: FFMpeg学习(四 阅读全文
FFMpeg笔记(三) 音频处理基本概念及音频重采样
2018-04-05 22:46 by jiayayao, 17412 阅读, 3 推荐, 收藏, 编辑
摘要:Android放音的采样率固定为44.1KHz,录音的采样率固定为8KHz,因此底层的音频设备驱动需要设置好这两个固定的采样率。如果上层传过来的采样率不符的话,需要进行resample重采样处理。 几个名词: 1. 采样率 采样设备每秒抽取样本的次数 2. 音频格式及量化精度(位宽) 每种音频格式有 阅读全文
[转载]AVFormatContext结构体详细分析
2017-09-16 19:40 by jiayayao, 1895 阅读, 0 推荐, 收藏, 编辑
摘要:AVFormatContext描述一个媒体文件或媒体流的构成和基本信息。 这是FFMpeg中最为基本的一个结构,是其他所有结构的根,是一个多媒体文件或流的根本抽象。其中nb_streams和streams所表示的AVStream结构指针数组包含了所有内嵌媒体流的描述;iformat和oformat指 阅读全文
vlc源码分析(七) 调试HLS协议
2017-09-02 23:35 by jiayayao, 2975 阅读, 0 推荐, 收藏, 编辑
摘要:HTTP Live Streaming(HLS)是苹果公司提出来的流媒体传输协议。与RTP协议不同的是,HLS可以穿透某些允许HTTP协议通过的防火墙。 一、HLS播放模式 (1) 点播模式(Video on demand, VOD) 点播模式是指当前时间点可以获取到所有index文件和ts文件,二 阅读全文
视频直播时的QoS策略
2017-07-28 14:23 by jiayayao, 3691 阅读, 0 推荐, 收藏, 编辑
摘要:一、如何判断当前的网络状况 可以以发送一帧视频数据的时间为依据,判断当前网络拥塞情况。 网络中出现丢包和抖动,导致接收端接收数据超时,会激发发送端数据重传,重传机制本身挤占网络带宽,导致sendbuffer中的数据进一步发送失败,致使sendbuffer中的数据不断增多,达到上溢的警戒线,此时应用层 阅读全文
调试libRTMP代码来分析RTMP协议
2017-07-25 22:13 by jiayayao, 3900 阅读, 0 推荐, 收藏, 编辑
摘要:RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,常用在视频直播领域。RTMP协议的默认端口是1935。 学习一个协议最好的方法就是调试其通信过程,期间还可以使用wireshark抓包分析。本人在libRTMP的基础上 阅读全文