2010-03-13 15 views

उत्तर

17

कुछ भी gstreamer डीकोड की अवधि प्राप्त करने के लिए यहां एक साधारण पायथन स्क्रिप्ट है। ध्यान दें कि gstreamer में हर बार nanoseconds में हैं।

duration.py:

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
from __future__ import division 

import sys 
import gobject 
gobject.threads_init() 
import pygst 
pygst.require("0.10") 
import gst 
d = gst.parse_launch("filesrc name=source ! decodebin2 ! fakesink") 
source = d.get_by_name("source") 
source.set_property("location", sys.argv[1]) 
d.set_state(gst.STATE_PLAYING) 
d.get_state() 
format = gst.Format(gst.FORMAT_TIME) 
duration = d.query_duration(format)[0] 
d.set_state(gst.STATE_NULL) 

import datetime 
delta = datetime.timedelta(seconds=(duration/gst.SECOND)) 
print delta 

उदाहरण:

$ python duration.py VIDEO_TS/VTS_03_1.VOB 
0:20:10.528000 
$ python duration.py ~/Movies/BigBuckBunny_640x360.m4v 
0:09:56.461667 
+0

यह मेरे लिए धारा की कुल अवधि से कम देता है। यह 83 सेकंड एमकेवी वीडियो के लिए 880ms देता है, उदाहरण के लिए। शायद मेटाडेटा के साथ एक समस्या है? अन्य खिलाड़ी फ़ाइल को सही तरीके से खेलते हैं और एमकेवी स्वयं जीस्ट्रीमर के उसी संस्करण द्वारा उत्पादित होता है। – fviktor

2

धारा 6.5 देखें।

http://majorsilence.com/pygtk_audio_and_video_playback_gstreamer

यह एक पाइप लाइन बना सकते हैं और इसे मैन्युअल रूप से चलाने की जरूरत से बचा जाता है।

+1

क्या आप इस लेख से अपनी पोस्ट में मूल विचार शामिल कर सकते हैं? लिंक केवल समय के साथ सड़ने के लिए जवाब देते हैं। (यह लिंक पहले से ही 404 है) – ComputerDruid

0

पहिया का पुनः आविष्कार क्यों किया?
उपयोग:
जीएसटी-आविष्कारक-1.0 फ़ाइल नाम
या
जीएसटी-आविष्कारक-0.10 फ़ाइल नाम

फ़ाइल प्रकार आप जोड़ना चाहते हैं पर निर्भर करता है "| ग्रेप अवधि" टैग जो लंबा हो सकता है से बचने के लिए ।
वीडियो, flac और एमपी 3 फ़ाइलों के लिए अपर्याप्त टैग की छेड़छाड़ के लिए यह उन्हें बाहर करने के लिए grep का उपयोग करके चाल करना चाहिए।
gst-discoverer-1.0 filename | grep -v Tags | grep -v ID3v2 | grep -v image | grep -v attachment