Python:日常实用小工具代码汇总

对视频文件截取指定时间段(时分秒格式)得到新视频文件

  • 安装 moviepy 库:
pip install moviepy
  • 代码:
from moviepy.editor import VideoFileClip

def convert_hms_to_seconds(hms):
    """
    将时分秒格式的时间转换为秒。
    :param hms: 时分秒格式的时间,例如"01:02:03"表示1小时2分钟3秒。
    :return: 转换后的秒数。
    """
    h, m, s = [int(i) for i in hms.split(':')]
    return 3600 * h + 60 * m + s

def trim_video(input_file, start_time_hms, end_time_hms, output_file):
    """
    截取视频的指定时间段并保存。
    :param input_file: 输入视频文件路径。
    :param start_time_hms: 开始时间(时分秒格式,例如"00:01:00")。
    :param end_time_hms: 结束时间(时分秒格式,例如"00:02:00")。
    :param output_file: 输出视频文件路径。
    :return: None。
    """
    start_time = convert_hms_to_seconds(start_time_hms)
    end_time = convert_hms_to_seconds(end_time_hms)
    
    clip = VideoFileClip(input_file)
    trimmed_clip = clip.subclip(start_time, end_time)
    trimmed_clip.write_videofile(output_file, codec="libx264", audio_codec="aac")

trim_video("input.mp4", "00:00:10", "00:00:20", "output.mp4")

PDF 文件按照指定页索引拆分得到 2 2 2 份新 PDF 文件

  • 安装 PyPDF2 库:
pip install PyPDF2
  • 代码:
from PyPDF2 import PdfReader, PdfWriter

in_pdf_path = 'pdf.pdf'
out_pdf1_path = 'pdf1.pdf'
out_pdf2_path = 'pdf2.pdf'

need_list = [10, 20, 28, 31, 34, 54, 58, 63, 65]

def trim_pdf(in_pdf_path, out_pdf_path1, out_pdf_path2):
    reader = PdfReader(in_pdf_path)
    writer1, writer2 = PdfWriter(), PdfWriter()

    for i in range(len(reader.pages)):
        if (i + 1) in need_list:
            writer1.add_page(reader.pages[i])
        else:
            writer2.add_page(reader.pages[i])
    
    with open(out_pdf1_path, "wb") as f:
        writer1.write(f)

    with open(out_pdf2_path, "wb") as f:
        writer2.write(f)

trim_pdf(in_pdf_path, out_pdf1_path, out_pdf2_path)

按照设定速度播放视频

  • 安装 opencv 库:
pip install opencv-python
  • 代码:
import cv2

def play_video_with_speed(video_path, speed, window_size, window_name):
    cap = cv2.VideoCapture(video_path)
    fps = cap.get(cv2.CAP_PROP_FPS)
    new_fps = fps * speed

    cv2.namedWindow(window_name, cv2.WINDOW_KEEPRATIO)
    cv2.resizeWindow(window_name, window_size[0], window_size[1])

    while True:
        ret, frame = cap.read()

        if not ret:
            break

        resized_frame = cv2.resize(frame, window_size)
        cv2.imshow(window_name, resized_frame)

        if cv2.waitKey(int(1000 / new_fps)) & 0xFF == ord('q'):
            break

    cap.release()
    cv2.destroyAllWindows()

video_path = 'video.mp4'
speed = 5
window_size = (400, 828)
window_name = 'Video'

play_video_with_speed(video_path, speed, window_size, window_name)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值