簡體   English   中英

以每秒 60 幀的速度在 Python 中寫入視頻

[英]Write video in Python at 60 frames per second

我想使用 Python 創建一個每秒 60 幀的視頻文件。

我嘗試如下制作兩分鍾的視頻( DURATION_SECONDS = 120 ),但我得到的視頻持續時間為 4 分 48 秒而不是 2 分鍾。 所以幀速率似乎是 25,即使我將 60 傳遞給FFmpegWriter 我究竟做錯了什么?

FRAMES_PER_SECOND = 60
DURATION_SECONDS = 120

import skvideo
skvideo.setFFmpegPath('C:\\ffmpeg\\x64')
import skvideo.io
import numpy as np

video_writer = skvideo.io.FFmpegWriter("test.mp4", outputdict={'-r':str(FRAMES_PER_SECOND)})

for i in range(DURATION_SECONDS*FRAMES_PER_SECOND):
    video_writer.writeFrame(np.zeros((100,100)))
    
video_writer.close()

我也得到與outputdict={'-vf':f"fps={FRAMES_PER_SECOND}"}相同的結果

解決方案是將inputdict={'-framerate':str(FRAMES_PER_SECOND)}傳遞給FFmpegWriter而不是使用-routputdict

inputdictoutputdict都沒有記錄在skvideo中(沒有提到ffmpeg文檔,沒有示例), -framerate文檔中也沒有正確記錄ffmpeg (它談到的是抓取而不是保存,並聲稱默認值是30000/1001即使它是25 ),甚至在調用-framerate ffmpeg --help時也沒有提到 -framerate 。

取而代之的是這個自我回答 盡管在該線程中從 StackOverflow 社區收到了 -3 的負分,但請向 @Goury 大喊不刪除該線程。 Downvotes 意味着“沒有研究工作、不清楚或沒有用”,但這些都不是真的。

暫無
暫無

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

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