簡體   English   中英

將單個 png 文件轉換為 mp4

[英]Convert single png file to mp4

我正在嘗試找到一種將單個 png 圖像轉換為具有指定長度的 mp4 文件的方法。 在嘗試制作更長(多個小時)的視頻時,我發現的解決方案緩慢且不可靠。

這是我目前在 Python 3 中的解決方案:

import os
import cv2

video_name = 'video.avi'
frame = cv2.imread('image.png')
height, width, layers = frame.shape

time = 300
    
video = cv2.VideoWriter(video_name, 0, 1 / 10, (width,height))

for i in range(int(time / 10)):
    video.write(cv2.imread(os.path.join('.', 'image.png')))

video.write(cv2.imread('image.png'))

cv2.destroyAllWindows()
video.release()

基本上相同的圖像被多次附加以組成視頻,我發現合並非常費力,因此將 fps 設置為 0.1 秒。

這感覺像是錯誤的方法,所以任何解決方案都值得贊賞

你會喜歡 PyAV。 它是 ffmpeg 庫的適當包裝器,而不是您在隨機 python 包中找到的常見subprocess進程 kludges。

它有一個示例,其中使用自定義演示時間戳而不是固定幀速率編寫幀。 由於 ffmpeg 沒有在他們自己的文檔中明確說明這些事情,數學/用法有點模糊。

基本上你設置av.VideoFrame.pts就是這樣。

https://github.com/PyAV-Org/PyAV/blob/main/examples/numpy/generate_video_with_pts.py

請理解,對於某些視頻播放器來說,幀之間的時間異常長的視頻可能是一個挑戰,至少在嘗試尋找而不是順序播放時是這樣。

OpenCV 不是媒體庫。 它的視頻 I/O 功能旨在方便而不靈活。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM