Как получить 4-символьный код c код для объекта VideoCapture в OpenCV? - PullRequest
0 голосов
/ 07 мая 2020

Как получить четырехзначный код c из объекта VideoCapture в OpenCV 4? Когда я пытаюсь проверить это, я получаю float:

import cv2

movie_name = 'fubar.mp4'
movie = cv2.VideoCapture(movie_path)
codec_code =  movie.get(cv2.CAP_PROP_FOURCC)
print(codec_code)

Это выводит что-то вроде 828601953.0. Существует множество потоков о том, как создать код c код, но я не нашел ни одного о том, как извлечь и прочитать его из произвольного объекта VideoCapture в Python.

Я знаю, что имя файла является информативным (mp4), но на самом деле это не указывает точную четырехсимвольную кодировку, которую я ищу (скажем, если я хочу пересохранить как новый mov ie после некоторой обработки или просто отобразить код пользователю как метаданные).

Связанный поток
Есть поток о том, как это сделать на C ++, если кто-нибудь может перевести на Python это будет ответ, я полагаю:
Qt или OpenCV: распечатать код c видеофайла

1 Ответ

2 голосов
/ 08 мая 2020

Попробуйте следующее:

hex(int(828601953.0))

печатает:

'0x31637661'

Теперь выполните man ascii, чтобы получить таблицу ASCII и найти шестнадцатеричный:

31 = 1
63 = c
76 = v
61 = a

Итак, ваш ЧЕТЫРЕ CC равен avc1.

Не уверен, есть ли лучший способ в Python, но это кажется нормальным:

h = int(828601953.0)
chr(h&0xff) + chr((h>>8)&0xff) + chr((h>>16)&0xff) + chr((h>>24)&0xff) 

печатает:

'avc1'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...