Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

442
Vistas
Cómo obtener la duración del video usando cv2

Solo puedo obtener la cantidad de cuadros CAP_PROP_FRAME_COUNT usando CV2.

Sin embargo, no puedo encontrar el parámetro para obtener la duración del video usando cv2.

¿Como hacer eso?

Muchísimas gracias.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

En OpenCV 3, la solución es:

 import cv2 cap = cv2.VideoCapture("./video.mp4") fps = cap.get(cv2.CAP_PROP_FPS) # OpenCV2 version 2 used "CV_CAP_PROP_FPS" frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) duration = frame_count/fps print('fps = ' + str(fps)) print('number of frames = ' + str(frame_count)) print('duration (S) = ' + str(duration)) minutes = int(duration/60) seconds = duration%60 print('duration (M:S) = ' + str(minutes) + ':' + str(seconds)) cap.release()
over 4 years ago · Santiago Trujillo Denunciar

0

cv2 no está diseñado para explorar metadatos de video, por lo que VideoCapture no tiene una API para recuperarlos directamente.

En su lugar, puede "medir" la longitud de la transmisión: busque hasta el final, luego obtenga la marca de tiempo:

 >>> v=cv2.VideoCapture('sample.avi') >>> v.set(cv2.CAP_PROP_POS_AVI_RATIO,1) True >>> v.get(cv2.CAP_PROP_POS_MSEC) 213400.0

La verificación muestra que esto establece el punto después del último cuadro (no antes), por lo que la marca de tiempo es de hecho la longitud total exacta de la transmisión:

 >>> v.get(cv2.CAP_PROP_POS_FRAMES) 5335.0 >>>> v.get(cv2.CAP_PROP_FRAME_COUNT) 5335.0 >>> v.set(cv2.CAP_PROP_POS_AVI_RATIO,0) >>> v.get(cv2.CAP_PROP_POS_FRAMES) 0.0 # the 1st frame is frame 0, not 1, so "5335" means after the last frame
over 4 years ago · Santiago Trujillo Denunciar

0

Capture el video y emita la duración en segundos

 vidcapture = cv2.VideoCapture('myvideo.mp4') fps = vidcapture.get(cv2.CAP_PROP_FPS) totalNoFrames = vidcapture.get(cv2.CAP_PROP_FRAME_COUNT); durationInSeconds = float(totalNoFrames) / float(fps) print("durationInSeconds: ",durationInSeconds,"s")
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda