音视频开发
文章平均质量分 84
开源库ijkplayer
Abe_liu
这个作者很懒,什么都没留下…
展开
-
基于ijkplayer 添加RTMPS 协议支持
基于ijkplayer 添加RTMPS 协议支持最近有一个推流到Facebook 的需求,翻过了墙之后发现Facebook 和youtube 的直播协议都是基于RTMPS 的,这个和国内bilibili 等直播网站提供的RTMP 协议是不一致的。于是开始了新协议支持的探索,目前RTMPS 协议已完成支持,总结如下,以便将来举一反三。探索在ijkplayer 中,ffmpeg 协议支持都是通过进行裁剪来进行支持的。从./config/module.sh 中我们可以看到当前ijkplayer 对协议的支原创 2020-12-08 14:52:06 · 800 阅读 · 3 评论 -
H264 SPS/PPS 分析
9816B H264文件分析H264文件对应的SPS参数如下图:原创 2020-09-19 17:16:44 · 2773 阅读 · 0 评论 -
使用libavfilter 为实时流添加滤波
使用libavfilter 为实时流添加滤镜添加滤镜一般是使用FFMpeg进行滤镜添加,在ffmpeg 中提供了libavfiler库来完成该操作。而添加滤镜的基本操作如下图(引用自雷神):从上图我们可以清楚的看到,滤镜的加载和解码部分几乎是完全独立的,现在我大致的用文字描述一下步骤。注册滤镜信息。创建滤波器主结构体,用于整合所有的滤波过程。创建滤波器输入、输出或者其他复杂滤波。解析字符串,并构建该字符串所描述的滤波图提交滤波器接下来上代码: // 1.初始化滤波器结构原创 2020-08-08 17:01:43 · 575 阅读 · 0 评论 -
iOS软解码总结
文章目录iOS 软解码总结读取数据解码数据初始化`AVCodecContext`寻找I 帧解码数据iOS 软解码总结在iOS 上,开发者可通过VideoToolbox实现硬解码,其具体的步骤可见iOS 硬解码总结。本文讲的是使用FFMpeg 进行视频流的软解码过程,本文的demo在github上可见。为方便理解,我把软解码整个过程分为几个步骤,第一是读取,第二是解码,第三是渲染。读取数据读取数据我将其分为如下几个步骤:注册编解码器解析地址/文件,得到AVFormatContext解析AVF原创 2020-08-04 18:03:22 · 648 阅读 · 0 评论 -
使用FFMpeg实现实时推流功能
在音视频开发中,FFMpeg 就是全能型工具的代名词。要实现该功能,我建议先熟悉一下通过FFMpeg实现本地文件推流功能,地址见:最简单的基于FFMpeg 的推流功能本文主要为改装成实时流推流功能提供思路。推流操作从乎用户层面可简单分为以下几个步骤:1.开始推流2.推流中3.结束推流在开始推流的时候,关键的几个事情就是1.标记RTMP 推流状态为开始2.使用avformat_alloc_output_context2 输出FLV 格式数据到指定的地址3.使用AVIO_OPEN和RTM原创 2020-07-19 17:45:18 · 2943 阅读 · 0 评论 -
H264 封装格式解析
H264 封装格式解析H264 有两种封装格式,分别是:annexb 格式AVCC 格式Annexb 格式annexb 有0x00000001 或者 0x000001 开头,作为每一个NALU单元的分割标志,也常常被称为startCode.在H264 中 ,数据格式有指定的值:0x67 = SPS,0x68 = PPS,0x66 = SEI,0x65 = IDR,用在实时流传输AVCC视频开始有 SPS/PPS每个NALU 前有存储NALU 的长度使用在MP4原创 2020-07-18 13:45:38 · 742 阅读 · 0 评论 -
FFMpeg 常用命令
H264 转 MP4ffmpeg -i 1test.h264 -vcodec copy -f mp4 test.mp4从MP4 中提取H264ffmpeg -i 2018.mp4 -codec copy -bsf: h264_mp4toannexb -f h264 tmp.264将mp4 转为flv文件格式ffmpeg -i source.mp4 -c:v libx264 -ar 22050 -crf 28 destinationfile.flv...原创 2020-07-18 11:30:23 · 550 阅读 · 0 评论 -
iOS ijkplayer 学习
文章目录iOS ijkplayer 源码学习一、初始化流程二、核心代码2.1 数据读取2.2 音视频解码2.2.1 视频解码方式的选择2.2.2 音视频解码iOS ijkplayer 源码学习ijkplayer 在iOS 中的调用主要是通过其IJKFFMoviePlayerController 控制器来完成,其中设置SDLView等界面适配可见具体的参数设定。本文章主要是用于将自己所学习到的知...原创 2019-09-07 15:45:00 · 837 阅读 · 0 评论 -
雷神FFMpeg源码学习笔记
雷神FFMpeg源码学习笔记文章目录雷神FFMpeg源码学习笔记读取编码并依据编码初始化内容结构每一帧的视频解码处理读取编码并依据编码初始化内容结构在开始编解码视频的时候首先第一步需要注册一个编解码器 :av_register_all();avformat_open_input来打开这个文件并给AVformartcontext赋值 ,在其中会去查找当前缓存文件的格式 avformat_o...原创 2019-01-03 17:24:32 · 1096 阅读 · 0 评论 -
FFmpeg 解码本地视频并实现播放功能
本文写于17年,FFMpeg 版本是3.0,demo在我的github可见:FFmpeg_decoderav_registerall();avformart_network_init();AVDictionary *opts = NULL;av_dict_set(&opts,"rtsp_transport","udp",0);av_dict_set(&opts,"max_...原创 2019-01-03 17:14:29 · 5248 阅读 · 0 评论 -
深入剖析ijkplayer解码过程
方法汇总1.alloc 操作:初始化ffmpeg的配置参数,创建渲染所用的EGLView,获取音频播放权限,注册前后台切换通知等。2.prepareToPlay操作:创建音频输出,调用stream_open方法3.stream_open 操作: 创建音视频队列,创建read_thread线程至此,后续的所以音视频相关操作都在read_thread方法中进行.4.read_thread操作: 在读取方法中,进行了基本的ffmpeg 解码操作。avformat_open_input 初始化avfo原创 2020-08-04 14:50:03 · 2206 阅读 · 0 评论 -
基于ijkplayer在FFMpeg 中增加丢包数显示功能
文章目录基于ijkplayer在FFMpeg 中增加丢包数显示功能基于ijkplayer在FFMpeg 中增加丢包数显示功能目的: 在我们目前的应用场景中,使用ijkplayer 来进行RTSP 的拉流解码播放。但是我们设备端在传输层中并没有部署RTCP 的控制协议实现,所以无法对数据传输的丢包数进行反向收集,那就需要APP端对数据长度进行校验。方案:因为我们使用RTSP 数据传输协议,在ijkplayer 中,数据处理完全是交由FFMpeg来进行的,对上层和ijkplayer的SDK 层而言,收原创 2020-07-17 23:22:33 · 425 阅读 · 0 评论