ffmpeg 视频像素尺寸转换SwsContext、sws_scale 函数解释
函数介绍
SwsContext
格式转换的上下文,下面是
初始化函数
struct SwsContext *sws_getContext(int srcW, int srcH, enum AVPixelFormat srcFormat,int dstW, int dstH, enum AVPixelFormat dstFormat,int flags, SwsFilter *srcFilter,SwsFilter *dstFilter, const double *param);
struct SwsContext *sws_getCachedContext(struct SwsContext *context,int srcW, int srcH, enum AVPixelFormat srcFormat,int dstW, int dstH, enum AVPixelFormat dstFormat,int flags, SwsFilter *srcFilter,SwsFilter *dstFilter, const double *param);
注意
1、区别:第二个会到缓冲区里面去寻找第一个参数传入的SwsContext,若后面的格式参数都一样就返回,不一样则会重新创建,当然如果传入NULL,则和第一个一样重新创建一个新的。建议在单线程单视频解码用第二个,多视频播放用第一个。而且2个函数都会有较大开销,最好只初始化一次。
2、SwsContext 初始化会有一点时间开销。会创建像素格式转化的表。
3、在指定outWidth 时候又一些坑需要注意,参考:SwsContext、sws_scale缩放失败,或者缩放后视频乱码
参数:
flag: 缩放的算法,一般选1 性能高,快速线性插值
srcFilter 过滤器
dstFilter过滤器
param 和flag使用算法相关。传入空,使用默认。
清理函数
void sws_freeContext(struct SwsContext *swsContext);
note:这里是 不是指针的指针,这里可能清理空间,引用计数没有清零,清理的时候注意。
缩放函数sws_scale
int sws_scale(struct SwsContext *c, const uint8_t *const srcSlice[],const int srcStride[], int srcSliceY, int srcSliceH,uint8_t *const dst[], const int dstStride[]);
srcSlice 对应具体数据的数组,二维数组,如果是平面存储的则有3个一维数组,如果是rgba交错的,则一个
srcStride 一行的数据大小,srcSlice 可能有三个
srcSliceY 深度,这里用不到
srcSliceH 图像高度
dst[]存储的空间,
dstStride存储的一行的大小
ffmpeg 视频像素尺寸转换SwsContext、sws_scale 函数解释相关推荐
- FFmpeg视频像素格式转换和尺寸转换
优缺点 相比openGL shader转换来说,ffmpeg转换相对简单,但是效率相对较低 函数 1> sws_getContext:获取上下文 2> sws_getCachedConte ...
- php可以控制视频的尺寸吗吗,控制视频像素尺寸这样做
revit渲染的尺寸如何精准的控制呢?大家是否有过这样的疑问呢,如果有,小编今天带着你一并解决.有一个操作是可以拖动视图大小切可调整视图大小,但并不能达到精准的控制的目的,在视频合成的时候如果两个视频 ...
- ubuntu下 ffmpeg视频编码和转换命令
ffmpeg -i Forrest_Gump_IMAX.mp4 hugefile.yuv ffmpeg -s 640x352 -i hugefile640\ x\ 352.yuv out.av ...
- FFmpeg视频解码器
本博客是摘自雷霄骅大神的课程<基于 FFmpeg + SDL 的视频播放器的制作>课程 里的内容,非常适合音视频小白入门,在这里感谢雷神的指导! 目录 视频解码知识 VC下FFmpeg开发 ...
- 【FFmpeg_SDL_MFC】1、FFMPEG视频解码器
使用ffmpeg对封装格式mp4.ts等数据进行解码,介绍解码相关流程,函数接口.数据接口等. 一.前言 1.1目录 • 视频解码知识 • VC下FFmpeg开发环境的搭建 • 示例程序运行 • FF ...
- FFmpeg学习之视频像素和尺寸转换
1. 获取像素格式转换的上下文 sws_getCachedContext 2. 像素转换 sws_scale #include <iostream> #include <thread ...
- 【专题3:电子工程师 之 上位机】 之 【44.使用ffmpeg对视频解码、视频像素和尺寸转换、重采样】
嵌入式工程师成长之路 系列文章 总目录 希望本是无所谓有,无所谓无的,这正如脚下的路,其实地上本没有路,走的人多了,也便成了路 原创不易,文章会持续更新 文章会同步到作者个人公众号上,感谢扫码关注 所 ...
- 解码(五):sws_getContext和sws_scale像素格式和尺寸转换函数详解
视频像素格式和尺寸转换 sws_getContext(像素格式转换上下文),提供了两个函数 sws_getContext像素格式上下文初始化代码演示 如下代码: //表示是视频if (cc == vc ...
- FFmpeg 像素格式转换和尺寸转换
Demo FFmpeg 可以实现像素格式转换和尺寸转换,但是性能开销非常大,对视频帧率影响比较大,实际开发中最好用 Shader来实现,FFmpeg的优势转换接口比较简单. 像素格式转换上下文 Sws ...
最新文章
- 《数学之美》第12章 有限状态机—地图与本地搜索的核心技术
- 用Windows Live Writer在51CTO写博客(2018年2月24日更新)
- 适合NetScaler AG部署的 WI 定制站点开发
- 数据分析常用功能:巧用门户制作功能,让多个报表一览无余
- 高并发用redis还是mysql_高并发架构系列:Redis缓存和MySQL数据一致性方案详解
- C# LDAP认证登录类参考
- Nodejs 安装 on centos7
- 如何进行手机web远程调试——chrome beta
- Spring Boot 2 Webflux的全局异常处理
- LaTeX报告用模板
- 结对-动漫网页设计-需求分析
- (数字ic验证)从零开始的apb_watchdog验证模块搭建(二、apb直接发送激励与寄存器模型加入)
- ROS常用局部路径规划算法比较
- 开发Python用什么工具好?
- python实现四则运算_四则运算 Python实现(杨浩政,张兆敏)
- 多点触摸:MultiPointTouchArea
- 07.保护模式下字符显示
- https协议能否让网站,优先被百度收录,个人观点
- 在非洲运营互联网系统-自建短信猫踩的坑
- 过山洞java_山洞历险Java源代码JAVA游戏源码下载