Now can launch one process per core, and launch new ones when the old ones end
This commit is contained in:
parent
13f9e67eb1
commit
86f77faa3f
13 changed files with 761 additions and 77 deletions
|
|
@ -17,8 +17,9 @@
|
|||
|
||||
import subprocess
|
||||
import devede.configuration_data
|
||||
import devede.executor
|
||||
|
||||
class mplayer_detector:
|
||||
class mplayer_detector(devede.executor.executor):
|
||||
|
||||
supports_analize = True
|
||||
supports_play = True
|
||||
|
|
@ -39,81 +40,92 @@ class mplayer_detector:
|
|||
|
||||
self.config = devede.configuration_data.configuration.get_config()
|
||||
|
||||
def get_film_data(self,movie):
|
||||
def get_film_data(self, file_name):
|
||||
""" processes a file, refered by the FILE_MOVIE movie object, and fills its
|
||||
main data (resolution, FPS, length...) """
|
||||
|
||||
video = self.get_film_data2(movie, True)
|
||||
(video, audio, length) = self.analize_film_data(file_name, True)
|
||||
|
||||
if (video):
|
||||
self.get_film_data2(movie, False)
|
||||
if (video != 0):
|
||||
self.analize_film_data(file_name, False)
|
||||
return False # no error
|
||||
else:
|
||||
return True # the file is not a video file; maybe an audio-only file, or another thing
|
||||
|
||||
def get_film_data2(self,movie,check_audio):
|
||||
def analize_film_data(self,file_name,check_audio):
|
||||
|
||||
if (check_audio):
|
||||
frames = "0"
|
||||
else:
|
||||
frames = "1"
|
||||
|
||||
command_line = ["mplayer","-loop","1","-identify", "-vo", "null", "-ao", "null", "-frames", frames , movie.file_name]
|
||||
command_line = ["mplayer","-loop","1","-identify", "-vo", "null", "-ao", "null", "-frames", frames , file_name]
|
||||
|
||||
handle = subprocess.Popen(command_line, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
|
||||
(stdout, stderr) = handle.communicate()
|
||||
|
||||
minimum_audio=-1
|
||||
movie.audio_list=[]
|
||||
movie.audio_streams = 0
|
||||
movie.video_streams = 0
|
||||
movie.original_width = 0
|
||||
movie.original_height = 0
|
||||
self.audio_list=[]
|
||||
self.audio_streams = 0
|
||||
self.video_streams = 0
|
||||
self.original_width = 0
|
||||
self.original_height = 0
|
||||
self.original_length = 0
|
||||
self.original_videorate = 0
|
||||
self.original_audiorate = 0
|
||||
self.original_audiorate_uncompressed = 0
|
||||
self.original_fps = 0
|
||||
|
||||
for line in str(stdout).split("\\n"):
|
||||
#line=self.remove_ansi(line)
|
||||
line=self.remove_ansi(line)
|
||||
if line == "":
|
||||
continue
|
||||
position=line.find("ID_")
|
||||
if position==-1:
|
||||
continue
|
||||
line=line[position:]
|
||||
if (not check_audio):
|
||||
if line[:16]=="ID_VIDEO_BITRATE":
|
||||
movie.original_videorate=int(int(line[17:])/1000)
|
||||
if line[:14]=="ID_VIDEO_WIDTH":
|
||||
movie.original_width=int(line[15:])
|
||||
if line[:15]=="ID_VIDEO_HEIGHT":
|
||||
movie.original_height=int(line[16:])
|
||||
if line[:15]=="ID_VIDEO_ASPECT":
|
||||
movie.original_aspect_ratio=float(line[16:])
|
||||
if line[:12]=="ID_VIDEO_FPS":
|
||||
movie.original_fps=float(line[13:])
|
||||
if line[:16]=="ID_AUDIO_BITRATE":
|
||||
movie.original_audiorate=int(int(line[17:])/1000)
|
||||
if line[:13]=="ID_AUDIO_RATE":
|
||||
movie.original_audiorate_uncompressed=int(line[14:])
|
||||
if line[:9]=="ID_LENGTH":
|
||||
movie.original_length=int(float(line[10:]))
|
||||
|
||||
if line[:16]=="ID_VIDEO_BITRATE":
|
||||
self.original_videorate=int(int(line[17:])/1000)
|
||||
if line[:14]=="ID_VIDEO_WIDTH":
|
||||
self.original_width=int(line[15:])
|
||||
if line[:15]=="ID_VIDEO_HEIGHT":
|
||||
self.original_height=int(line[16:])
|
||||
if line[:15]=="ID_VIDEO_ASPECT":
|
||||
self.original_aspect_ratio=float(line[16:])
|
||||
if line[:12]=="ID_VIDEO_FPS":
|
||||
self.original_fps=float(line[13:])
|
||||
if line[:16]=="ID_AUDIO_BITRATE":
|
||||
self.original_audiorate=int(int(line[17:])/1000)
|
||||
if line[:13]=="ID_AUDIO_RATE":
|
||||
self.original_audiorate_uncompressed=int(line[14:])
|
||||
if line[:9]=="ID_LENGTH":
|
||||
self.original_length=int(float(line[10:]))
|
||||
|
||||
if line[:11]=="ID_VIDEO_ID":
|
||||
movie.video_streams+=1
|
||||
self.video_streams+=1
|
||||
if line[:11]=="ID_AUDIO_ID":
|
||||
movie.audio_streams+=1
|
||||
self.audio_streams+=1
|
||||
audio_track=int(line[12:])
|
||||
if (minimum_audio == -1) or (minimum_audio>audio_track):
|
||||
minimum_audio=audio_track
|
||||
movie.audio_list.append(audio_track)
|
||||
self.audio_list.append(audio_track)
|
||||
|
||||
movie.original_size = str(movie.original_width)+"x"+str(movie.original_height)
|
||||
if (movie.original_aspect_ratio == None) or (movie.original_aspect_ratio <= 1.0):
|
||||
if (movie.original_height != 0):
|
||||
movie.original_aspect_ratio = (float(movie.original_width))/(float(movie.original_height))
|
||||
if (check_audio):
|
||||
|
||||
if (movie.original_aspect_ratio != None):
|
||||
movie.original_aspect_ratio = (float(int(movie.original_aspect_ratio*1000.0)))/1000.0
|
||||
return (self.video_streams, self.audio_streams, self.original_length)
|
||||
|
||||
if (movie.video_streams == 0):
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
self.original_size = str(self.original_width)+"x"+str(self.original_height)
|
||||
if (self.original_aspect_ratio == None) or (self.original_aspect_ratio <= 1.0):
|
||||
if (self.original_height != 0):
|
||||
self.original_aspect_ratio = (float(self.original_width))/(float(self.original_height))
|
||||
|
||||
if (self.original_aspect_ratio != None):
|
||||
self.original_aspect_ratio = (float(int(self.original_aspect_ratio*1000.0)))/1000.0
|
||||
|
||||
if (self.video_streams == 0):
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
Loading…
Add table
Add a link
Reference in a new issue