草庐IT

FFmpeg进阶:视频滤镜大全

码农飞飞 2024-03-20 原文

在做视频特效的时候,很多特效其实不用自己写,FFmpeg的视频滤镜里面提供了很丰富的滤镜特效。这里翻译了一下FFmpeg官方文档的所有视频滤镜的介绍,供大家参考。由于很多地方概念比较生疏,翻译的可能不恰当,欢迎反馈修改意见。

滤镜名称滤镜介绍
addroi在视频帧中标记感兴趣的区域
alphaextract从输入中提取 alpha 分量作为灰度视频。
alphamerge用第二个输入的灰度值添加或替换主输入的 alpha 分量。
amplify放大当前像素与同一像素位置的相邻帧的像素之间的差异
ass与字幕过滤器相同,它仅限于 ASS字幕文件
atadenoise将自适应时间平均降噪器应用于视频输入
avgblur应用平衡模糊滤镜
backgroundkey将静态背景变为透明
bbox计算输入帧亮度平面中非黑色像素的边界框
bilateral应用双边滤波器,空间平滑,同时保留边缘
bilateral_cudaCUDA 加速双边滤波器,一种边缘保持滤波器
bitplanenoise显示和测量位平面噪声
blackdetect检测全黑的视频间隔。可用于检测章节转换、广告或无效录音。
blackframe检测全黑的帧。可用于检测章节转换或广告。
输出行由检测到的帧的帧号、黑度百分比、文件中的位置和时间戳组成。
blend将两个视频帧相互混合
blockdetect在不改变输入帧的情况下确定帧的块度
blurdetect在不改变输入帧的情况下确定帧的模糊度
bm3d使用块匹配 3D 算法去噪帧
boxblur矩形模糊算法
bwdif对输入视频进行去隔行扫描
cas将对比度自适应锐化滤镜应用于视频流
chromahold删除除某些颜色之外的所有颜色的所有颜色信息
chromakeyYUV色彩空间色彩/色度键控
chromakey_cudaCUDA加速 YUV 颜色空间颜色/色度键控
chromanr减少色度噪音
chromashift水平/垂直移动色度像素
ciescope显示 CIE 颜色图,其上覆盖有像素
codecview可视化某些编解码器导出的信息
colorbalance修改输入帧的原色(红色、绿色和蓝色)的强度
colorcontrast调整 RGB 组件之间的颜色对比度
colorcorrect有选择地为黑色和白色调整颜色白平衡。此滤镜在 YUV 颜色空间中运行
colorchannelmixer通过重新混合颜色通道来调整视频输入帧
colorize在视频流上叠加纯色
colorkeyRGB 颜色空间颜色键控
colorhold删除所有 RGB 颜色的所有颜色信息,除了某些颜色
colorlevels使用级别调整视频输入帧
colormap将自定义颜色图应用于视频流
colormatrix转换颜色矩阵
colorspace转换色彩空间、传输特性或原色。输入视频需要有一个均匀的大小
colorspace_cuda色彩空间过滤器的CUDA加速实现
colortemperature调整视频中的色温以模拟环境色温的变化
convolution应用3x3、5x5、7x7或水平/垂直最多 49 个元素的卷积
convolve使用第二个流作为脉冲在频域中应用视频流的2D卷积
copy将输入视频源原封不动地复制到输出。这主要用于测试目的
coreimage在OSX上使用Apple的CoreImage API 在 GPU 上进行视频过滤
cover_rect覆盖一个矩形物体
crop将输入视频裁剪为给定尺寸
cropdetect自动检测裁剪尺寸
cue延迟视频过滤,直到给定的挂钟时间戳。
curves使用曲线应用颜色调整
datascope视频数据分析过滤器
dblur应用方向模糊滤镜
dctdnoiz使用 2D DCT(频域滤波)去噪帧
deband从输入视频中删除条带伪影。它通过用参考像素的平均值替换带状像素来工作
deblock从输入视频中去除块状伪影
decimate定期丢弃重复的帧
deconvolve使用第二个流作为脉冲在频域中应用视频流的 2D 反卷积
dedot减少视频中的交叉亮度(点爬行)和交叉颜色(彩虹)
deflate对视频应用放气效果
deflicker移除时间帧亮度变化
dejudder消除部分交错电视电影内容产生的抖动
delogo通过周围像素的简单插值来抑制电视台标志
derain通过应用基于卷积神经网络的 derain 方法去除输入图像/视频中的雨水
deshake尝试修复水平和/或垂直偏移的微小变化。
despill去除由绿屏或蓝屏的反射颜色引起的对前景颜色的不必要污染
detelecine应用电视电影操作的精确逆运算。
dilation对视频应用膨胀效果
displace如第二个和第三个输入流所示置换像素
dnn_classify使用基于边界框的深度神经网络进行分类
dnn_detect使用深度神经网络进行对象检测
dnn_processing使用深度神经网络进行图像处理
drawbox在输入图像上绘制一个彩色框
drawgraph使用输入视频元数据绘制图形
drawgrid在输入图像上绘制网格
drawtext从视频顶部的指定文件中绘制文本字符串或文本
edgedetect检测并绘制边缘。该过滤器使用 Canny 边缘检测算法
elbg使用ELBG(增强 LBG)算法应用分色效果
entropy测量视频帧颜色通道直方图中的灰度熵
epx应用专为像素艺术设计的EPX放大滤镜
eq设置亮度、对比度、饱和度和近似伽玛调整
erosion对视频应用侵蚀效果
estdif对输入视频进行去隔行扫描
exposure调整视频流的曝光
extractplanes从输入视频流中提取颜色通道分量到单独的灰度视频流中
fade淡入淡出效果
feedback反馈过滤器
fftdnoiz使用 3D FFT(频域滤波)对帧进行去噪。
fftfilt将任意表达式应用于频域中的样本
field使用步幅算法从隔行扫描图像中提取单个字段以避免浪费CPU 时间。
输出帧被标记为非隔行扫描
fieldhint通过从提示文件以数字形式提供的周围帧复制顶部和底部字段来创建新帧
fieldmatch逆电视电影的场匹配滤波器
fieldorder转换输入视频的场序
fifo,afifo缓冲输入图像并在请求时发送它们
fillborders填充输入视频的边框,不改变视频流尺寸。
find_rect找到一个矩形对象
floodfill具有相同像素分量值和另一个值的泛滥区域
format将输入视频转换为指定的像素格式之一。
fps通过根据需要复制或丢弃帧将视频转换为指定的恒定帧速率
framepack将两个不同的视频流打包成立体视频
framerate通过从源帧插入新的视频输出帧来挂起帧速率
framestep每第 N 帧选择一帧
freezedetect检测冻结的视频
freezeframes冻结视频帧
frei0r对输入视频应用 frei0r 效果
fspp应用快速简单的后处理。它是 spp 的更快版本
gblur应用高斯模糊滤镜
geq将通用方程应用于每个像素
gradfun修复有时通过截断到 8 位颜色深度而引入近乎平坦区域的条带伪影
graphmonitor显示各种过滤图统计信息
grayworld基于灰色世界假设应用颜色校正的颜色恒常性过滤器
greyedge一种颜色恒常变化滤波器
它通过灰度边缘算法估计场景照明并相应地校正场景颜色
guided应用引导滤波器进行保边平滑、去雾等
haldclut将 Hald CLUT 应用到视频流
hflip水平翻转输入视频
histeq此过滤器在每帧基础上应用全局颜色直方图均衡
histogram计算并绘制输入视频的颜色分布直方图
hqdn3d这是一个高精度/高质量的 3d 去噪滤波器
hwdownload将硬件帧下载到系统内存
hwmap将硬件帧映射到系统内存或另一个设备
hwupload将系统内存帧上传到硬件表面
hwupload_cuda将系统内存帧上传到 CUDA 设备
hqx应用专为像素艺术设计的高质量放大滤镜
hstack水平堆叠输入视频
hsvhold将某个 HSV 范围转换为灰度值
hsvkey将某个 HSV 范围转换为透明度
hue修改输入的色调和/或饱和度
huesaturation对输入视频流应用色相饱和度调整
hysteresis通过连接组件将第一个流变成第二个流。这使得构建更强大的边缘掩码成为可能
iccdetect从嵌入的 ICC 配置文件(如果存在)中检测色彩空间,并相应地更新帧的标签
iccgen生成 ICC 配置文件并将它们附加到框架
identity获取两个输入视频之间的身份分数
idet检测视频隔行扫描类型
il去交错或交错字段
inflate对视频应用充气效果
interlace来自渐进内容的简单隔行过滤器
kerndeint通过应用 Donald Graft 的自适应内核去交错对输入视频进行去交错处理。
kirsch应用 kirsch 算子输入视频流
lagfun慢慢更新较暗的像素
lenscorrection校正径向镜头畸变
lensfun通过 lensfun 库应用镜头校正
libplacebo基于libplacebo的灵活 GPU 加速处理过滤器
libvmaf计算输入视频的参考/失真对的VMAF分数
limitdiff使用第二个和可选的第三个视频流应用有限差分过滤器
limiter将像素分量值限制在指定范围内
loop循环视频帧
lut1d将 1D LUT 应用于输入视频
lut3d将 3D LUT 应用到输入视频
lumakey将某些亮度值转换为透明度
lut, lutrgb, lutyuv计算用于将每个像素分量输入值绑定到输出值的查找表
并将其应用于输入视频
tlut2接受两个输入流并输出一个流
maskedclamp用第二个输入和第三个输入流钳制第一个输入流
maskedmax使用第二输入流和第一输入流之间的绝对差以及
第三输入流和第一输入流之间的绝对差将第二和第三输入流合并为输出流
maskedmerge使用第三个输入流中的每像素权重将第一个输入流与第二个输入流合并
maskedmin使用第二输入流和第一输入流之间的绝对差以及
第三输入流和第一输入流之间的绝对差将第二和第三输入流合并为输出流。
maskedthreshold选取像素比较固定阈值的两个视频流的绝对差
maskfun从输入视频创建蒙版
mcdeint应用运动补偿去隔行扫描
median从由半径定义的某个矩形中选择中值像素
mergeplanes合并来自多个视频流的颜色通道分量
mestimate使用块匹配算法估计和导出运动矢量。
运动矢量存储在帧侧数据中以供其他过滤器使用
midequalizer使用两个视频流应用 Midway Image Equalization 效果
minterpolate使用运动插值将视频转换为指定的帧速率
mix将多个视频输入流混合为一个视频流
monochrome使用自定义滤色器将视频转换为灰色
morpho该过滤器允许应用主形态灰度变换、腐蚀和扩张
以及在第二个输入流中设置的任意结构
mpdecimate丢弃与前一帧差别不大的帧以降低帧速率
msad获取两个输入视频之间的 MSAD(绝对差的平均和)
multiply将第一视频流像素值与第二视频流像素值相乘
negate反转输入视频。
nlmeans使用非局部均值算法去噪帧
nnedi使用神经网络边缘定向插值对视频进行去隔行扫描
noformat强制 libavfilter 不使用任何指定的像素格式作为下一个过滤器的输入
noise在视频输入帧上添加噪声
normalize标准化 RGB 视频(又名直方图拉伸、对比度拉伸)
null不做处理
ocr光学文字识别
ocv使用 libopencv 应用视频转换
oscilloscope2D 视频示波器
overlay将一个视频叠加在另一个视频之上
overlay_cuda将一个视频叠加在另一个视频之上
owdenoise应用过完备小波去噪器
pad向输入图像添加填充,并将原始输入放置在提供的 x、y 坐标处
palettegen为整个视频流生成一个调色板
paletteuse使用调色板对输入视频流进行下采样
perspective未垂直于屏幕录制的视频的正确视角
phase将隔行扫描视频延迟一个场时间,以便场序发生变化
photosensitivity减少视频中的各种闪烁,从而帮助癫痫患者
pixdesctest像素格式描述符测试过滤器,主要用于内部测试。输出视频应该等于输入视频
pixelize将像素化应用于视频流
pixscope显示颜色通道的样本值。主要用于检查颜色和级别。
支持的最低分辨率为 640x480
pp启用指定的后处理子过滤器链
pp7应用后处理过滤器
premultiply使用第二个流的第一个平面作为 alpha将alpha预乘效果应用于输入视频流
prewitt应用prewitt算子输入视频流
pseudocolor使用伪色更改视频中的帧颜色
psnr获取两个输入视频之间的平均、最大和最小PSNR
pullup下拉反转滤镜
qp更改视频量化参数
random将内部帧缓存中的视频帧刷新为随机顺序
readeia608从视频帧的顶行读取隐藏式字幕
readvitc从视频帧的顶行读取垂直间隔时间码(VITC)信息
remap使用 2nd: Xmap 和 3rd: Ymap 输入视频流重新映射像素
removegrain用于渐进式视频的空间降噪器
removelogo抑制电视台徽标,使用图像文件来确定徽标由哪些像素组成
repeatfields此过滤器使用视频 ES 标头中的 repeat_field 标志,并根据其值硬重复字段
reverse反转视频剪辑
rgbashift水平和/或垂直移动 R/G/B/A 像素
roberts应用罗伯茨交叉算子输入视频流
rotate以弧度表示的任意角度旋转视频
sab应用形状自适应模糊
scale使用 libswscale 库缩放(调整大小)输入视频
scale_cuda使用cuda内核加速视频缩放
scale_npp使用在 CUDA 视频帧上执行缩放和/或像素格式转换
scale2ref根据参考视频缩放(调整大小)输入视频
scale2ref_npp使用 NVIDIA libnpp根据参考视频缩放(调整大小)输入视频
scharr应用 scharr 算子输入视频流
scroll以恒定速度水平和/或垂直滚动输入视频
scdet检测视频场景变化
selectivecolor此滤镜类似于 Adobe Photoshop 可选颜色工具。
separatefields基于帧的视频输入并将每个帧拆分为其组件场
生成一个新的半高剪辑,帧速率和帧数是其两倍
setdar, setsar过滤器设置过滤器输出视频的显示纵横比
setfield输出视频帧的力场
setparams输出视频帧的强制帧参数
sharpen_npp使用 NVIDIA libnpp通过边界控制执行图像锐化
shear对输入视频应用剪切变换
showinfo显示包含每个输入视频帧的各种信息的一行。 输入视频未修改
showpalette显示每帧的 256 色调色板。 此过滤器仅与 pal8 像素格式帧相关
shuffleframes重新排序和/或复制和/或删除视频帧
shufflepixels重新排列视频帧中的像素
shuffleplanes重新排序和/或复制视频平面
signalstats评估有助于确定与模拟视频媒体数字化相关的问题的各种视觉指标
signature过滤器可以处理多个输入。
在这种情况下,可以额外计算输入之间的匹配。
过滤器总是通过第一个输入。 每个流的签名可以写入一个文件。
siti计算视频的空间信息 (SI) 和时间信息 (TI) 分数
smartblur在不影响轮廓的情况下模糊输入视频
sobel将 sobel 算子应用于输入视频流
spp应用一个简单的后处理过滤器
sr通过应用一种基于卷积神经网络的超分辨率方法来缩放输入
ssim获取两个输入视频之间的 SSIM
stereo3d在不同的立体图像格式之间转换
streamselect
astreamselect
选择视频或音频流
subtitles使用 libass 库在输入视频上绘制字幕
super2xsai使用像素艺术缩放算法将输入缩放2倍并平滑
swaprect交换视频中的两个矩形对象
swapuv交换uv平面
tblend混合连续的视频帧
telecine对视频应用电视电影处理
thistogram计算并绘制输入视频随时间变化的颜色分布直方图
threshold对视频流应用阈值效应
thumbnail在给定的连续帧序列中选择最具代表性的帧
tile将几个连续的帧平铺在一起
tinterlace执行各种类型的时间场交错
tmedian从几个连续的输入视频帧中选取中值像素
tmidequalizer应用时间中途视频均衡效果
tmix混合连续的视频帧
tonemap来自不同动态范围的色调映射颜色
tpad临时填充视频帧
transpose转置输入视频中的行和列,并可选择翻转它
transpose_npp转置输入视频中的列和行,并可选择翻转它。
trim修剪输入,使输出包含输入的一个连续子部分
unpremultiply使用第二个流的第一个平面作为 alpha
将 alpha unpremultiply 效果应用于输入视频流
unsharp锐化或模糊输入视频
untile将由平铺图像组成的视频分解为单个图像
uspp应用超慢/简单的后处理过滤器
v360在各种格式之间转换 360 视频
vaguedenoiser应用基于小波的降噪器
varblur通过使用第二个视频流设置模糊半径来应用可变模糊过滤器
vectorscope在二维图形(称为矢量示波器)中显示2个颜色分量值
vidstabdetect分析视频稳定/去抖动
vidstabtransform视频稳定/去抖动
vflip垂直翻转输入视频
vfrdet检测可变帧率视频
vibrance提高或改变饱和度
vif获取两个输入视频之间的平均 VIF(视觉信息保真度)
vignette制作或反转自然渐晕效果
vmafmotion获取视频的平均 VMAF 运动分数
vstack垂直堆叠输入视频
w3fdif去隔行输入视频
waveform视频波形监视器
doubleweave编织采用基于场的视频输入并将每两个连续场连接成单个帧
从而产生帧速率和帧数减半的新双倍高度剪辑
xbr应用专为像素艺术设计的 xBR 高质量放大滤镜
xcorrelate在第一和第二输入视频流之间应用归一化互相关
xfade将一个输入视频流的淡入淡出应用于另一个输入视频流
xmedian从多个输入视频中选取中值像素
xstack将视频输入堆叠到自定义布局中
yadif去隔行输入视频
yadif_cuda使用 yadif 算法对输入视频进行去隔行扫描
yaepblur在保留边缘的同时应用模糊滤镜
zoompan应用缩放和平移效果
zscale缩放(调整大小)输入视频

有关FFmpeg进阶:视频滤镜大全的更多相关文章

  1. 7个大一C语言必学的程序 / C语言经典代码大全 - 2

    嗨~大家好,这里是可莉!今天给大家带来的是7个C语言的经典基础代码~那一起往下看下去把【程序一】打印100到200之间的素数#includeintmain(){ inti; for(i=100;i 【程序二】输出乘法口诀表#includeintmain(){inti;for(i=1;i 【程序三】判断1000年---2000年之间的闰年#includeintmain(){intyear;for(year=1000;year 【程序四】给定两个整形变量的值,将两个值的内容进行交换。这里提供两种方法来进行交换,第一种为创建临时变量来进行交换,第二种是不创建临时变量而直接进行交换。1.创建临时变量来

  2. 动漫制作技巧如何制作动漫视频 - 2

    动漫制作技巧是很多新人想了解的问题,今天小编就来解答与大家分享一下动漫制作流程,为了帮助有兴趣的同学理解,大多数人会选择动漫培训机构,那么今天小编就带大家来看看动漫制作要掌握哪些技巧?一、动漫作品首先完成草图设计和原型制作。设计草图要有目的、有对象、有步骤、要形象、要简单、符合实际。设计图要一致性,以保证制作的顺利进行。二、原型制作是根据设计图纸和制作材料,可以是手绘也可以是3d软件创建。在此步骤中,要注意的问题是色彩和平面布局。三、动漫制作制作完成后,加工成型。完成不同的表现形式后,就要对设计稿进行加工处理,使加工的难易度降低,并得到一些基本准确的概念,以便于后续的大样、准确的尺寸制定。四、

  3. python ffmpeg 使用 pyav 转换 一组图像 到 视频 - 2

    2022/8/4更新支持加入水印水印必须包含透明图像,并且水印图像大小要等于原图像的大小pythonconvert_image_to_video.py-f30-mwatermark.pngim_dirout.mkv2022/6/21更新让命令行参数更加易用新的命令行使用方法pythonconvert_image_to_video.py-f30im_dirout.mkvFFMPEG命令行转换一组JPG图像到视频时,是将这组图像视为MJPG流。我需要转换一组PNG图像到视频,FFMPEG就不认了。pyav内置了ffmpeg库,不需要系统带有ffmpeg工具因此我使用ffmpeg的python包装p

  4. TimeSformer:抛弃CNN的Transformer视频理解框架 - 2

    Transformers开始在视频识别领域的“猪突猛进”,各种改进和魔改层出不穷。由此作者将开启VideoTransformer系列的讲解,本篇主要介绍了FBAI团队的TimeSformer,这也是第一篇使用纯Transformer结构在视频识别上的文章。如果觉得有用,就请点赞、收藏、关注!paper:https://arxiv.org/abs/2102.05095code(offical):https://github.com/facebookresearch/TimeSformeraccept:ICML2021author:FacebookAI一、前言Transformers(VIT)在图

  5. ruby - 无法在 Ruby 中将 ffmpeg 作为子进程运行 - 2

    我正在尝试使用以下代码通过将ffmpeg实用程序作为子进程运行并获取其输出并解析它来确定视频分辨率:IO.popen'ffmpeg-i'+path_to_filedo|ffmpegIO|#myparsegoeshereend...但是ffmpeg输出仍然连接到标准输出并且ffmepgIO.readlines是空的。ffmpeg实用程序是否需要一些特殊处理?或者还有其他方法可以获得ffmpeg输出吗?我在WinXP和FedoraLinux下测试了这段代码-结果是一样的。 最佳答案 要跟进mouviciel的评论,您需要使用类似pope

  6. ruby - 如何更改此正则表达式以从未指定 v 参数的 Youtube URL 获取 Youtube 视频 ID? - 2

    目前我正在使用这个正则表达式从YoutubeURL中提取视频ID:url.match(/v=([^&]*)/)[1]我怎样才能改变它,以便它也可以从这个没有v参数的YoutubeURL获取视频ID:http://www.youtube.com/user/SHAYTARDS#p/u/9/Xc81AajGUMU感谢阅读。编辑:我正在使用ruby​​1.8.7 最佳答案 对于Ruby1.8.7,这就可以了。url_1='http://www.youtube.com/watch?v=8WVTOUh53QY&feature=feedf'url

  7. ruby - 如何使用 bash 命令或 Ruby 使用 ffmpeg 将 mp4 文件批量转换为 ogg - 2

    我运行的是OSX,对视频转换一无所知。但我有大约200个视频都是mp4格式,无法在Firefox中播放。我需要将它们转换为ogg才能使用html5视频标签。这些文件位于一个文件夹结构中,这使得一次一个地处理一个文件变得困难。我希望bash命令或Ruby命令遍历所有子文件夹并找到所有.mp4并转换它们。我找到了一份关于如何使用Google执行此操作的引用资料:http://athmasagar.wordpress.com/2011/05/12/a-bash-script-to-convert-mp4-files-to-oggogv/#!/bin/bashforfin$(ls*mp4|se

  8. 续集来了丨UI自动化测试(二):带视频,实在RPA高效进行web项目UI自动化测试 - 2

    一、什么是web项目ui自动化测试?通过测试工具模拟人为操控浏览器,使软件按照测试人员的预定计划自动执行测试的一种方式,可以完成许多手工测试无法完成或者不易实现的繁琐工作。正确使用自动化测试,可以更全面的对软件进行测试,从而提高软件质量进而缩短迭代周期。二、构建测试用例的“九部曲”(一)创建流程包划分功能模块日常测试活动中,都会根据功能模块进行拆分,所以在设计器中我们可以通过创建流程包的方式来拆分需要测试的功能模块,如下图中操作创建一个电脑流程包并且取名为对应的功能模块名称,如果有多个功能模块就创建多个对应的流程包,实在RPA设计器有易用的图形可视化界面,方便管理较多的功能模块。(二)在流程包

  9. Java调用ffmpeg处理视频,并记录下遇到的坑 - 2

    目录需求基于JavaCV跨平台执行ffmpeg命令[^1]坑一内存不足坑二多个ffmpeg进程并行导致IO负载大,进而导致ioerror?坑三使用Java操作ffmpeg时,有时会卡死坑四Process的waitFor死锁问题及解决办法需求给透明背景的视频自动叠加一张背景图片基于JavaCV跨平台执行ffmpeg命令1我测试发现的本需求的最小依赖:dependency>groupId>org.bytedecogroupId>artifactId>ffmpeg-platform-gplartifactId>version>5.0-1.5.7version>dependency>核心代码:Stri

  10. 基于python的短视频智能推荐/django的影视网站/视频推荐系统 - 2

    摘要本论文主要论述了如何使用Python技术开发一个短视频智能推荐,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述短视频智能推荐的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析设计。 短视频智能推荐的主要使用者分为管理员和用户,实现功能包括管理员:首页、个人中心、用户管理、热门视频管理、用户上传管理、系统管理,用户:首页、个人中心、用户上传管理、我的收藏管理,前台首页;首页、热门视频、用户上传、公告信息、个人中心、后台管理等功能。由于本网站的功能模块设计比较全面,所以使得整个短视频智能推荐信

随机推荐