ffmpeg
文章平均质量分 52
jianminfly
这个作者很懒,什么都没留下…
展开
-
ffmpeg文件名含特殊字符引起的问题
一、背景一个png图片,文件名为 “%xx{xx.png”这种形式,在ffmpeg的avformat_find_stream_info执行后,没有报错,但是AVFormat对象中没有获取到文件的宽高信息二、分析1.用av_log_set_callback设置日志回调,打印出日志信息static void log_callback_report(void* ptr, int level, const char* fmt, va_list vl){ va_list vl2; char line[1原创 2021-10-09 14:08:28 · 1854 阅读 · 1 评论 -
AVFrame内部yuv数据原画质存储成图片
一、背景排查一个问题,需要确定在哪个过程画质变模糊了,因此需要抽取出数据存成图片查看清晰度二、方法BYTE* rgbdstp = new BYTE[frame->linesize[0] * frame->height * 4];memset(rgbdstp, 0x00, frame->linesize[0] * frame->height * 4);libyuv::I420ToARGB(frame->data[0], frame->linesize[0], fr原创 2021-09-14 20:30:31 · 713 阅读 · 0 评论 -
AVI文件花屏问题分析和解决
一、背景用一段采集到的桌面数据流进行编码,复用后生成AVI文件,结果AVI文件播放过程中会有花屏现象。环境:ffmpeg二次开发环境二、分析1.首先是想办法把花屏的问题复现出来,但是尝试了很多参数组合,经过多轮测试,依然没有复现出来,直到最后找到了一个好方法:采集带有复杂内容的Excel表格的桌面内容。因为Excel表格中但凡有一点花屏都能很容易看出来2.分析花屏的原因,这个问题在出现的时候非常没有头绪,无法直接在代码中分析到,于是到网上搜罗了很多关于花屏问题解决的文章,然后发现了下面这个文章h原创 2021-09-08 17:06:35 · 615 阅读 · 0 评论 -
恒定帧率30帧以上录制掉帧问题分析
一、背景二、分析经测试,ffmpeg动态帧率转恒定帧率不会有问题,因此,可能可以把ffmpeg的插帧逻辑移植过来。1、 ffmpeg补帧逻辑获取解码后的pkt -----> 拿到pkt_duration和编码时间差计算出nb_frames -------->循环nb_frames次对当前帧重复编码2、录制补帧逻辑3、录制采集逻辑start—>获取绝对时间—>gdi截图—>设置pts—>frame入队—>sleep()—>startgid截图过原创 2021-08-23 16:29:35 · 1644 阅读 · 0 评论 -
一个音画不同步的问题分析
一、背景某个视频播放过程中出现音频超前播放,而且越播放越不同步。视频文件的参数如下:项目采用ffms2+avisynth的框架二、分析过程(ffms2)音频比视频短1、 既然是音频播放超前,那么要么是画面播放太慢了,要么是音频播快了。首先分析了视频播放流程,确定了和视频丢帧没关系,即便丢帧再快,视频也都跟不上音频2、接下来就重点分析音频了,用ffprobe从视频文件中抓取到音频包,大概内容如下3、从2中可以看到,每个音频包的采样点个数,即nb_samples都是1024,pkt_durati原创 2021-08-23 14:11:03 · 2976 阅读 · 0 评论 -
libaom解码时崩溃的问题分析
一、背景一个libaom编码格式视频令播放器在解码阶段崩溃,起初以为是该视频B帧过多导致CPU运算量太大,进而导致崩溃,后来发现该格式并不像h264一样存在I P B帧,于是进行了进一步分析。。。播放器依赖库:ffms2.lib avisynth.lib ffmpeg相关lib二、分析过程a. 因为崩溃源头在ffms2库中的解码过程中,所以第一反应是该开源库未同步到最新版导致b. 编写测试demo,分别测试当前的ffms2库和最新版的库,发现在解码该视频时均会在同一位置崩溃c. 在ff原创 2021-06-21 21:30:23 · 360 阅读 · 0 评论 -
一次ffmpeg -c copy 在avformat_write_header函数处报错:Could not find tag for codec rawvideo in stream #0的原因分析
一、背景在一次处理视频转换的时候使用了copy模式,然后在avformat_write_header函数处报错:Couldnotfindtagforcodecrawvideoinstream#0二、分析1.首先avformat_write_header调用如下 ret = avformat_write_header(of->ctx, &of->opts); if (ret < 0) { av_log(NULL, AV_...原创 2021-04-23 14:00:39 · 5538 阅读 · 4 评论 -
qsv,nivdia解码花屏研究
一、问题在英特尔显卡和英伟达显卡环境下使用ffmpeg命令行的方式对h265 4k视频进行缩放转码操作,出现花屏现象。二、过程1.经过多轮对比测试,把问题锁定在ffmpeg使用硬件加速解码的过程2.对硬件解码进行分析,有几个猜想a.显存不够导致解码花屏b.分辨率太高导致解码花屏c.用来测试的英特尔显卡和英伟达显卡本身对H265解码支持不好3.对以上几个猜想做了测试a.在一台带有15G显存的ECS上做了测试,结果及结论如下H265格式 硬解+硬编:花屏,GPU占用率很低。说明花屏问原创 2021-01-23 11:35:48 · 1263 阅读 · 0 评论 -
基于ffmpeg进行二次开发中的一些概念整理
1. av_rescale_q(a,b,c)的作用是,把时间戳从一个时基调整到另外一个时基时候用的函数。其中,a 表式要换算的值;b 表式原来的时间基;c表式要转换的时间基。其计算公式为 a * b / c2. refcounted_frames设置为1的时候表示解码出来的frames引用永久有效,需要手动释放av_opt_set_int(avctx, "refcounted_frames", 1, 0);等同于avctx->refcounted_frames = 1;...原创 2021-01-15 09:54:59 · 608 阅读 · 0 评论 -
ffmpeg的一些用法,不定期更新
ffmpeg的一些用法,不定期更新宽度占一半,贴图ffmpeg.exe -i .\7200.mp4 -i .\640.png -filter_complex "[1]scale=360:-2[a],[0][a]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" -y out7200.mp4FFmpeg drawtext添加文字和阴影样式d...原创 2020-03-25 10:55:34 · 2501 阅读 · 0 评论