2009-11-20 20 views
17

साथ वीडियो फ़ाइलों से बनाया जा रहा है थंबनेल मैं एक वीडियो फ़ाइल के लिए थंबनेल बनाने के लिए एक बार मैं एक webapp चल अजगर पर अपलोड किए गए की जरूरत है।अजगर

मैं इस बारे में जाना होगा ... मैं एक पुस्तकालय है कि मूल रूप से या तो मेरे लिए यह कर सकते हैं की जरूरत है, या कि वीडियो फ़ाइलों से बाहर छवि फ्रेम (कई स्वरूपों में से) पढ़ सकते हैं स्वचालित रूप से।

+1

सी [इस उत्तर] [1] कैसे GStreamer और अजगर के साथ यह करने के लिए। [1]: http://stackoverflow.com/a/16478342/1049318 –

उत्तर

8

PyMedia का एक सरल संयोजन और PIL AVI, ASF, या MPEG फ़ाइलों के लिए चाल करना होगा। PyMedia आपको फ्रेम निकालने देता है (डीकोडर() दिनचर्या का उपयोग करके), जबकि पीआईएल में एक साधारण थंबनेल() दिनचर्या है।

+0

बहुत सराहना की। – Alterlife

+0

पायमीडिया पायथन 3.x पर काम नहीं करता है क्या आपके पास एक और संभावित समाधान है? – EduardoMaia

+0

@EduardoMaia इन दिनों मैं शायद ffpepeg, या libav https://libav.org/ पर बाहरी पैकेज का आह्वान करके शुरू करूंगा। –

1

में देखो PythonMagick, ImageMagick करने के लिए एक अजगर इंटरफ़ेस। आपको जो चाहिए वह होना चाहिए। (अस्वीकरण: मैं अजगर इंटरफ़ेस से पहले का इस्तेमाल किया है नहीं है, लेकिन मैं जानता हूँ कि ImageMagick अच्छा मोजो है।)

3

आप भंडारण और ट्रांसकोडिंग के लिए यूट्यूब एपीआई का उपयोग और मुक्त करने के लिए फ़ीड थंबनेल हड़पने सकता है। ईमानदारी से, यह ऑनलाइन वीडियो को संभालने का सबसे आसान तरीका है और मैं सिर्फ तृतीय पक्ष सेवा को शिल नहीं कर रहा हूं, मैं उस एपीआई का एक बहुत ही खुश उपयोगकर्ता हूं और आंतरिक वीडियो पथ मैं इसे हटाने में सक्षम था।

10

आप ffvideo

from ffvideo import VideoStream 
pil_image = VideoStream('0.flv').get_frame_at_sec(5).image() 
pil_image.save('frame5sec.jpeg') 
+0

ffvideo पायथन 3.x पर काम नहीं करता है क्या आपके पास एक और संभावित समाधान है? – EduardoMaia

0
import cv2 
vcap = cv2.VideoCapture(filename) 
res, im_ar = vcap.read() 
while im_ar.mean() < threshold and res: 
     res, im_ar = vcap.read() 
im_ar = cv2.resize(im_ar, (thumb_widht, thumb_height), 0, 0, cv2.INTER_LINEAR) 
#to save we have two options 
#1) save on a file 
cv2.imwrite(save_on_filename) 
#2)save on a buffer for direct transmission 
res, thumb_buf = cv2.imencode('.png', im_ar) 
# '.jpeg' etc are permitted 
#get the bytes content 
bt = thumb_buf.tostring() 

"सीमा" का उपयोग कर सकते एक पूर्णांक है। जब आप एक वीडियो फ्रेम प्राप्त करते हैं तो यह कुछ अच्छा थंबनेल प्राप्त करने के लिए बहुत काला, सफेद आदि हो सकता है, आप फ्रेम में सभी पिक्सेल का औसत मान निर्दिष्ट कर सकते हैं।

2

मैं OSX सिएरा पर ffvideo स्थापित नहीं कर सका तो मैं ffmpeg के साथ काम करने का फैसला किया।

OSX:

brew install ffmpeg 

लिनक्स:

apt-get install ffmpeg 

अजगर 3 कोड:

import subprocess 
video_input_path = '/your/video.mp4' 
img_output_path = '/your/image.jpg' 
subprocess.call(['ffmpeg', '-i', video_input_path, '-ss', '00:00:00.000', '-vframes', '1', img_output_path])