Как определить время начала и время окончания (секунды с эпохи) видео в 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. "