当前位置: 首页 > article >正文

C++ 起始帧数、结束帧数、剪辑视频

C++ 指定起始帧数、结束帧数、
剪辑视频

C++ 无法直接用H264,只能用avi编码格式

#include <iostream>
#include <opencv2/opencv.hpp>

int main() {
    // 读取视频:创建了一个VideoCapture对象,参数为摄像头编号
    std::string path = "E:/zyk_lab/pai/";
    std::string mp4_name = "04010003569000000.mp4";
    std::string inputVideoPath = path + mp4_name;

    std::string outputVideoPath = path + "img/" + "ce.avi";

    cv::VideoCapture inputVideo(inputVideoPath);
    if (!inputVideo.isOpened()) {
        std::cerr << "Error opening input video." << std::endl;
        return -1;
    }

    cv::Size frameSize(static_cast<int>(inputVideo.get(cv::CAP_PROP_FRAME_WIDTH)),
        static_cast<int>(inputVideo.get(cv::CAP_PROP_FRAME_HEIGHT)));

    double fps = inputVideo.get(cv::CAP_PROP_FPS);

    cv::VideoWriter outputVideo(outputVideoPath, cv::VideoWriter::fourcc('M', 'J', 'P', 'G'), fps, frameSize);

    int currentFrame = 0;

    cv::Mat frame;

    double startFrame = ((60 * 48) + 22) * fps;  // 开始帧
    double endFrame = ((60 * 48) + 55) * fps;    // 结束帧
    
    while (inputVideo.read(frame)) {

        if (currentFrame >= (int)startFrame && currentFrame <= (int)endFrame) {
            outputVideo.write(frame);
        }
        currentFrame++;
        std::cout << std::to_string(currentFrame) << std::endl;

        if (currentFrame > (int)endFrame) {
            break;
        }
    }

    inputVideo.release();
    outputVideo.release();

    std::cout << "结束" << std::endl;
    
    return 0;
}



http://www.kler.cn/a/310191.html

相关文章:

  • 低功耗WTK6900P语音ic方案助力电子烟技术革新 打造个性化吸烟体验
  • Redis - String 字符串
  • Java API类与接口:类的转换方法与正则表达式
  • 【电力系统】永磁同步电机调速系统带有扰动观测器
  • [极客大挑战 2019]PHP 1
  • Sam Altman:年底将有重磅更新,但不是GPT-5!
  • 【PHP】使用thinkphp5查询最大值时,把varchar类型字段转换成数字
  • jQuery css() 方法
  • 【已解决】【Windows】【Linux】大数据开发环境配置
  • python 实现chudnovsky algorithm楚德诺夫斯基算法
  • 【数据结构】数据结构系列学习笔记——导航篇
  • 数据结构之基数排序简介与举例
  • 大众点评代发排名骗局
  • ZW3D二次开发_UI_非模板表单_设置表单显示位置
  • docker创建rabbitmq容器
  • Django 5 学习笔记 2024版
  • 深入理解指针(四)
  • Spring Boot 常用注解
  • MYSQL常用基本操作总结
  • 新的 MathWorks 硬件支持包支持从 MATLAB 和 Simulink 模型到高通 Hexagon 神经处理单元架构的自动化代码生成
  • 关系数据库设计之Armstrong公理详解
  • 网络运维面试题
  • 反射机制是什么?
  • 57页PPT | 智慧文旅整体建设解决方案
  • [Linux]进程控制详解
  • 【LeetCode】2332. 坐上公交的最晚时间