關於微信小程序視頻會開頭黑屏,非從0秒開始播放處理

主要是由於視頻的色彩空間引起的

import cv2
from moviepy.editor import VideoFileClip, AudioFileClip
import time
# 輸入視頻文件路徑
input_video_path = '/Users/a3530/Downloads/b62398c3af39755f6e7e5da6bec2bdce480p.mp4'

def get_new_video(input_video_path):
    input_video_name = input_video_path.split("/")[-1]
    input_audio_path = input_video_name.replace("mp4","mp3")
    # 輸出視頻文件路徑
    output_video_path = f'tmp_{input_video_name}'
    res_video_path = f'new_{input_video_name}'
    # 打開輸入視頻文件
    video_clip = VideoFileClip(input_video_path)
    # 提取視頻的音頻部分
    audio_clip = video_clip.audio
    # 保存音頻文件
    audio_clip.write_audiofile(input_audio_path, codec='mp3')
    print("提取音頻結束")

    # 打開輸入視頻文件
    cap = cv2.VideoCapture(input_video_path)
    # 獲取輸入視頻的參數
    frame_width = int(cap.get(3))  # 獲取幀寬度
    frame_height = int(cap.get(4))  # 獲取幀高度
    fps = int(cap.get(5))  # 獲取幀率
    # 設置輸出視頻編碼器爲H.264
    fourcc = cv2.VideoWriter_fourcc(*'H264')
    # 創建輸出視頻文件
    out = cv2.VideoWriter(output_video_path, fourcc, fps, (frame_width, frame_height))
    # 逐幀讀取、轉換、寫入
    while True:
        ret, frame = cap.read()  # 讀取一幀

        if not ret:
            break  # 如果沒有更多幀可讀,退出循環

        # 在這裏進行顏色空間轉換,確保將顏色描述轉換爲HD (1-1-1)的RGB空間
        # 這裏的示例是複製幀,你可以根據需要進行顏色空間轉換

        # 寫入幀到輸出視頻文件
        out.write(frame)
    # 釋放視頻對象
    cap.release()
    out.release()
    print("修改視頻色彩空間結束")
    # 打開輸入視頻文件
    video_clip = VideoFileClip(output_video_path)
    # 打開輸入音頻文件
    audio_clip = AudioFileClip(input_audio_path)
    video_with_audio_clip = video_clip.set_audio(audio_clip)
    video_with_audio_clip.write_videofile(res_video_path, codec='libx264')
    print("視頻添加音頻完成")
    return res_video_path

if __name__ == '__main__':
    print(get_new_video(input_video_path))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章