首页 > 编程语言 >python从时间上裁切视频(定义一个开始截取的时间,最后截取时间是总时长+1秒)

python从时间上裁切视频(定义一个开始截取的时间,最后截取时间是总时长+1秒)

时间:2024-04-20 21:34:32浏览次数:24  
标签:裁切 seconds 截取 subprocess 时间 str time duration path

代码:

import subprocess
from datetime import timedelta

def parse_time(time_str):
    """将时间字符串解析为秒"""
    # 如果输入是浮点数,直接返回这个数值
    if isinstance(time_str, float):
        return time_str
    # 将时间字符串分割为小时、分钟和秒
    hours, minutes, seconds = map(float, time_str.split(':'))
    # 计算总秒数
    return timedelta(hours=hours, minutes=minutes, seconds=seconds).total_seconds()

def ffmpeg_get_duration(input_path):
    """获取视频的总时长(秒)"""
    result = subprocess.run(['ffprobe', '-v', 'error', '-show_entries', 'format=duration', '-of', 'default=noprint_wrappers=1:nokey=1', input_path], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    # 将ffprobe输出的时长字符串转换为浮点数
    duration = float(result.stdout)
    return duration

# 其他函数保持不变...
def ffmpeg_trim(input_path, output_path, start_time, end_time):
    """使用ffmpeg裁剪视频"""
    start_time_sec = parse_time(start_time)
    end_time_sec = parse_time(end_time)

    cmd = [
        'ffmpeg',
        '-i', input_path,
        '-ss', str(start_time_sec),
        '-to', str(end_time_sec),
        '-c', 'copy',
        output_path
    ]

    try:
        subprocess.run(cmd, check=True)
    except subprocess.CalledProcessError as e:
        print(f"An error occurred while processing the video: {e}")
        
# 要裁剪的视频文件路径
video_path = r'E:\edge下载\81\81-创建渲染框架.mp4'
output_path = r'E:\edge下载\81\81-创建渲染框架_qutou.mp4'
# 获取视频的总时长
original_duration = ffmpeg_get_duration(video_path)

# 打印视频的总时长(HH:MM:SS格式)
print(f"Original video duration: {str(timedelta(seconds=original_duration))}")

# 用户定义的裁剪开始时间
start_time_defined = '00:00:08'  # 从第08秒开始裁剪

# 计算裁剪的结束时间(原视频时长 + 1秒)
end_time_defined = str(timedelta(seconds=original_duration + 1))

# 调用函数进行时间裁剪
ffmpeg_trim(video_path, output_path, start_time_defined, end_time_defined)

 

标签:裁切,seconds,截取,subprocess,时间,str,time,duration,path
From: https://www.cnblogs.com/jingzaixin/p/18148204

相关文章

  • python从时间上裁切视频
    代码importsubprocessfromdatetimeimporttimedeltadefparse_time(time_str):"""将时间字符串解析为秒"""#将时间字符串分割为小时、分钟和秒hours,minutes,seconds=map(int,time_str.split(':'))#计算总秒数returntimedelt......
  • python从大小上裁切视频
    1.代码1importsubprocessdefffmpeg_crop(input_path,output_path,width,height,x,y):#构建ffmpeg命令cmd=['ffmpeg','-i',input_path,'-filter:v',f'crop={width}:{height}:{x}:{y}'......
  • 原生js图片截取并渲染页面
    一、将海报大图截屏部分图片并渲染页面二、实现代码如下<!DOCTYPEhtml><htmllang="zh"> <head> <metacharset="UTF-8"> <metaname="viewport"content="width=device-width,initial-scale=1.0"> <title>Do......
  • 掌握时间序列特征工程:常用特征总结与 Feature-engine 的应用
    时间序列数据的特征工程是一种技术,用于从时间序列数据中提取信息或构造特征,这些特征可用于提高机器学习模型的性能。以下是一些常见的时间序列特征工程技术:滚动统计量:计算时间窗口内的统计量,如平均值、中位数、标准偏差、最小值和最大值。这些统计量可以捕捉到时间序列在不同时......
  • rt-thread rtc 时间乱跳,初始化失败等问题
    添加rtc组件步骤,系统版本4.1.11.rt-threadsettings中添加rtc2.board.h中打开rtc的开关  #defineBSP_USING_ONCHIP_RTC3.stm32g0xx_hal_conf.h 打开rtc选项  #defineHAL_RTC_MODULE_ENABLED4.rt-thread\components\drivers\rtc\rtc.c中注释掉与drv_rtc.c中冲突的代......
  • python中的时间转换,秒级时间戳转string,string转时间
    importtimeimportdatetimedefpaserTime(timestamp):t=time.time()f=time.localtime(timestamp/1000)print(t)#原始时间数据#print(int(t))#秒级时间戳print(int(round(t*1000)))#毫秒级......
  • Ubuntu 22.04 和 Windows 时间冲突解决方案
    默认情况下,Ubuntu(和大多数其他Linux发行版)假设硬件时钟设置为协调世界时间(UTC+0),而Windows则假设硬件时钟设置为当地时间,这导致Ubuntu快8小时。这种差异会导致你在双启动系统中切换操作系统时,经常遇到时间显示不正确的问题。要解决这个问题,有两种常用方法,要么让Linux......
  • 在Linux中如何删除指定时间之前修改的文件?
    1、与文件有关的时间在说明如何删除符合这种要求的文件之前,先来看看与文件有关的有哪些时间简名   全名    中文名  含义atime  access  time   访问时间 文件中的数据最后被访问的时间mtime  modify  time   修改时间 文件中的数据......
  • mac的cpu某段时间占用很高
    pmset-gsched,会发现如下所示:列出所有的计划事件wakepoweronat9:50AMeverydayScheduledpowerevents:[0]wakeat04/21/2401:38:54by'com.apple.alarm.user-visible-WeeklyUsageReport'[1]wakeat04/21/2405:37:09by'com.apple.alarm.user-visib......
  • Xdebug延长调试时间
    Xdebug延长调试时间环境:phpstudy,Windows版phpstudy下载-小皮面板(phpstudy)(xp.cn)Xdebug设置好之后,在断点调试的过程中,因为调试时间长,服务器会返回一个内部错误的提示,如下图所示,可以通过修改apachel的配置文件,延长Xdebug调试时间。解决办法1.打开apache的配置文件,在apac......