как читать видеоданные из памяти, используя pyqt5

у меня есть зашифрованный видеофайл, я хочу расшифровать этот файл в память, а затем использовать эти данные для воспроизведения видео. но класс qt mediaplayer предназначен для передачи имени файла, мне нужен хороший способ?

это мой код

#!/usr/bin/env python

from PyQt5.QtCore import QFile, QFileInfo, QIODevice, QUrl, QDataStream
from PyQt5.QtWidgets import QApplication
from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent
from PyQt5.QtMultimediaWidgets import QVideoWidget

if __name__ == '__main__':

import sys
app = QApplication(sys.argv)
player = QMediaPlayer()

file = QFile('mymusic.avi')
stream = QDataStream(file)
# this is where i want read form stream? how can i read from stream?
player.setMedia(QMediaContent(QUrl.fromLocalFile('mymusic.avi')))

videoWidget = QVideoWidget()
player.setVideoOutput(videoWidget)
videoWidget.show()

player.play()
sys.exit(app.exec_())

смотри, param это имя файла, но я хочу читать из бинарных данных, как мне это сделать?


person xiao ta    schedule 11.03.2018    source источник
comment
В этом вопросе отсутствует много деталей, и, вероятно, он будет закрыт без серьезных изменений!   -  person sascha    schedule 11.03.2018
comment
Вы хотите передать необработанные данные в QMediaPlayer?   -  person eyllanesc    schedule 11.03.2018
comment
я изменил, я действительно надеюсь, что вы можете дать мне решение.   -  person xiao ta    schedule 11.03.2018
comment
@eyllanesc да, я очень надеюсь, что вы дадите мне решение.   -  person xiao ta    schedule 11.03.2018
comment
Вы можете показать, как вы получаете или генерируете необработанные видеоданные в python.   -  person eyllanesc    schedule 11.03.2018
comment
@eyllanesc, вы правы, подождите, я изменю это. Сначала спасибо!   -  person xiao ta    schedule 11.03.2018
comment
@eyllanesc я изменил, пожалуйста, посмотрите на меня?   -  person xiao ta    schedule 11.03.2018


Ответы (1)


Я решил эту проблему, и решения следующие: код

#!/usr/bin/env python

from PyQt5.QtCore import QFile, QFileInfo, QIODevice, QUrl, QDataStream, QBuffer, QByteArray
from PyQt5.QtWidgets import QApplication
from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent
from PyQt5.QtMultimediaWidgets import QVideoWidget

if __name__ == '__main__':

import sys
app = QApplication(sys.argv)
player = QMediaPlayer()

file = QFile('mymusic-encrypt.avi')

isOpen = file.open(QIODevice.ReadOnly)

buffer = QBuffer()
buffer.open(QIODevice.ReadWrite)

player.setMedia(QMediaContent(), buffer)

if isOpen:
    while not file.atEnd():
        temp = file.readLine()
        # temp = QByteArray.fromBase64(temp)
        buffer.write(temp)

videoWidget = QVideoWidget()
player.setVideoOutput(videoWidget)
videoWidget.show()

player.play()
sys.exit(app.exec_())

мне нужно внимательно прочитать API, спасибо всем.

person xiao ta    schedule 11.03.2018