Как определить время начала и время окончания (секунды с эпохи) видео в python?

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

До сих пор то, что я делал, это найти время File Modified и использовать это как конечную точку, а затем вычесть продолжительность, чтобы найти начало. В некоторых случаях это очень хорошо работает, но кажется, что некоторые камеры не точно пишут/модифицируют файлы линейным образом, поэтому иногда время начала и окончания видеофайлов перекрывается, когда вы явно не можете записывать 2 файла на то же время.

Есть ли какой-нибудь другой метод или часть метаданных, которые я мог бы получить, используя say ffprobe (или альтернативу) в python, чтобы точно определить, когда было запущено видео и когда оно было закончено?

Ответ 1

Ваши лучшие инструменты:

ffprobe
mediainfo
exiftool

В них можно найти много типов датстопов, но я никогда не тестировал их на точность. Если между этими инструментами и марками файловой системы вы не можете найти нужные метаданные, тогда вам нужно лучше отслеживать во время съемок. Я кинопроизводитель, а также программист, и я не могу понять, почему вам понадобится эпоха, но я знаю, что вам нужно лучше отслеживать во время производства.

Попробуйте цифровой шкаф с часами или используйте какой-то цифровой рекордер, где вы можете управлять созданием временной метки во время записи.

Кроме того, как отмечали другие, этот вопрос не фокусируется. Какую проблему ты пытаешься решить? Я могу только думать о синхронизации между медиа-источниками, в этом случае использую какое-то программное обеспечение, такое как множественные глаза.

Ответ 2

Быстрый совет - использовать команду system() из python.

Вариант №1:

   $ ffmpeg -i file.flv 2>&1 | grep "Duration"

Вариант № 2:

   $ mediainfo --Inform="General;%Duration%" [inputfile]

Ответ 3

Если вы используете свой код в той же системе, вы можете использовать библиотеку время для определения времени начала и окончания видеоролика.

Если вы хотите разницу в секундах с эпохи, вы можете использовать функцию time.time().

import time

starttime = time.time()

Вы можете связать это с событиями onclick, используя Tkinter

Ответ 4

Использование библиотеки времени должно решить вашу проблему. Попробуйте следующее:

import time
timer = time.time()
print(timer)

В противном случае pygame может быть очень полезен со временем и формированием. Он предназначен для разработки игр, но точных и эффективных функций времени.

import pygame, sys
pygame.init()
timer = pygame.time.Clock() " Call after video has begun playback "
timer.tick() " Call onced playback has ended "
video_time = timer.get_time() " Returns previous time amount in milleseconds. "