2012-07-23 50 views
0

我最近冒險處理音頻和視頻相關的編碼,並且我對他們中的任何一個都沒有有限的瞭解。mpeg-2庫提取視頻持續時間

現在,我有一個項目,現在正在處理mpeg-2視頻。是否有任何可用於提取mpeg-2視頻本身持續時間的python庫?

+0

您是否嘗試過使用Python的VLC綁定? – zenpoy 2012-07-23 15:16:20

+0

謝謝@zenpoy,我目前正在研究VLC綁定。如果我有任何問題,我會再次回覆你= 3。感謝您回答我的問題。 – Winson 2012-07-23 16:13:53

+0

hello @zenpoy,我有問題得到VLC綁定工作在我的Python是在版本2.7。你有任何相關網站有安裝它的指令嗎? – Winson 2012-07-23 17:14:23

回答

1

我不知道任何純粹的python實現。但也許OpenCV的綁定爲你工作:

import cv 
cvcapture = cv.CaptureFromFile("movie.mpg") 
cv.GetCaptureProperty(cvcapture,cv.CV_CAP_PROP_FRAME_COUNT) 

否則,馬爺您可以使用pyffmpeg。注意:根據我的經驗,幀數通常不是很準確。 Opencv 2.6工作得很好,但是更早的版本有時只是垃圾。

編輯:啊,對不起,我的錯誤:這隻給你幀數。對於持續時間:與幀速率乘以這個:

cv.GetCaptureProperty(cvcapture,cv.CV_CAP_PROP_FPS) 
+0

感謝@kinch回答我的文章,但我已經探討了opencv,它似乎也是大型圖書館爲我的迷你項目。看來opencv的庫是一個驚人的2.4GB,這對我的項目來說太大了。另外,我無法使用ffmpeg,因爲項目要求明確規定不要使用它。無論哪種方式,我同意這兩個圖書館都被很好地採納,並且非常有用。 – Winson 2012-07-23 16:17:32

+0

Oh ya,@kinch,之所以我們不簡單地使用framecount/FPS是因爲在視頻中有兩種類型,CBR(恆定比特率)和VBR(可變比特率)。在這種情況下,如果我們使用famecount/FPS,它將僅適用於CBR,但不適用於VBR。分享知識沒有壞處= 3 – Winson 2012-07-23 16:22:22

+0

感謝@kinch,我被授予了使用FFmpeg的綠燈,並且它有奇蹟。 = 3感謝您的幫助。 – Winson 2012-07-28 14:15:56

1

除了OpenCV的或ffmpeg的另一種選擇是可能的gstreamer:

import gst 
from gst.pbutils import Discoverer 

d = Discoverer(5000000000) 
vid_info = d.discover_uri("file://<path>") # needs to be a full path 
duration = vid_info.get_duration() 

# convert to seconds 
duration/gst.SECOND 

然而,這種解決隨機crashs(每100文件或左右)與目前的gstreamer版本(在Ubuntu 12.04上)。也許你需要一些gstreamer插件來處理mpg-2;我目前不知道哪些。

我也在研究一個或多或少的大型媒體項目,它應該能夠處理大量的編解碼器和容器,並且我們使用的每個庫都或多或少是一團糟(錯誤的值或不穩定)。也許這裏有一些專門的mpg庫。

哦,VLC是使用ffmpeg;所以如果你不允許使用ffmpeg,你也許也不允許使用VLC。

相關問題