ordigi/elodie/media/video.py

66 lines
1.6 KiB
Python

"""
Author: Jaisen Mathai <jaisen@jmathai.com>
Video package that handles all video operations
"""
# load modules
from distutils.spawn import find_executable
from sys import argv
from datetime import datetime
import mimetypes
import os
import re
import subprocess
import time
from elodie.media.media import Media
"""
Video class for general video operations
"""
class Video(Media):
# class / static variable accessible through get_valid_extensions()
__valid_extensions = ('avi','m4v','mov','mp4','3gp')
"""
@param, source, string, The fully qualified path to the video file
"""
def __init__(self, source=None):
super(Video, self).__init__(source)
# We only want to parse EXIF once so we store it here
self.exif = None
"""
Get the duration of a video in seconds.
Uses ffmpeg/ffprobe
@returns, string or None for a non-video file
"""
def get_duration(self):
if(not self.is_valid()):
return None
source = self.source
result = subprocess.Popen(['ffprobe', source],
stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
for key in result.stdout.readlines():
if 'Duration' in key:
return re.search('(\d{2}:\d{2}.\d{2})', key).group(1).replace('.', ':')
return None
"""
Static method to access static __valid_extensions variable.
@returns, tuple
"""
@classmethod
def get_valid_extensions(Video):
return Video.__valid_extensions
class Transcode(object):
# Constructor takes a video object as it's parameter
def __init__(self, video=None):
self.video = video