php将视频流逐帧转图片,ffmpeg sdk解码视频帧后保存成BMP或JPG的方法
ffmpeg解码视频的例子可以看官方自带的encode_decode.c。
官方解码保存成ppm,这里接下来保存成BMP或JPG。
原理:
保存BMP是解码成功后,从YUV420转成RGB24,然后构造文件头,BITMAPINFOHEADER,再写入图片数据。
保存JPG是解码成功后,得到的是YUV420, 然后再重编码成JPG (这个重编码过程几乎不占CPU资源,可以接受)。
(以下代码只是演示怎么处理,不一定能直接运行。感觉渔比鱼更重要,学会解决思路比直接抄代码更有利于提高)
....
//之前略,从解码成功开始,之前的见encode_decode。
AVFrame *decode_picture;
decode_picture= avcodec_alloc_frame();//av_frame_alloc();
int len = avcodec_decode_video2(decode_c, decode_picture, &got_picture, &pkt);
if (got_picture)
{
//解码成功,开始保存,下面两个分支:
1 saveBMP()
2 saveJPG
}
1 save BMP:
首先定义两个结构体,从MSDN里抄过来就行。(当前运行环境是Linux,如果是VC开发,系统自带这两个结构体)
typedef struct tagBITMAPFILEHEADER {
WORD bfType;<
php将视频流逐帧转图片,ffmpeg sdk解码视频帧后保存成BMP或JPG的方法相关推荐
- 用FFMPEG SDK进行视频转码压缩时解决音视频不同步问题的方法(转) PTS DTS
用FFMPEG SDK进行视频转码压缩的时候,转码成功后去看视频的内容,发现音视频是不同步的.这个的确是一个恼火的事情.我在用FFMPEG SDK做h264格式的FLV文件编码Filter的时候就碰到 ...
- Android之如何分析手机系统相册图片和视频删除后保存的位置然后恢复文件,目前已经适配小米、OPPO、VIVO、一加、努比亚、魅族等手机。
1 需求 需要获取各种型号手机系统相册图片和视频删除后保存的位置 2 分析 1)我们可以通过在sdcard目录下进行相关查找文件夹关键字,对 "cycle"或者"tras ...
- Android之如何分析手机系统相册图片和视频删除后保存的位置
1 需求 需要获取各种型号手机系统相册图片和视频删除后保存的位置 2 分析 1)我们可以通过在sdcard目录下进行相关查找文件夹关键字,对 "cycle"或者"tras ...
- FFmpeg[4] - 将视频文件转码成FLV格式(FFmpeg转封装1)
目录 前言 正文 总结 <FFmpeg实用技巧>系列-总览 前言 今天我们来看看FFmpeg如何将一个视频文件转码成FLV格式. 正文 FLV封装格式支持常见的视频H264(AVC).H2 ...
- Windows下 ffmpeg + labelImg 提取视频帧 得到图片集 并 标注图片 来 构造数据集
构造数据集的流程 视频文件 >> ffmpeg处理 >> 图片集 >> labelImg进行标注 >> 标注好的数据集 准备ffmpeg ...
- FFmpeg解码视频帧为jpg图片保存到本地
之前遇到一个需求是将视频一秒一秒解码成一帧一帧的图片,用户滑动选择时间节点(微信朋友圈发10秒视频的编辑界面).开始我是用的MediaMetadataRetriever类来获取图片,但是对于分辨率比较 ...
- php截取视频第一帧为图片,把视频变成一帧一帧的图片(ae怎么把视频变成单帧) 视频截图视频画面每帧图片截取...
AE怎么把视频变成单帧?这是小编今天要与大家讨论及解决的一个问题.在视频后期处理中,有时为实现某个场景效果,需要把视频中的某帧变成静态帧图片:或者需要视频截图视频画面每帧图片截取出来,把视频变成一帧一 ...
- 352万帧标注图片,1400个视频,亮风台推最大单目标跟踪数据集
CVPR 2019期间,专注于AR技术,整合软硬件的人工智能公司亮风台公开大规模单目标跟踪高质量数据集LaSOT,包含超过352万帧手工标注的图片和1400个视频,这也是目前为止最大的拥有密集标注的单 ...
- 将视频分成一帧一帧python_python ffmpeg任意提取视频帧的方法
环境准备 1.安装 FFmpeg 音/视频工具 FFmpeg 简易安装文档 2.安装 ffmpeg-python pip3 install ffmpeg-python 3.[可选]安装 opencv- ...
最新文章
- c++ class struct同名_第二课C到C++的关系
- 我们为什么需要工作流
- php批量修改标题,帝国CMS批量修改信息标题的方法
- C语言学习之分别用if和switch编程,输入0-100分成绩,输出相应的成绩档次。
- matlab 处理dat文件画图,matlab_DAT_processing matlab处理dat文件并进行绘图 - 下载 - 搜珍网...
- clion 引用dll_用CLion实现本地方法并给java调用
- python 声音合成_使用python进行声音生成/合成?
- Gaze Estimation学习笔记(1)-Appearance-Based Gaze Estimation in the Wild
- 记录ubuntu18.04安装QQ过程
- API实现快速转换简体字与繁体字
- Visual Paradigm 如何清除系统代理设置
- Fuz OJ 2116 买糖果
- 百度网盘PC端缓存文件夹
- 鼓励自己最有效的10个方法
- 智能微模块一体化机柜
- 不学编程 别搞计算机了
- CodeForces - 766E (树形dp+二进制)
- 计算机毕业设计ssm图书出版系统0fes8系统+程序+源码+lw+远程部署
- 汽车车内CAN总线 网络安全分析及防御措施
- unity3D快捷键大全