save derivatives

This commit is contained in:
j 2010-09-15 15:03:00 +02:00
parent 286e56561a
commit a12e207a28
3 changed files with 21 additions and 14 deletions

View file

@ -173,17 +173,18 @@ def stream(video, target, profile, info):
cmd += ['-f','webm', target] cmd += ['-f','webm', target]
print cmd print cmd
p = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) p = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=open('/dev/null', 'w'), stderr=subprocess.STDOUT)
p.wait() p.communicate()
if format == 'mp4': if format == 'mp4':
cmd = ['qt-faststart', "%s.mp4"%target, target] cmd = ['qt-faststart', "%s.mp4"%target, target]
print cmd print cmd
p = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) p = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=open('/dev/null', 'w'), stderr=subprocess.STDOUT)
p.wait() p.communicate()
os.unlink("%s.mp4"%target) os.unlink("%s.mp4"%target)
return True
def run_command(cmd, timeout=10): def run_command(cmd, timeout=10):
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) p = subprocess.Popen(cmd, stdout=open('/dev/null', 'w'), stderr=subprocess.STDOUT)
while timeout > 0: while timeout > 0:
time.sleep(0.2) time.sleep(0.2)
timeout -= 0.2 timeout -= 0.2

View file

@ -443,7 +443,7 @@ class Movie(models.Model):
''' '''
def frame(self, position, width=128): def frame(self, position, width=128):
stream = self.streams.filter(profile=settings.VIDEO_PROFILE+'.webm')[0] stream = self.streams.filter(profile=settings.VIDEO_PROFILE+'.webm')[0]
path = os.path.join(settings.MEDIA_ROOT, movieid_path(self.movieId), 'frame', "%d"%width, "%s.jpg"%position) path = os.path.join(settings.MEDIA_ROOT, movieid_path(self.movieId), 'frames', "%d"%width, "%s.jpg"%position)
if not os.path.exists(path): if not os.path.exists(path):
extract.frame(stream.video.path, path, position, width) extract.frame(stream.video.path, path, position, width)
return path return path
@ -832,7 +832,7 @@ class Collection(models.Model):
return self.users.filter(id=user.id).count() > 0 return self.users.filter(id=user.id).count() > 0
def movieid_path(h): def movieid_path(h):
return os.path.join('movie', h[:2], h[2:4], h[4:6], h[6:]) return os.path.join('movies', h[:2], h[2:4], h[4:6], h[6:])
def stream_path(stream): def stream_path(stream):
return os.path.join(movieid_path(stream.movie.movieId), stream.profile) return os.path.join(movieid_path(stream.movie.movieId), stream.profile)
@ -854,25 +854,31 @@ class Stream(models.Model):
def extract_derivatives(self): def extract_derivatives(self):
if settings.VIDEO_H264: if settings.VIDEO_H264:
profile = self.profile.replace('.webm', '.mp4') profile = self.profile.replace('.webm', '.mp4')
if Stream.objects.filter(profile=profile, source=self).count() == 0: derivative, created = Stream.objects.get_or_create(profile=profile, movie=self.movie)
derivative = Stream(movie=self.movie, source=self, profile=profile) if created:
derivative.source = self
derivative.video.name = self.video.name.replace(self.profile, profile) derivative.video.name = self.video.name.replace(self.profile, profile)
derivative.encode() derivative.encode()
derivative.save()
for p in settings.VIDEO_DERIVATIVES: for p in settings.VIDEO_DERIVATIVES:
profile = p + '.webm' profile = p + '.webm'
target = self.video.path.replace(self.profile, profile) target = self.video.path.replace(self.profile, profile)
if Stream.objects.filter(profile=profile, source=self).count() == 0: derivative, created = Stream.objects.get_or_create(profile=profile, movie=self.movie)
derivative = Stream(movie=movie.file, source=self, profile=profile) if created:
derivative.source = self
derivative.video.name = self.video.name.replace(self.profile, profile) derivative.video.name = self.video.name.replace(self.profile, profile)
derivative.encode() derivative.encode()
derivative.save()
if settings.VIDEO_H264: if settings.VIDEO_H264:
profile = p + '.mp4' profile = p + '.mp4'
if Stream.objects.filter(profile=profile, source=self).count() == 0: derivative, created = Stream.objects.get_or_create(profile=profile, movie=self.movie)
derivative = Stream(movie=self.movie, source=self, profile=profile) if created:
derivative.source = self
derivative.video.name = self.video.name.replace(self.profile, profile) derivative.video.name = self.video.name.replace(self.profile, profile)
derivative.encode() derivative.encode()
derivative.save()
return True return True
def encode(self): def encode(self):

View file

@ -1,6 +1,7 @@
if(typeof(app.afterLaunch) == "undefined") if(typeof(app.afterLaunch) == "undefined")
app.afterLaunch = []; app.afterLaunch = [];
//app.afterLaunch[0]();
app.afterLaunch.push(function() { app.afterLaunch.push(function() {
if (typeof(OxFF) == 'undefined') if (typeof(OxFF) == 'undefined')
return; return;
@ -32,7 +33,6 @@ app.afterLaunch.push(function() {
.append("For this part of the page to work, you have to allow OxFF to send data to this site") .append("For this part of the page to work, you have to allow OxFF to send data to this site")
.open(); .open();
} else { } else {
Ox.print('we got it, lets party');
_this.api.login(app.user.username); _this.api.login(app.user.username);
_this.api.volumes(function(result) { _this.api.volumes(function(result) {
var data = JSON.parse(result); var data = JSON.parse(result);