自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一个VA生的博客

在此记录程序生涯。

  • 博客(61)
  • 资源 (2)
  • 收藏
  • 关注

原创 libevent之android与鸿蒙编译过程

最近基于libevent开发了一个端侧的缓存代理库,先是基于macOS编译开发的,基本0问题,后来移植到鸿蒙与android时遇到一些编译链接问题。

2024-08-17 09:51:24 1113

原创 一个引发openssl崩溃问题案例

最近用libevent写了一个https代理功能,在调研的时候,遇到了一个项目用到了本地多个openssl库引发的ssl握手崩溃问题。

2024-07-15 16:40:48 560

原创 使用gtest做cpp的单元测试并查看代码覆盖率

由于工作需要,要使用googletest做单元测试,本文记录下搭建gtest单元测试环境,并查看代码覆盖率的方法,以备不时之需。

2024-06-15 15:11:29 1069

原创 macOS上用Qt creator编译并跑shotcut

Shotcut是一个跨平台的视频编辑软件,支持WINMACOSLINUX等平台,由于该项目的编译较为麻烦,写此文章记录完整编译构建过程,后续按此法编译,可减少走弯路,提高生产力。

2024-05-28 20:47:12 1317

原创 macOS上编译android的ffmpeg及ffmpeg.c

前段时间介绍过使用xcode和qt creator编译调试ffmepg.c,运行平台是在macOS上,本文拟介绍下android平台如何用NDK编译链编译ffmepg库并使用。macOS上使用qt creator编译调试ffmpeg.cmacOS上将ffmpeg.c编译成Framework其一,分别介绍使用GCC和CLang编译器来编译ffmpeg库的方法;其二,介绍如何将ffmpeg的多个so库打包成1个so库之法;

2024-05-27 16:41:26 980

原创 IJKPLAYER误配nobuffer选项增加首开时间案例

在使用IJKPLAYER二开时,为了降低直播时延,使能了的选项,该选项也是所支持的。自测发现,该选项对直播时延的确有一定帮助,但会增加首开时间。本文记录下此次踩坑经历。

2024-05-16 23:54:40 879

原创 macOS上使用qt creator编译调试ffmpeg.c

上文macOS上将ffmpeg.c编译成Framework介绍了使用xocde将ffmpeg.c编译成Framework的方法,这里列举另外一种办法,就是用qt creator来完成这件事情。

2024-05-14 12:12:42 783

原创 macOS上将ffmpeg.c编译成Framework

本文介绍下在macOS上将ffmpeg的目录下的程序,也就是ffmpeg的命令行程序,编译成的方法。编译成.a或.dylib亦是类似。

2024-05-11 11:11:17 874

原创 IJKPLAYER源码分析-总体概述

pipeline是在分析了软硬解及跨平台视频decoder的创建、配置及初始化与音频的跨平台输出共性,从而抽象出来的接口;pipeline定义了配置、初始化和创建视频decoder的接口(包括FFmpeg软解及对应平台硬解decoder),及创建SDL_Aout实例的接口;音频decoder的创建、配置及初始化,则是在SDL_Aout接口里定义;

2024-04-15 11:19:19 1057

原创 IJKPLAYER源码分析-iOS端显示

OpenGL ES 通过 CAEAGLLayer 与 Core Animation 连接,CAEAGLLayer 是一种特殊类型的 Core Animation 图层,它的内容来自 OpenGL ES 的 RenderBuffer,Core Animation 将 RenderBuffer 的内容与其他图层合成,并在屏幕上显示生成的图像。所以,videotoolbox硬解后的像素数据来源也清楚了,来自AVFrame的opaque,实际是CVPixelBuffer。iOS端显示的主函数,是在iOS端。

2024-04-06 15:18:25 325

原创 IJKPLAYER源码分析-Android端显示

上文分析了OpenGL ES渲染的实现。本文边可以分析video画面是如何在Android端窗口上显示的了。

2024-04-06 15:17:54 225

原创 IJKPLAYER源码分析-OpenGL ES渲染

提示:阅读本文需要有一定的OpenGL shader编程基础。

2024-04-06 15:16:29 342

原创 IJKPLAYER源码分析-AudioQueue播放

IJKPLAYER实现了AudioQueue和AudioUnit播放PCM音频的功能,但当前使用的是AudioQueue来播放PCM音频。因此,本文来只介绍AudioQueue播放PCM的实现。关于AudioQueue官方文档,请参见。

2024-04-06 15:14:37 169

原创 IJKPLAYER源码分析-OpenSL ES播放

与IJKPLAYER处理AudioTrack播放类似,OpenSL ES的接入需要满足SDL_Aout的接口规范,所不同的是OpenSL ES播放是在native完成的,调用的是NDK接口OpenSL ES的播放能力。关于OpenSL ES的详细介绍,请参考官方文档一文。Pipeline及SDL_Aout结构体及相关创建,与AudioTrack一致,请参考前文。

2024-04-06 15:14:02 615

原创 IJKPLAYER源码分析-AudioTrack播放

AudioTrack是Android SDK所提供的播放PCM音频的技术,IJKPLAYER对此使用的以native层反射到Java层的播放能力。

2024-04-06 15:13:27 350

原创 IJKPLAYER源码分析-videotoolbox硬解

是一个底层框架,提供对硬件编码器和解码器的直接访问。它提供视频压缩和解压缩服务,以及存储在CoreVideo像素缓冲区中的光栅图像格式之间的转换服务。这些服务以会话对象(压缩、解压缩和像素传输)的形式提供,它们作为核心基础(CF)类型出售。不需要直接访问硬件编码器和解码器的应用程序不需要直接使用VideoToolbox。详情可参考其开发文档videotoolbox开发文档。输入的是,输出的是。CVPixelBuffer再与OpenGL ES结合,将像素数据喂给OpenGL ES进行render。

2024-04-06 15:12:32 345

原创 IJKPLAYER源码分析-mediacodec硬解

mediacodec技术是Android系统音视频硬编/硬解的一套标准,各硬件厂商加以实现,常和MediaDrmImageSurfaceAudioTrack一起使用。请参考MEDIACODEC开发文档。由上图了解到,一言以蔽之,一端输入、一端输出,input输入的数据提交给codec异步处理后,由output输出再归还给codec。

2024-04-06 15:11:44 835

原创 macOS上编译obs-studio

最近基于obs的1个二开程序,需要移植到macOS平台上,由于遇到些问题,本文记录下如何在macOS上配置&编译&运行obs程序完整过程。

2023-08-22 17:25:00 1958

原创 IJKPLAYER源码分析-主结构体

本文来介绍下IJKPLAYER的几个主要结构体。主要有以下几个:IjkMediaPlayer:是IJKPLAYER的外围结构体,最接近于caller层,主要包装了FFPlayer结构;FFPlayer:这个代表的是IJKPLAYER播放器内核的结构;VideoState:这个是FFPLAY的上下文,被IJKPLAYER包装在了FFPlayer中;

2023-05-03 11:03:16 522 1

原创 IJKPLAYER源码分析-重要字段

本文来介绍下IJKPLAYER的几个重要字段,对这些个字段的理解,将更有助于理解IJKPLAYER播放器内核。

2023-05-02 19:25:27 1151 1

原创 IJKPLAYER源码分析-点播原理

本文对IJKPLAYER的点播原理做下分析,主要涉及到拖动播放、精准SEEK、暂停和恢复播放等几个常用操作。下文分析均是在iOS端,Android端也类似,只是多了JNI层调用。

2023-04-23 21:10:20 1221

原创 IJKPLAYER源码分析-音视频同步

本文来介绍下IJKPLAYER的音视频同步策略及方法。

2023-04-23 17:41:34 857

原创 IJKPLAYER源码分析-常用API

本文简要介绍IJKPLAYER的几个关键API,站在使用的角度,来审视其内部运作原理。这里以iOS端直播API调用切入。

2023-04-20 17:01:02 658

原创 IJKPLAYER源码分析-主要队列

对IJKPLAYER播放器内核几个关键的队列的理解,将有助于掌控全局。单链表环形队列。

2023-04-20 11:26:06 648

原创 IJKPLAYER源码分析-软解主结构

本文主要分析IJKPLAYER源码软解主流程,硬解将另起一篇分析。

2023-04-18 17:04:31 488

原创 FFMPEG将MP4转HLS DTS不严格递增 解决之法

可以看到第3个条件要满足的话,要么。

2023-04-11 11:06:28 590

原创 OBS+SRS+FFPLAY RTMP直播低延迟秒开方案

本文拟用OBS + SRS + FFPLAY方案,实现RTMP推拉流低延迟直播,延迟在1s内。 本文推流视频,所用音视频参数配置如下:方案OBS OBS RTMP推流时,在 设置 => 输出 => 输出模式 => 高级 => 串流 => 微调(Tune) => zerolatency,将x264编码器设置为zerolatency,其他参数详见: SRS的低延迟方案推荐配置如下:FFPLAY 播放器端减少缓存,降低播放延迟:

2023-04-02 09:33:39 1292

原创 iOS端引入SJMediaCacheServer缓存库到ijkplayer

前两天把android端的播放缓存搞定了,这两天开始着手搞iOS端的播放缓存。由于要支持,github上可供选择的不多,KTVHttpCache stars较多,但仅支持对mp4的本地缓存,这里选择基于KTVHttpCache二开的SJMediaCacheServer作为hls的缓存库。项目计划是将SJMediaCacheServer作为.a文件或framework引入到ijkplayer中,本文介绍编译链接使用SJMediaCacheServer的方法。

2023-03-31 12:29:13 578

原创 SRS5.0之WebRTC推流流程分析

上文简要分析了SRS之WebRTC的播放流程,本文来分析WebRTC的推流流程。

2023-03-29 20:00:34 990

原创 FFMPEG转码不同分辨率视频IDR帧对齐

最近在做hls码率自适应时,先用ffmpeg转码mp4为不同分辨率的mp4,然后ijkplayer播放时切换分辨率出现画面不平滑的现象。

2023-03-29 19:12:52 535

原创 srs5.0之webrtc播放流程分析

clone srs源码: 配置 conf/rtmp2rtc.conf文件,使能webrtc特性并配置好candidate: 特别指出candidate配置,也可以指定本机ip: 启动srs程序: 可以看到,srs启动成功: SRS实现了RTC的H5播放器页面,启动成功SRS之后,在浏览器地址栏键入: 可以看到, 成功打开RTC播放页面。至此,环境配置完毕。 首先用wireshark抓包分析srs的webrtc的信令流程:

2023-03-24 17:45:00 1315 3

原创 android端aar包依赖本地aar包编译问题

在移动端对ijkplayer二开时,不可避免的要接触学习android和iOS相关技术,不然连最起码的编译构建,都会搞不起来。由于要在ijkplayer播放器上添加对的支持,github上调研,已有相关开源库,拟选择JeffVideoCache作为缓存方案,如果有什么问题,再基于此库修改。该缓存方案,项目上是打算维护一个gitlab仓库,基于它做二开,最终提供一个aar包,给ijkplayer,然后ijkplayer再打一个自己的aar包,给到flutter使用。

2023-03-24 11:19:42 403

原创 基于AndroidVideoCache开发的JeffVideoCache打release包报错

由于需要在Android端增加hls的,从github上调研来看,AndroidVideoCache开发仅支持对mp4的本地缓存,因此只有弃用。经过一番对比,发现开源android端缓存库支持hls缓存,并且是基于AndroidVideoCache开发的,因此,拟将其引用到ijkplayer的hls点播项目中。

2023-03-22 15:26:58 257

原创 升级python版本引发yum失效的血案

今日上午升级python3误操作,导致python和yum均无法使用,网上包括Google找了一堆资料,下午才得以解决。耗费了大半天时间,特此记录解决方法。

2023-03-20 17:34:21 619

原创 win上编译openssl并配置ffmpeg

前两天在win上编译了ffmpeg,引入了外部库libx264/libfdk-aac,今日测试https协议时发现不奏效,所以需要引入openssl库,然后重新编译ffmpeg。在win上编译openssl库遇到不少问题,折腾老半天才编译通过,因而此处记录下。本文所使用的openssl版本是编译环境。

2023-03-16 16:26:50 676

原创 Centos7上cmake链接ffmpeg库

由于在WIN上基于Qt Creator编译链接成功了ffmpeg相关依赖库,项目上需要移植到Linux平台,但在链接ffmpeg库时遇到一些利链接错误。此处特地记录,备忘。

2023-03-15 13:37:55 297

原创 ffmpeg用examples转码mp4视频duration加倍

最近在使用ijkplayer开发播放器时,发现部分视频下载到本地后,拖动播放出画面的时间较长,大概1-2s,查明原因是此类mp4文件的视频gop较大,通常gop>=250,帧率25fps的话,即每隔10s才1个IDR帧。在用ffmpeg开发转码mp4功能时,用ffprobe和mediainfo工具查看,转码后的mp4文件video的duration加倍,而video的fps减半。因此,拟用ffmpeg开发一个转码工具,将mp4文件的gop缩短,输出转码后的mp4文件。,则会丢弃解码后的音视频帧。

2023-03-15 10:20:03 591

原创 基于CMake的Qt程序设置app图标之法

最近开发一个Qt程序,在程序发布时需要,拟设置app的桌面图标以及win下的状态栏图标。这里记录设置办法,以备不时之需。,提取码:0314。下载后使用该软件完成ICO文件的制作。随后,在Qt项目中,添加该ICO文件,将其放在。可以看到,任务栏和app程序都有了Qt程序图标。此处分享一个ico制作软件,

2023-03-14 19:55:21 2782

原创 Qt程序启动时报错0xc000007b解决办法

可以看到该exe所依赖的Qt几个dll库是x86架构,copy对应x64的dll即可,同时将ffmpeg所依赖的dll库也一并copy自exe所在目录,而后程序正常运行。对Qt程序开发有经验的同学,大致知道可能是x64程序依赖了x86的库所致,此处介绍使用。最近用ffmpeg release/4.1分支写了一个Qt程序,用以将。,gui可一键操作。Qt程序在即将发布时,用。

2023-03-14 11:31:04 1653 2

原创 ffmpeg编码缺省用sei负载x264 version信息

最近用ffmpeg对mp4文件进行转码开发,无论是用ffmpeg命令,亦或是ffmpeg所提供的api,转码后的mp4文件,通过系列工具查看,在。但是,如果携带了x264的版本信息,对于mp4的首开延迟有一定影响,因为加载了多余的数据。此处需要优化掉。

2023-02-28 12:08:56 332

ffmpeg mp4 => hls + tls

本工具使用ffmpeg将mp4切片hls+tls。 1)输入源是mp4,可以是多个; 2)输出是hls + tls,即加密的hls; 3)将mp4转码,缩短gop大小至25,即1s一个IDR帧; 4)并发转码&切片;

2023-03-17

innosetup安装包制作工具

本工具可以用来对Qt/Mfc/DirectUI开发的界面程序,制作setup.exe安装包,然后对外发布只需要发布setup.exe安装包即可,然后用户可一键安装。

2023-03-15

HLS-SLICE-TOOL

本工具是用Qt开发的,用来对mp4进行转码,并切割为hls文件,可一键操作。

2023-03-15

VA_X_Setup2451_0.exe

支持VS2022、VS2019、VS2017等及以下的番茄插件。

2022-07-11

VS2019 16的ASAN常用选项

Goolge ASAN在VS2019 16版本以后得以支持,可以用来定位开发时遇到的大多内存问题,诸如栈、堆、全局变量越界、alloc-dealloc-mismatch、allocation-size-too-big、new-delete-type-mismatch、heap-use-after-free、stack-use-after-scope、stack-use-after-return、use-after-free、use-after-return、dynamic initialization。本文档提供的是基于VS2019的ASAN常用选项。

2022-07-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除