#python #numpy #ffmpeg #python-imaging-library
Вопрос:
Это мой пример кода ,каждый отдельный кадр одинаков , выходной файл-статическое видео.
import numpy as np
import subprocess
ffmpeg_process = subprocess.Popen(
["ffmpeg", '-y', '-f', 'image2pipe', '-vcodec', 'mjpeg', '-s', '300x300', '-i', '-', '-an', '-r', '24', '-pix_fmt',
'gray', 'video.mp4'],
stdin=subprocess.PIPE)
gray = np.identity(300, np.uint8) * 255
for i in range(100):
import PIL.Image
PIL.Image.fromarray(gray).save(ffmpeg_process.stdin, "JPEG")
ffmpeg_process.stdin.flush()
ffmpeg_process.stdin.close()
ffmpeg_process.communicate()
Но когда я пытаюсь передать изображение в формате rawvideo вместо «jpeg», на выходе получается мерцающее видео .
import numpy as np
import subprocess
ffmpeg_process = subprocess.Popen(
["ffmpeg", '-y', '-f', 'rawvideo', '-s', '300x300', '-i', '-', '-an', '-r', '24', '-pix_fmt', 'gray', 'video.mp4'],
stdin=subprocess.PIPE)
gray = np.identity(300, np.uint8) * 255
for i in range(100):
ffmpeg_process.stdin.write(gray.tobytes())
ffmpeg_process.stdin.flush()
ffmpeg_process.stdin.close()
ffmpeg_process.communicate()
Что не так с моим кодом ?
Комментарии:
1. Вы должны указать правильный формат пикселей для ввода, используя
-pixel format
помещенный ранее-i
.2. @Gyan Я пробовал -pixel_format и-pxi_fmt ,оба работали ,в чем разница ?