我的编程空间,编程开发者的网络收藏夹
学习永远不晚

视频行为分析——视频图像转换与ffmpeg相关操作

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

视频行为分析——视频图像转换与ffmpeg相关操作

工具类说明

1. 图像视频转换

1.1 视频输出gif

from moviepy.editor import VideoFileClip# 设置输入视频文件路径和输出GIF文件路径input_video = 'video.avi'output_gif = 'output.gif'# 读取视频文件video = VideoFileClip(input_video)# 将视频保存为GIF文件video.write_gif(output_gif)

1.2 将文件夹下图片转视频

import cv2import osdef images2video(    input_folder = 'demo',    output_file = 'video.avi'):      # 获取图像文件的列表    image_files = os.listdir(input_folder)    # 将图像文件名列表按照数字排序    image_files.sort(key=lambda x: int(x.split('.')[0]))    # 获取图像文件的数量    num_frames = len(image_files)    # 创建一个空的视频流    fourcc = cv2.VideoWriter_fourcc(*'XVID')  # 设置视频编解码器    out = cv2.VideoWriter(output_file, fourcc, 30.0, (640, 480))    # 逐个读取并写入每个图像帧    for i, image_file in enumerate(image_files):        frame = cv2.imread(os.path.join(input_folder, image_file))        if frame is None:            print(f"Error reading frame {i}: {image_file}")            continue        frame = cv2.resize(frame, (640, 480))  # 可以根据需要调整帧大小        out.write(frame)        if i % 100 == 0:  # 每100帧输出一次进度信息            print(f"Processed {i + 1}/{num_frames} frames")        # 完成视频写入并释放资源    out.release()

2. ffmpeg视频音频剪辑

2.1 ffmpeg安装

FFmpeg 的官方网站(https://ffmpeg.org/)上找到更详细的安装文档和指南。

2.1.1 linux 安装

  • 编译安装:如果你需要更新或自定义的 FFmpeg 版本,你可以从源代码编译安装。你可以从 FFmpeg 的官方网站下载源代码,并按照官方提供的编译指南进行安装。
  • 使用包管理器安装:大多数 Linux 发行版的软件仓库中都包含 FFmpeg。你可以使用包管理器(如apt、yum、dnf等)来安装。例如,在 Ubuntu 上,可以运行以下命令:
     sudo apt-get install ffmpeg

2.1.2 windows 安装

  • 预编译二进制文件:你可以从 FFmpeg 的官方网站下载预编译的 Windows 版本。官方提供了静态和共享库版本的二进制文件,你可以根据需要选择适合的版本。
  • 第三方安装程序:也有一些第三方安装程序(如Gyan Dev和BtbN)提供了 Windows 版本的 FFmpeg,你可以从它们的网站下载并按照说明进行安装。
  • 备注:需要将bin目录下设置到windows环境变量

2.1.3 macos 安装

  • Homebrew:如果你使用 Homebrew 包管理器,可以使用以下命令安装 FFmpeg

     brew install ffmpeg
  • MacPorts:如果你使用 MacPorts 包管理器,可以使用以下命令安装 FFmpeg

     sudo port install ffmpeg
  • 手动编译:你也可以从 FFmpeg 的官方网站下载源代码,并按照官方提供的编译指南进行手动编译安装。

2.2 常用命令

FFmpeg 是一个功能强大的多媒体处理工具,提供了许多常用的命令来处理音频和视频文件。以下是一些常用的 FFmpeg 命令示例:

2.2.1 转换视频格式

ffmpeg -i input.mp4 output.avi

2.2.2 转换音频格式

ffmpeg -i input.mp3 output.wav

2.2.3 调整视频分辨率

ffmpeg -i input.mp4 -s 1280x720 output.mp4

2.2.4 调整视频帧率

ffmpeg -i input.mp4 -r 30 output.mp4

2.2.5 裁剪视频

ffmpeg -i input.mp4 -ss 00:00:10 -t 00:00:20 output.mp4

2.2.6 提取音频

ffmpeg -i input.mp4 -vn output.mp3

2.2.7 合并视频和音频

ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a copy output.mp4

2.2.8 添加水印

ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4

2.2.9 转换视频编码

ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4

2.2.10 转换音频编码

ffmpeg -i input.mp3 -c:a libopus output.opus

2.3 实用工具

2.3.1 按照帧裁剪视频

'''使用 setpts=PTS-STARTPTS 可以将视频的第一帧的时间戳设置为0,这样后续帧的时间戳就是相对于第一帧的时间差。这在一些需要对视频进行时间戳调整的场景中非常有用,例如剪辑视频或重新排序视频帧。'''def ffmpeg_cut_video_by_frames(input_file, output_file, start_frame, end_frame):    # 构建 FFmpeg 命令      # 示例用法    '''    input_file = 'demo.mp4'  # 输入视频文件路径    output_file = 'output2.mp4'  # 输出视频文件路径    start_frame = 25  # 起始帧数    end_frame = 120  # 结束帧数    '''    command = [        'ffmpeg',        '-i', input_file,        '-vf', f'select=between(n\,{start_frame}\,{end_frame}),setpts=PTS-STARTPTS',        output_file,    ]    if os.path.exists(output_file):        os.remove(output_file)    # 执行 FFmpeg 命令    flag = subprocess.run(command)    return flagif __name__ == '__main__':    # 示例用法    input_file = 'demo.mp4'  # 输入视频文件路径    output_file = 'output2.mp4'  # 输出视频文件路径    start_frame = 25  # 起始帧数    end_frame = 120  # 结束帧数    ffmpeg_cut_video_by_frames(input_file, output_file, start_frame, end_frame)

来源地址:https://blog.csdn.net/weixin_42917352/article/details/132553669

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

视频行为分析——视频图像转换与ffmpeg相关操作

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

视频行为分析——视频图像转换与ffmpeg相关操作

工具类说明 1. 图像视频转换 1.1 视频输出gif from moviepy.editor import VideoFileClip# 设置输入视频文件路径和输出GIF文件路径input_video = 'video.avi'outpu
2023-08-30

canvas像素点操作之视频绿幕抠图的示例分析

这篇文章将为大家详细讲解有关canvas像素点操作之视频绿幕抠图的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 本文介绍了canvas像素点操作之视频绿幕抠图,分享给大家,具体如下:用法:con
2023-06-09

Android 使用CameraX实现预览/拍照/录制视频/图片分析/对焦/缩放/切换摄像头等操作

1. CameraX架构 看官方文档 CameraX架构 有如下这一段话 使用CameraX,借助名为"用例"的抽象概念与设备的相机进行交互。 预览 : 接受用于显示预览的Surface,例如PreviewView图片分析 : 为分析 (例
2023-08-20

编程热搜

目录