Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

441
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!