Вы можете преобразовать строку в список, пройти каждую букву и подсчитать, если вы находитесь в скобках или нет. В ToRemove вы собираете позиции пробелов, которые затем удаляете из списка. Затем вы конвертируете список обратно в строку ...
res = '(321, 3)-(m-5, 5) -(31,1)'
r = list(res)
insideBracket = 0
toRemove = []
for pos,letter in enumerate(r):
if letter == '(':
insideBracket += 1
elif letter == ')':
insideBracket -= 1
if insideBracket > 0:
if letter == ' ':
toRemove.append(pos)
for t in toRemove[::-1]:
r.pop(t)
result = ''.join(r)
print(result)
Простой ответ: Вы должны сделать, чтобы AVFormatContext возразил лжи вокруг. duration
свойство говорит Вам, какой длины Ваш файл с точки зрения метки времени, умноженной на 1 000, который может использоваться в av_seek_frame, так рассматривайте его как 100%. Тогда можно вычислить, как далеко в видео Вы хотите искать на.
, если Вы хотите продвинуться один кадр, просто назовите av_read_frame и avcodec_decode_video, пока он не заполняет got_picture_ptr ненулевым значением. Прежде, чем назвать avcodec_decode_video удостоверяются, что пакет от av_read_frame от видеопотока. avcodec_decode_video тогда заполнит структуру AVFrame, которую можно использовать, чтобы сделать что-либо с.