基于ffmpeg的视频处理与MPEG的压缩试验(下载安装使用全流程)

本文介绍了如何使用ffmpeg进行视频处理,包括从视频中提取图像,将RGB图像转化为YUV,进行DCT变换和量化操作。通过z字型编码保存处理结果,并提供了相关资源和命令参考。
摘要由CSDN通过智能技术生成

ffmpeg介绍与基础知识

ffmpeg是视频和图像处理的工具包,它的下载网址是https://ffmpeg.org/download.html。页面都是英文且下载正确的包的路径笔者找的时候还费点劲,这里记录一下也方便读者。

选中这个Windows下的下午files,选择第一个
在这里插入图片描述
这里有essential和full版本的,大家根据需要自行选择版本包下载
在这里插入图片描述
下载好之后,在官网上下载ffmpeg的full包,一共300+MB
解压,然后安装bin到环境变量中以便cmd中(windoows系统下)命令行的使用
下面将视频提取为一幅一幅的图片
使用如下命令提取格式为png的图片

ffmpeg.exe -i "The godfather (1972) clip.mp4" -vf fps=10 %03d.png

具体的ffmpeg命令格式与定义可以直接在本站搜索定义,这里也给出网址ffmpeg命令
生成的图片会保存在分解的视频目录下。

IPB三种帧是视频压缩中的重要概念,这里找到了学习资料,提供给大家参考I.P.B帧

对提取到的图像进行处理

RGB并转化为YUV

首先要导入opencv的包,没有要下载安装一下到IDE中,然后进行RGB矩阵的提取

import cv2
import numpy as np

path = "150.png"
figure = cv2.imread(path)
# 提取出RGB并根据公式转化为YUV
b = figure[:,:,0]
g = figure[:,:,1]
r = figure[:,:,2]

根据RGB转化为YUV的公式,计算出YUV矩阵,共三个通道

y = 0.275 * r + 0.504 * g + 0.098 * b + 16
u = -0.148 * r - 0.291 * g + 0.439 * b + 128
v = 0.439 * r - 0.368 * g - 0.071 * b + 128

对YUV进行DCT变换

DCT变换是傅里叶变换,在图像处理乃至电气领域等都有广泛的应用,在抛去原理的情况下,直接调用函数库就能完成操作了。默认的是进行8*8的图像块为基本单位的DCT变换,代码如下:

y_dct = cv2.dct(y)
u_dct = cv2.dct(u)
v_dct = cv2.dct(v)

作完DCT变换之后,要对中间的结果进行量化操作,以便更好存储,单位范围也更规整
且给出两个量化表进行量化

# 两个量化表
co1 = [[17,18,24,47,99,99,99,99],[18,21,26,66,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

原创小白变怪兽

帮助原创小白成为怪兽吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值