Mercurial > code > home > repos > light9
changeset 1956:ec816fd31c83
reformat
Ignore-this: efe8ed938af5fbba3b1acdb8bb1efecd
author | Drew Perttula <drewp@bigasterisk.com> |
---|---|
date | Thu, 06 Jun 2019 02:59:26 +0000 |
parents | 9ee42b88299b |
children | a745bee5c419 |
files | bin/vidref light9/vidref/videorecorder.py |
diffstat | 2 files changed, 30 insertions(+), 26 deletions(-) [+] |
line wrap: on
line diff
--- a/bin/vidref Thu Jun 06 02:56:46 2019 +0000 +++ b/bin/vidref Thu Jun 06 02:59:26 2019 +0000 @@ -16,19 +16,20 @@ """ from run_local import log -from twisted.internet import reactor, defer - +from typing import cast import logging, optparse, json, base64, os, glob -import cyclone.web, cyclone.httpclient, cyclone.websocket -from light9 import networking, showconfig -from light9.vidref import videorecorder -from rdflib import URIRef -from light9.newtypes import Song -from rdfdb.syncedgraph import SyncedGraph -from cycloneerr import PrettyErrorHandler -from typing import cast + from greplin import scales from greplin.scales.cyclonehandler import StatsHandler +from rdflib import URIRef +from twisted.internet import reactor, defer +import cyclone.web, cyclone.httpclient, cyclone.websocket + +from cycloneerr import PrettyErrorHandler +from light9 import networking, showconfig +from light9.newtypes import Song +from light9.vidref import videorecorder +from rdfdb.syncedgraph import SyncedGraph parser = optparse.OptionParser() parser.add_option("-v", "--verbose", action="store_true", help="logging.DEBUG") @@ -40,9 +41,9 @@ '/webServer', scales.RecentFpsStat('liveWebsocketFrameFps'), scales.IntStat('liveClients'), - ) - + + class Snapshot(cyclone.web.RequestHandler): @defer.inlineCallbacks @@ -108,20 +109,20 @@ self.set_status(202) - class Clips(PrettyErrorHandler, cyclone.web.RequestHandler): def delete(self): clip = URIRef(self.get_argument('uri')) videorecorder.deleteClip(clip) + class ReplayMap(PrettyErrorHandler, cyclone.web.RequestHandler): def get(self): song = Song(self.get_argument('song')) clips = [] - videoPaths = glob.glob(os.path.join(videorecorder.songDir(song), - b'*.mp4')) + videoPaths = glob.glob( + os.path.join(videorecorder.songDir(song), b'*.mp4')) for vid in videoPaths: pts = [] for line in open(vid.replace(b'.mp4', b'.timing'), 'rb'): @@ -175,7 +176,6 @@ (r'/stats/(.*)', StatsHandler, { 'serverName': 'vidref' }), - ], debug=True, ))
--- a/light9/vidref/videorecorder.py Thu Jun 06 02:56:46 2019 +0000 +++ b/light9/vidref/videorecorder.py Thu Jun 06 02:59:26 2019 +0000 @@ -1,24 +1,24 @@ from dataclasses import dataclass +from io import BytesIO from typing import Optional import time, logging, os, traceback -from io import BytesIO import gi gi.require_version('Gst', '1.0') gi.require_version('GstBase', '1.0') -import PIL.Image from gi.repository import Gst +from greplin import scales +from rdflib import URIRef from rx.subject import BehaviorSubject from twisted.internet import threads -from rdflib import URIRef +import PIL.Image import moviepy.editor import numpy -from greplin import scales +from light9 import showconfig from light9.ascoltami.musictime_client import MusicTime from light9.newtypes import Song -from light9 import showconfig log = logging.getLogger() @@ -30,9 +30,9 @@ scales.PmfStat('crop', recalcPeriod=1), scales.RecentFpsStat('encodeFrameFps'), scales.RecentFpsStat('queueGstFrameFps'), - ) + @dataclass class CaptureFrame: img: PIL.Image @@ -55,6 +55,7 @@ showconfig.root(), b'video', song.replace('http://', '').replace('/', '_').encode('ascii')) + def takeUri(songPath: bytes) -> URIRef: p = songPath.decode('ascii').split('/') take = p[-1].replace('.mp4', '') @@ -62,17 +63,21 @@ return URIRef('/'.join( ['http://light9.bigasterisk.com/show', song[-2], song[-1], take])) + def deleteClip(uri: URIRef): # uri http://light9.bigasterisk.com/show/dance2019/song6/take_155 # path show/dance2019/video/light9.bigasterisk.com_show_dance2019_song6/take_155.* w = uri.split('/')[-4:] - path = '/'.join([w[0], w[1], 'video', - f'light9.bigasterisk.com_{w[0]}_{w[1]}_{w[2]}', w[3]]) + path = '/'.join([ + w[0], w[1], 'video', f'light9.bigasterisk.com_{w[0]}_{w[1]}_{w[2]}', + w[3] + ]) log.info(f'deleting {uri} {path}') stats.deletes += 1 for fn in [path + '.mp4', path + '.timing']: os.remove(fn) + class FramesToVideoFiles: """ @@ -166,7 +171,6 @@ if self.currentClipFrameCount < 400: log.info('too small- deleting') deleteClip(takeUri(self.outMp4.encode('ascii'))) - def _bg_make_frame(self, video_time_secs): stats.encodeFrameFps.mark() @@ -256,7 +260,7 @@ @stats.crop.time() def crop(self, img): return img.crop((0, 100, 640, 380)) - + def setupPipelineError(self, pipe, cb): bus = pipe.get_bus()