次のコードを書きました。
from moviepy.editor import *
from PIL import Image
clip= VideoFileClip("video.mp4")
video= CompositeVideoClip([clip])
video.write_videofile("video_new.mp4",fps=clip.fps)
次に、フレームが変更されたかどうかを確認し、変更された場合はどの関数がそれらを変更したかを確認するために、「clip」、「video」、および「video_new.mp4」の最初のフレームを取得して比較しました。
clip1= VideoFileClip("video_new.mp4")
img1= clip.get_frame(0)
img2= video.get_frame(0)
img3= clip1.get_frame(0)
a=img1[0,0,0]
b=img2[0,0,0]
c=img3[0,0,0]
a=24、b=24、しかし c=26 であることがわかりました....配列比較ループを実行すると、'img1' と 'img2' は同一であることがわかりましたが、'img3' は異なっていました。関数 video.write_videofile が配列の変更に関与していると思われます。しかし、私は理由を知りません...誰かが私にこれを説明し、フレームを変更せずにクリップを書く方法を提案できますか?
PS: 、のドキュメントを読みましたが'VideoFileClip'
、有用なものが見つかりませんでした...作業中のコードを記述する前に、正確なフレームを読む必要があります。方法を教えてください。'FFMPEG_VideoWriter'
'FFMPEG_VideoReader'