Ошибка при загрузке всего видеофайла в память - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь загрузить весь видеофайл в оперативную память для быстрого доступа. я хочу, чтобы файл был таким, какой он есть, без какой-либо расшифровки и т. д. c. Я просто хочу указать место в оперативной памяти вместо удаленного драйвера. Файл всего 2 ГБ. У меня 128 ГБ оперативной памяти. Мне нужно делать покадровый анализ, а подготовка с сервера занимает вечно.

Я думал, что сделаю что-то вроде этого

with open('my_file.txt', 'r') as f:
    file_content = f.read() # Read whole file in the file_content string
print(file_content)

Но я могу ошибиться. Есть ли другой способ сделать это? Как и при использовании библиотеки ввода-вывода?

In [11]: u = open("/net/server/raw/2020.04.02/IMG_9261.MOV",'r')

In [12]: data = u.read()

---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
<ipython-input-12-eecbc439fbf0> in <module>
----> 1 data = u.read()

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/codecs.py in decode(self, input, final)
    320         # decode input (taking the buffer into account)
    321         data = self.buffer + input
--> 322         (result, consumed) = self._buffer_decode(data, self.errors, final)
    323         # keep undecoded input until the next call
    324         self.buffer = data[consumed:]

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc9 in position 31: invalid continuation byte

В этом примере используется request.get, но это работает только для HTTP, у меня есть локальный сервер, который я могу смонтировать с помощью NFS

import requests
from pygame import mixer
import io

r = requests.get("http://example.com/somesmallmp3file.mp3")
inmemoryfile = io.BytesIO(r.content)

mixer.music.init()
mixer.music.load(inmemoryfile)
mixer.music.play()

1 Ответ

1 голос
/ 03 апреля 2020

Добавление 'b' для двоичного режима должно заставить его работать.

u = open("/net/server/raw/2020.04.02/IMG_9261.MOV",'rb')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...