ffmpeg - 如何计算 linesize 的填充?
问题描述
我是一个学习ffmpeg的新手,我在互联网上发现的更新文档太少。
当我写这个时:
av_image_fill_arrays(frame2->data, frame2->linesize, (const uint8_t *)NULL,
frame->format, screenWidth, screenHeight,
32);
sws_scale(videoScaleCtx, (const uint8_t **) frame->data,
frame->linesize, 0,
frame->height,
dst, frame2->linesize);
它只会在底部显示一个黑屏,顶部同时播放 4 个相同的小屏幕。我理解它的填充让我很困惑,即使我的屏幕宽度为 2280,它不应该使用填充,因为我有 32 位 cpu(frame2->linesize 是 2304)?
无论如何,我在缩放之前拼命使用它:
frame2->linesize[0] *= 4;
而这一次一切看起来都很正常!右边的填充是现在的 4 倍,这是不对的?
虽然 sws_scale 做了两件事:缩放图片并将 YUV420P 转换为 RGBA,但由于输出图片不应该有填充,des stride 应该只是屏幕宽度 * 4 = 9120,但现在是 72 * 4 * 32 = 9216,怎么来的?
解决方案
推荐阅读
- regex - 正则表达式 POSIX - 我如何查找行首是否包含来自行中稍后出现的单词中的单词
- css - 使用固定附件且边距不起作用时,标题图像位于导航栏后面
- html - 我如何嵌入非交互式的 Youtube/vimeo 视频(没有任何控件)
- wix - Wix 安装程序,Windows 控制面板显示 2 个条目,卸载显示为灰色
- c# - 如何在 web api 或库中包装第三方对象?
- javascript - 捕获在 jQuery 回调函数中匹配的类
- android - 如何在 android studio 中添加预建的 *.so 库?
- typescript - 使用 Typescript 时如何正确注册导入的动态组件?
- html - 如何减少html中元素之间的空间?
- python - 如何将 np.ceil 应用于结构化的 numpy 数组