Немного неправильный цвет в видеороликах MP4, написанных PyAV.Python

Программы на Python
Ответить
Anonymous
 Немного неправильный цвет в видеороликах MP4, написанных PyAV.

Сообщение Anonymous »

Я пишу видеофайлы MP4 с помощью следующего кода на основе PyAV (получение входных кадров, представленных в виде числовых массивов - сортировка, создаваемая imageio.imread - в качестве входных данных):

Код: Выделить всё

class MP4:
def __init__(self, fname, width, height, fps):
self.output = av.open(fname, 'w', format='mp4')
self.stream = self.output.add_stream('h264', str(fps))
self.stream.width = width
self.stream.height = height
# these 2 lines can be removed and the problem still reproduces:
self.stream.pix_fmt = 'yuv420p'
self.stream.options = {'crf': '17'}
def write_frame(self, pixels):
frame = av.VideoFrame.from_ndarray(pixels, format='rgb24')
packet = self.stream.encode(frame)
self.output.mux(packet)
def close(self):
packet = self.stream.encode(None)
self.output.mux(packet)
self.output.close()
Цвета выходного видео MP4 немного отличаются (очевидно, темнее) от цветов входных изображений:
Снимок экрана средства просмотра изображений показ входного кадра:
Изображение

Снимок экрана VLC, воспроизводящего выходное видео MP4:
Изображение

Как решить эту проблему? Я по-разному возился с атрибутомframe.colorspace, параметрами потока и VideoFrame.reformat, но это ничего не изменило; конечно, я мог ошибаться.
Как вы можете видеть, входные данные имеют простые плоские цветовые области, поэтому я сомневаюсь, что это какой-либо артефакт сжатия, например, YUV420 теряет часть цветности. информация или что-то подобное.

Подробнее здесь: https://stackoverflow.com/questions/790 ... en-by-pyav
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»