最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中視頻音頻的剪輯與處理實現(xiàn)

 更新時間:2024年06月21日 09:51:22   作者:nencbskk  
Python中輕松實現(xiàn)各種視頻處理操作,包括剪輯、合并、添加音頻、文本、特效等多種功能,主要介紹了python中視頻音頻的剪輯與處理實現(xiàn),具有一定的參考價值,感興趣的可以了解一下

視頻:尺寸裁剪

import cv2


def extract_video_roi(src_video_path, dst_video_path, roi_start, roi_end):
    cap = cv2.VideoCapture(src_video_path)
    if not cap.isOpened():
        print(f"無法打開視頻文件:{src_video_path}")
        return

    width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
    fps = cap.get(cv2.CAP_PROP_FPS)

    fourcc = cv2.VideoWriter_fourcc(*"mp4v")
    out = cv2.VideoWriter(dst_video_path, fourcc, fps, (roi_end[0] - roi_start[0], roi_end[1] - roi_start[1]))

    while cap.isOpened():
        ret, frame = cap.read()
        if not ret:
            break

        roi_frame = frame[roi_start[1]:roi_end[1], roi_start[0]:roi_end[0]]
        out.write(roi_frame)

    cap.release()
    out.release()


# 示例用法
src_video_path = "test.mp4"
dst_video_path = "test3.mp4"
roi_start = (978, 178)
roi_end = (1684, 969)

extract_video_roi(src_video_path, dst_video_path, roi_start, roi_end)

圖片:尺寸裁剪

def crop_images(folder_path, result_path, a, b, c, d):
    # 檢查輸入路徑是否存在,如果不存在則創(chuàng)建
    if not os.path.exists(result_path):
        os.makedirs(result_path)

    # 遍歷文件夾內(nèi)的所有圖片文件
    for filename in os.listdir(folder_path):
        if filename.endswith(".jpg") or filename.endswith(".png"):
            # 打開圖片文件
            image = Image.open(os.path.join(folder_path, filename))

            # 裁剪圖片
            cropped_image = image.crop((a, b, c, d))

            # 保存裁剪后的圖片
            cropped_image.save(os.path.join(result_path, filename))

            # 關(guān)閉圖片文件
            image.close()


folder_path = "標(biāo)定1"
result_path = "標(biāo)定2"
a, b, c, d = 84, 193, 1638, 934
crop_images(folder_path,result_path, a, b, c, d)

視頻:每秒提取一張圖片

import cv2
import os


def extract_frames(video_path, result_folder):
    # 創(chuàng)建結(jié)果文件夾
    os.makedirs(result_folder, exist_ok=True)

    # 打開視頻文件
    cap = cv2.VideoCapture(video_path)

    frame_count = 0
    saved_count = 0
    # fps = cap.get(cv2.CAP_PROP_FPS)  # 獲取視頻的幀率
    frame_interval = int(cap.get(cv2.CAP_PROP_FPS))  # 設(shè)置幀采樣間隔為1秒
    while cap.isOpened():
        # 讀取視頻幀
        ret, frame = cap.read()

        if not ret:
            break

        frame_count += 1
        # 每秒保存一幀
        if frame_count % frame_interval == 0:
            saved_count += 1

            # 保存幀到結(jié)果文件夾
            # frame_path = os.path.join(result_folder, f"{saved_count}.jpg")
            frame_path = os.path.join(result_folder, '%s.jpg' % saved_count)
            print(frame_path)
            cv2.imwrite(frame_path, frame)

    # 釋放視頻文件
    cap.release()


# 文件夾路徑不能有中文?。。。。。?
video_path, result_folder = 'test3.mp4', 'new_folder'
extract_frames(video_path, result_folder)

視頻音頻:倍速,合并,裁剪

注意,下面的start和end單位是秒數(shù),比如你想截取視頻第一分鐘的片段,那么start=0,end=60。

from moviepy.editor import *


def video_clip(file_name, save_name, start, end):
    """視頻剪輯"""
    clip = VideoFileClip(file_name).subclip(start, end)
    clip.write_videofile(save_name)


def audio_clip(file_name, save_name, start, end):
    """音頻剪輯"""
    audio = AudioFileClip(file_name).subclip(start, end)
    audio.write_audiofile(save_name)


def video2audio(file_name, save_name):
    """視頻轉(zhuǎn)音頻"""
    # video = CompositeVideoClip([VideoFileClip(file_name).subclip(50, 60)])
    # video.write_videofile(save_name)
    my_audio_clip = AudioFileClip(file_name)
    my_audio_clip.write_audiofile(save_name)


def video_contact(files, save_name):
    """視頻合并"""
    files = [VideoFileClip(i) for i in files]
    final_clip = concatenate_videoclips(files)
    final_clip.write_videofile(save_name)


def audio_contact(files, save_name):
    """音頻合并"""
    files = [AudioFileClip(i) for i in files]
    final_clip = concatenate_audioclips(files)
    final_clip.write_audiofile(save_name)


def change_speed(file, save_name, speed):
    """改變速度"""
    clip = VideoFileClip(file)
    video_1 = clip.speedx(speed)
    video_1.write_videofile(save_name)


def get_gif(file, save_name, start, end):
    """視頻轉(zhuǎn)gif"""
    clip = VideoFileClip(file).subclip(start, end)
    clip.write_gif(save_name, fps=5)  # 生成之后的文件小,fps決定了文件大小


if __name__ == "__main__":
    pass

圖片:轉(zhuǎn)為視頻

import cv2
import os
from PIL import Image

def PicToVideo(imgPath, videoPath, fps):
    images = os.listdir(imgPath)  # 獲取所有圖片名稱
    images.sort(key=lambda x: int(x[:-4]))  # 對圖片進行排序
    fourcc = cv2.VideoWriter_fourcc(*'mp4v')  # 設(shè)置視頻的編碼格式
    im = Image.open(imgPath + images[0])  # 獲取圖片信息
    videoWriter = cv2.VideoWriter(videoPath, fourcc, fps, im.size, isColor=True)  # 創(chuàng)建一個videoWriter對象,用于將圖片保存為視頻的一部分
    for im_name in images:
        print("已經(jīng)載入圖片" + im_name)
        frame = cv2.imread(imgPath + im_name)
        videoWriter.write(frame)
    videoWriter.release()  # 釋放
    print("視頻制作完畢")


if __name__ == "__main__":
    # imgPath:圖片的保存文件夾
    # videoPath:視頻路徑
    # fps:幀率
    # 注意:圖片大小要一致
    imgPath = "data/"
    videoPath = "result.mp4"
    fps = 1
    PicToVideo(imgPath, videoPath, fps)

圖片:批量轉(zhuǎn)灰度圖

import cv2
import os


def to_gray(input_path, output_path):
    images = os.listdir(input_path)
    if not os.path.exists(output_path):
        os.makedirs(output_path)
    for image in images:
        print(image)
        input_image = os.path.join(input_path, image)
        output_image = os.path.join(output_path, image)
        image = cv2.imread(input_image, cv2.IMREAD_GRAYSCALE)
        cv2.imwrite(output_image, image)


if __name__ == '__main__':
    input_path = "right"  # 要處理的圖片所在的文件夾
    output_path = "right2"  # 處理完的圖片放在這里
    to_gray(input_path, output_path)

圖片:改變圖片尺寸

if __name__ == "__main__":
    path = "no.png"
    save = "no2.png"
    pic = Image.open(path)
    pic.thumbnail((50, 50))
    pic.save(save, "png")

到此這篇關(guān)于python中視頻音頻的剪輯與處理實現(xiàn)的文章就介紹到這了,更多相關(guān)python 視頻音頻剪輯處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • 詳解matplotlib技巧之縮放和投影

    詳解matplotlib技巧之縮放和投影

    我們在使用matplotlib繪制圖形時,有兩個重要的技巧:一種是?Scale(縮放),一種是Projection(投影),縮放和投影在matplotlib繪圖中起著至關(guān)重要的作用,它們幫助我們更好地展示和理解數(shù)據(jù),本文將詳細的給大家介紹這兩個技巧,需要的朋友可以參考下
    2024-01-01
  • Python中Async語法協(xié)程的實現(xiàn)

    Python中Async語法協(xié)程的實現(xiàn)

    這篇文章主要介紹了Python中Async語法協(xié)程的實現(xiàn),文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • Python3.7實現(xiàn)驗證碼登錄方式代碼實例

    Python3.7實現(xiàn)驗證碼登錄方式代碼實例

    這篇文章主要介紹了Python3.7實現(xiàn)驗證碼登錄方式代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • 10款最好的Python開發(fā)編輯器

    10款最好的Python開發(fā)編輯器

    這篇文章主要介紹了10款最好的Python開發(fā)編輯器,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • wxPython學(xué)習(xí)之主框架實例

    wxPython學(xué)習(xí)之主框架實例

    這篇文章主要介紹了wxPython學(xué)習(xí)之主框架應(yīng)用實例,以一個基礎(chǔ)的彈出窗體實例講述了wxPython主框架應(yīng)用程序的實現(xiàn)方法,需要的朋友可以參考下
    2014-09-09
  • python中數(shù)組array和列表list的基本用法及區(qū)別解析

    python中數(shù)組array和列表list的基本用法及區(qū)別解析

    大家都知道數(shù)組array是同類型數(shù)據(jù)的有限集合,列表list是一系列按特定順序排列的元素組成,可以將任何數(shù)據(jù)放入列表,且其中元素之間沒有任何關(guān)系,本文介紹python中數(shù)組array和列表list的基本用法及區(qū)別,感興趣的朋友一起看看吧
    2022-05-05
  • python+numpy+matplotalib實現(xiàn)梯度下降法

    python+numpy+matplotalib實現(xiàn)梯度下降法

    這篇文章主要為大家詳細介紹了python+numpy+matplotalib實現(xiàn)梯度下降法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Python日志記錄與loguru高級用法全解析

    Python日志記錄與loguru高級用法全解析

    Python標(biāo)準(zhǔn)庫的logging模塊功能強大但配置復(fù)雜,而第三方庫loguru通過創(chuàng)新的API設(shè)計大幅降低了日志管理門檻,本文將深入對比兩者差異,并演示loguru在現(xiàn)代應(yīng)用中的高級實踐
    2025-06-06
  • centos+nginx+uwsgi+Django實現(xiàn)IP+port訪問服務(wù)器

    centos+nginx+uwsgi+Django實現(xiàn)IP+port訪問服務(wù)器

    這篇文章主要介紹了centos+nginx+uwsgi+Django實現(xiàn)IP+port訪問服務(wù)器,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 用OpenCV將視頻分解成單幀圖片,圖片合成視頻示例

    用OpenCV將視頻分解成單幀圖片,圖片合成視頻示例

    今天小編就為大家分享一篇用OpenCV將視頻分解成單幀圖片,圖片合成視頻示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12

最新評論

阿瓦提县| 广水市| 岚皋县| 韶山市| 建水县| 泗水县| 太康县| 新津县| 加查县| 大城县| 通道| 三穗县| 辛集市| 克拉玛依市| 浪卡子县| 沙河市| 平乡县| 宁夏| 澄城县| 策勒县| 平舆县| 固镇县| 郎溪县| 磐石市| 石河子市| 苍溪县| 封丘县| 屯留县| 嘉黎县| 诸城市| 突泉县| 布尔津县| 金华市| 澎湖县| 南乐县| 兰州市| 丹江口市| 贡山| 洞口县| 清苑县| 潜山县|