Декодер Pyqt4 QMovie FFMPEG

Я совсем новичок в pyqt. Поэтому, пожалуйста, прости все мои заблуждения.

У меня проблемы с загрузкой видео напрямую в QMovie:__init__ (self, QString fileName, ...)Сам QMovie кажется довольно требовательным, когда дело доходит до поддержки (декодирования) видеоформатов.

Вот почему я хочу декодировать видеофайлы с помощью FFMPEG, сохранять кадры в QIODevice и передавать устройство в QMovie, используя:__init__ (self, QIODevice device, ...)

Этот код использует FFMPEG для декодирования видеофайла и сохраняет первые 20 кадров в потоке QIODevice в виде JPG. Этот QIODevice подается в QMovie.

Большой! QMovie играет на полной скорости... Но... только один раз... и QMovie.frameCount() возвращается только 1 кадр вместо 20... (при запросе раньше QMovie.start())

Использование PyQt4, imageio, numpy

print('>> FFMPEG Loading file : '+videoFile)

# Use FFMPEG to decode Video through imageio
self.vid=imageio.get_reader(str(videoFile),  'ffmpeg')

# Init QIODevice
byte_array = QtCore.QByteArray()
self.buf = QtCore.QBuffer()
self.movie= QtGui.QMovie(parent)

# Populate 20 Frames Stream 
i=0
self.buf.open(QtCore.QIODevice.Append)

#Sample 20 Frames from videoFile
while i<20:
    # decode / read to rgb24 Frame
    npArray_RGB888 = self.vid.get_data(i).astype(np.uint8)

    # Actually 'append' the Frame data to the Stream as JPG
    npArray_RGB888.save(self.buf, 'JPG')

    #print(' == == '+str(self.buf.data().size()))
    #print(' == == '+str(buf.data()))            

    i+=1

# Close the Stream 
self.buf.close()     

# Load the QIODecvice buffer in QMovie   
# self.movie.setFileName(videoFile) # To decode with QMovie directly
self.movie = QtGui.QMovie(self.buf, 'jpg', self)

print('>>>   FrameCount : '+str(self.movie.frameCount()))

self.movie.start()

Почему фрейм-счёт 1 вместо 20? Что я делаю неправильно?

Есть ли более прямой способ хранения данных результатов FFMPEG в QIODevice? Предполагает загрузку видеофайла сразу в QIODevice вместо каждого кадра в отдельности?

Спасибо заранее.

0 ответов

Другие вопросы по тегам