Mercurial > code > home > repos > light9
annotate bin/vidref @ 1994:1b690005aabd
little vidref player inside timeline
Ignore-this: 87333fed2271d9eae182fff1e3d2be1
author | Drew Perttula <drewp@bigasterisk.com> |
---|---|
date | Sun, 09 Jun 2019 19:16:37 +0000 |
parents | c8f0d1b9a171 |
children | 67575505c400 |
rev | line source |
---|---|
729
b5efddd80dad
update more shbang lines
Drew Perttula <drewp@bigasterisk.com>
parents:
647
diff
changeset
|
1 #!bin/python |
1939
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
2 """ |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
3 Camera images of the stage. View live on a web page and also save |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
4 them to disk. Retrieve images based on the song and time that was |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
5 playing when they were taken. Also, save snapshot images to a place |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
6 they can be used again as thumbnails of effects. |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
7 |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
8 bin/vidref main |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
9 light9/vidref/videorecorder.py capture frames and save them |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
10 light9/vidref/replay.py backend for vidref.js playback element- figures out which frames go with the current song and time |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
11 light9/vidref/index.html web ui for watching current stage and song playback |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
12 light9/vidref/setup.html web ui for setup of camera params and frame crop |
1941
0dc3715050cf
video recorder now makes mp4 per song
drewp@bigasterisk.com
parents:
1939
diff
changeset
|
13 light9/web/light9-vidref-live.js LitElement for live video frames |
0dc3715050cf
video recorder now makes mp4 per song
drewp@bigasterisk.com
parents:
1939
diff
changeset
|
14 light9/web/light9-vidref-playback.js LitElement for video playback |
1939
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
15 |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
16 """ |
882 | 17 from run_local import log |
1939
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
18 |
1956 | 19 from typing import cast |
1951
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
20 import logging, optparse, json, base64, os, glob |
1956 | 21 |
1955
9ee42b88299b
vidref now has some stats
Drew Perttula <drewp@bigasterisk.com>
parents:
1954
diff
changeset
|
22 from greplin import scales |
9ee42b88299b
vidref now has some stats
Drew Perttula <drewp@bigasterisk.com>
parents:
1954
diff
changeset
|
23 from greplin.scales.cyclonehandler import StatsHandler |
1956 | 24 from rdflib import URIRef |
25 from twisted.internet import reactor, defer | |
26 import cyclone.web, cyclone.httpclient, cyclone.websocket | |
27 | |
28 from cycloneerr import PrettyErrorHandler | |
29 from light9 import networking, showconfig | |
30 from light9.newtypes import Song | |
31 from light9.vidref import videorecorder | |
32 from rdfdb.syncedgraph import SyncedGraph | |
1957
a745bee5c419
new process stats visualizers
Drew Perttula <drewp@bigasterisk.com>
parents:
1956
diff
changeset
|
33 from standardservice.scalessetup import gatherProcessStats |
542
cfd5d5be1b50
vidref complete panels on each replay. replays load and delete pretty well
drewp@bigasterisk.com
parents:
541
diff
changeset
|
34 |
cfd5d5be1b50
vidref complete panels on each replay. replays load and delete pretty well
drewp@bigasterisk.com
parents:
541
diff
changeset
|
35 parser = optparse.OptionParser() |
1858 | 36 parser.add_option("-v", "--verbose", action="store_true", help="logging.DEBUG") |
542
cfd5d5be1b50
vidref complete panels on each replay. replays load and delete pretty well
drewp@bigasterisk.com
parents:
541
diff
changeset
|
37 (options, args) = parser.parse_args() |
cfd5d5be1b50
vidref complete panels on each replay. replays load and delete pretty well
drewp@bigasterisk.com
parents:
541
diff
changeset
|
38 |
1089
2ee97997ee56
vidref now reads from picamserve
Drew Perttula <drewp@bigasterisk.com>
parents:
1070
diff
changeset
|
39 log.setLevel(logging.DEBUG if options.verbose else logging.INFO) |
534
6f1eb6437c96
vidref refactor, start to add more widgets
drewp@bigasterisk.com
parents:
525
diff
changeset
|
40 |
1957
a745bee5c419
new process stats visualizers
Drew Perttula <drewp@bigasterisk.com>
parents:
1956
diff
changeset
|
41 gatherProcessStats() |
1955
9ee42b88299b
vidref now has some stats
Drew Perttula <drewp@bigasterisk.com>
parents:
1954
diff
changeset
|
42 stats = scales.collection( |
9ee42b88299b
vidref now has some stats
Drew Perttula <drewp@bigasterisk.com>
parents:
1954
diff
changeset
|
43 '/webServer', |
9ee42b88299b
vidref now has some stats
Drew Perttula <drewp@bigasterisk.com>
parents:
1954
diff
changeset
|
44 scales.RecentFpsStat('liveWebsocketFrameFps'), |
9ee42b88299b
vidref now has some stats
Drew Perttula <drewp@bigasterisk.com>
parents:
1954
diff
changeset
|
45 scales.IntStat('liveClients'), |
9ee42b88299b
vidref now has some stats
Drew Perttula <drewp@bigasterisk.com>
parents:
1954
diff
changeset
|
46 ) |
1956 | 47 |
48 | |
941
1d9547f90737
vidref can take snapshots and serve them back
drewp@bigasterisk.com
parents:
937
diff
changeset
|
49 class Snapshot(cyclone.web.RequestHandler): |
1858 | 50 |
941
1d9547f90737
vidref can take snapshots and serve them back
drewp@bigasterisk.com
parents:
937
diff
changeset
|
51 @defer.inlineCallbacks |
1d9547f90737
vidref can take snapshots and serve them back
drewp@bigasterisk.com
parents:
937
diff
changeset
|
52 def post(self): |
1d9547f90737
vidref can take snapshots and serve them back
drewp@bigasterisk.com
parents:
937
diff
changeset
|
53 # save next pic |
1d9547f90737
vidref can take snapshots and serve them back
drewp@bigasterisk.com
parents:
937
diff
changeset
|
54 # return /snapshot/path |
1d9547f90737
vidref can take snapshots and serve them back
drewp@bigasterisk.com
parents:
937
diff
changeset
|
55 try: |
1951
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
56 snapshotDir = 'todo' |
941
1d9547f90737
vidref can take snapshots and serve them back
drewp@bigasterisk.com
parents:
937
diff
changeset
|
57 outputFilename = yield self.settings.gui.snapshot() |
1d9547f90737
vidref can take snapshots and serve them back
drewp@bigasterisk.com
parents:
937
diff
changeset
|
58 |
1951
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
59 assert outputFilename.startswith(snapshotDir) |
941
1d9547f90737
vidref can take snapshots and serve them back
drewp@bigasterisk.com
parents:
937
diff
changeset
|
60 out = networking.vidref.path( |
1951
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
61 "snapshot/%s" % outputFilename[len(snapshotDir):].lstrip('/')) |
1858 | 62 |
941
1d9547f90737
vidref can take snapshots and serve them back
drewp@bigasterisk.com
parents:
937
diff
changeset
|
63 self.write(json.dumps({'snapshot': out})) |
1d9547f90737
vidref can take snapshots and serve them back
drewp@bigasterisk.com
parents:
937
diff
changeset
|
64 self.set_header("Location", out) |
1d9547f90737
vidref can take snapshots and serve them back
drewp@bigasterisk.com
parents:
937
diff
changeset
|
65 self.set_status(303) |
1866
3c523c71da29
pyflakes cleanups and some refactors
Drew Perttula <drewp@bigasterisk.com>
parents:
1858
diff
changeset
|
66 except Exception: |
941
1d9547f90737
vidref can take snapshots and serve them back
drewp@bigasterisk.com
parents:
937
diff
changeset
|
67 import traceback |
1d9547f90737
vidref can take snapshots and serve them back
drewp@bigasterisk.com
parents:
937
diff
changeset
|
68 traceback.print_exc() |
1d9547f90737
vidref can take snapshots and serve them back
drewp@bigasterisk.com
parents:
937
diff
changeset
|
69 raise |
1d9547f90737
vidref can take snapshots and serve them back
drewp@bigasterisk.com
parents:
937
diff
changeset
|
70 |
1858 | 71 |
1939
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
72 pipeline = videorecorder.GstSource( |
1976
df28c994365d
different camera and crop settings for prod
drewp@bigasterisk.com
parents:
1957
diff
changeset
|
73 #'/dev/v4l/by-id/usb-Bison_HD_Webcam_200901010001-video-index0' |
df28c994365d
different camera and crop settings for prod
drewp@bigasterisk.com
parents:
1957
diff
changeset
|
74 '/dev/v4l/by-id/usb-Generic_FULL_HD_1080P_Webcam_200901010001-video-index0') |
1939
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
75 |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
76 |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
77 class Live(cyclone.websocket.WebSocketHandler): |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
78 |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
79 def connectionMade(self, *args, **kwargs): |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
80 pipeline.liveImages.subscribe(on_next=self.onFrame) |
1955
9ee42b88299b
vidref now has some stats
Drew Perttula <drewp@bigasterisk.com>
parents:
1954
diff
changeset
|
81 stats.liveClients += 1 |
1939
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
82 |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
83 def connectionLost(self, reason): |
1955
9ee42b88299b
vidref now has some stats
Drew Perttula <drewp@bigasterisk.com>
parents:
1954
diff
changeset
|
84 #self.subj.dispose() |
9ee42b88299b
vidref now has some stats
Drew Perttula <drewp@bigasterisk.com>
parents:
1954
diff
changeset
|
85 stats.liveClients -= 1 |
1939
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
86 |
1941
0dc3715050cf
video recorder now makes mp4 per song
drewp@bigasterisk.com
parents:
1939
diff
changeset
|
87 def onFrame(self, cf: videorecorder.CaptureFrame): |
0dc3715050cf
video recorder now makes mp4 per song
drewp@bigasterisk.com
parents:
1939
diff
changeset
|
88 if cf is None: return |
1939
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
89 |
1955
9ee42b88299b
vidref now has some stats
Drew Perttula <drewp@bigasterisk.com>
parents:
1954
diff
changeset
|
90 stats.liveWebsocketFrameFps.mark() |
9ee42b88299b
vidref now has some stats
Drew Perttula <drewp@bigasterisk.com>
parents:
1954
diff
changeset
|
91 |
1939
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
92 self.sendMessage( |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
93 json.dumps({ |
1951
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
94 'jpeg': base64.b64encode(cf.asJpeg()).decode('ascii'), |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
95 'description': f't={cf.t}', |
1939
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
96 })) |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
97 |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
98 |
941
1d9547f90737
vidref can take snapshots and serve them back
drewp@bigasterisk.com
parents:
937
diff
changeset
|
99 class SnapshotPic(cyclone.web.StaticFileHandler): |
1d9547f90737
vidref can take snapshots and serve them back
drewp@bigasterisk.com
parents:
937
diff
changeset
|
100 pass |
1d9547f90737
vidref can take snapshots and serve them back
drewp@bigasterisk.com
parents:
937
diff
changeset
|
101 |
1369
6b5e079b3dbe
timeline hover goes to vidref
Drew Perttula <drewp@bigasterisk.com>
parents:
1212
diff
changeset
|
102 |
1986
c8f0d1b9a171
timeline scrubbing shows up on vidref (again)
drewp@bigasterisk.com
parents:
1976
diff
changeset
|
103 class Time(PrettyErrorHandler, cyclone.web.RequestHandler): |
1858 | 104 |
1369
6b5e079b3dbe
timeline hover goes to vidref
Drew Perttula <drewp@bigasterisk.com>
parents:
1212
diff
changeset
|
105 def put(self): |
6b5e079b3dbe
timeline hover goes to vidref
Drew Perttula <drewp@bigasterisk.com>
parents:
1212
diff
changeset
|
106 body = json.loads(self.request.body) |
6b5e079b3dbe
timeline hover goes to vidref
Drew Perttula <drewp@bigasterisk.com>
parents:
1212
diff
changeset
|
107 t = body['t'] |
1986
c8f0d1b9a171
timeline scrubbing shows up on vidref (again)
drewp@bigasterisk.com
parents:
1976
diff
changeset
|
108 for listener in TimeStream.time_stream_listeners: |
c8f0d1b9a171
timeline scrubbing shows up on vidref (again)
drewp@bigasterisk.com
parents:
1976
diff
changeset
|
109 listener.sendMessage(json.dumps({ |
c8f0d1b9a171
timeline scrubbing shows up on vidref (again)
drewp@bigasterisk.com
parents:
1976
diff
changeset
|
110 'st': t, |
c8f0d1b9a171
timeline scrubbing shows up on vidref (again)
drewp@bigasterisk.com
parents:
1976
diff
changeset
|
111 'song': body['song'], |
c8f0d1b9a171
timeline scrubbing shows up on vidref (again)
drewp@bigasterisk.com
parents:
1976
diff
changeset
|
112 })) |
1369
6b5e079b3dbe
timeline hover goes to vidref
Drew Perttula <drewp@bigasterisk.com>
parents:
1212
diff
changeset
|
113 self.set_status(202) |
6b5e079b3dbe
timeline hover goes to vidref
Drew Perttula <drewp@bigasterisk.com>
parents:
1212
diff
changeset
|
114 |
6b5e079b3dbe
timeline hover goes to vidref
Drew Perttula <drewp@bigasterisk.com>
parents:
1212
diff
changeset
|
115 |
1986
c8f0d1b9a171
timeline scrubbing shows up on vidref (again)
drewp@bigasterisk.com
parents:
1976
diff
changeset
|
116 class TimeStream(cyclone.websocket.WebSocketHandler): |
c8f0d1b9a171
timeline scrubbing shows up on vidref (again)
drewp@bigasterisk.com
parents:
1976
diff
changeset
|
117 time_stream_listeners = [] |
c8f0d1b9a171
timeline scrubbing shows up on vidref (again)
drewp@bigasterisk.com
parents:
1976
diff
changeset
|
118 |
c8f0d1b9a171
timeline scrubbing shows up on vidref (again)
drewp@bigasterisk.com
parents:
1976
diff
changeset
|
119 def connectionMade(self, *args, **kwargs): |
c8f0d1b9a171
timeline scrubbing shows up on vidref (again)
drewp@bigasterisk.com
parents:
1976
diff
changeset
|
120 TimeStream.time_stream_listeners.append(self) |
c8f0d1b9a171
timeline scrubbing shows up on vidref (again)
drewp@bigasterisk.com
parents:
1976
diff
changeset
|
121 |
c8f0d1b9a171
timeline scrubbing shows up on vidref (again)
drewp@bigasterisk.com
parents:
1976
diff
changeset
|
122 def connectionLost(self, reason): |
c8f0d1b9a171
timeline scrubbing shows up on vidref (again)
drewp@bigasterisk.com
parents:
1976
diff
changeset
|
123 TimeStream.time_stream_listeners.remove(self) |
c8f0d1b9a171
timeline scrubbing shows up on vidref (again)
drewp@bigasterisk.com
parents:
1976
diff
changeset
|
124 |
c8f0d1b9a171
timeline scrubbing shows up on vidref (again)
drewp@bigasterisk.com
parents:
1976
diff
changeset
|
125 |
1954
3ae1e7f8db23
vidref playback smoothness, autodelete short clips, manual-delete clips, vidref keyboard shortcuts
Drew Perttula <drewp@bigasterisk.com>
parents:
1951
diff
changeset
|
126 class Clips(PrettyErrorHandler, cyclone.web.RequestHandler): |
1951
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
127 |
1954
3ae1e7f8db23
vidref playback smoothness, autodelete short clips, manual-delete clips, vidref keyboard shortcuts
Drew Perttula <drewp@bigasterisk.com>
parents:
1951
diff
changeset
|
128 def delete(self): |
3ae1e7f8db23
vidref playback smoothness, autodelete short clips, manual-delete clips, vidref keyboard shortcuts
Drew Perttula <drewp@bigasterisk.com>
parents:
1951
diff
changeset
|
129 clip = URIRef(self.get_argument('uri')) |
3ae1e7f8db23
vidref playback smoothness, autodelete short clips, manual-delete clips, vidref keyboard shortcuts
Drew Perttula <drewp@bigasterisk.com>
parents:
1951
diff
changeset
|
130 videorecorder.deleteClip(clip) |
1951
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
131 |
1956 | 132 |
1951
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
133 class ReplayMap(PrettyErrorHandler, cyclone.web.RequestHandler): |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
134 |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
135 def get(self): |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
136 song = Song(self.get_argument('song')) |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
137 clips = [] |
1956 | 138 videoPaths = glob.glob( |
139 os.path.join(videorecorder.songDir(song), b'*.mp4')) | |
1955
9ee42b88299b
vidref now has some stats
Drew Perttula <drewp@bigasterisk.com>
parents:
1954
diff
changeset
|
140 for vid in videoPaths: |
1951
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
141 pts = [] |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
142 for line in open(vid.replace(b'.mp4', b'.timing'), 'rb'): |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
143 _v, vt, _eq, _song, st = line.split() |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
144 pts.append([float(st), float(vt)]) |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
145 |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
146 url = vid[len(os.path.dirname(os.path.dirname(showconfig.root())) |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
147 ):].decode('ascii') |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
148 |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
149 clips.append({ |
1954
3ae1e7f8db23
vidref playback smoothness, autodelete short clips, manual-delete clips, vidref keyboard shortcuts
Drew Perttula <drewp@bigasterisk.com>
parents:
1951
diff
changeset
|
150 'uri': videorecorder.takeUri(vid), |
1951
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
151 'videoUrl': url, |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
152 'songToVideo': pts |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
153 }) |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
154 |
1954
3ae1e7f8db23
vidref playback smoothness, autodelete short clips, manual-delete clips, vidref keyboard shortcuts
Drew Perttula <drewp@bigasterisk.com>
parents:
1951
diff
changeset
|
155 clips.sort(key=lambda c: len(cast(list, c['songToVideo']))) |
1994
1b690005aabd
little vidref player inside timeline
Drew Perttula <drewp@bigasterisk.com>
parents:
1986
diff
changeset
|
156 clips = clips[-int(self.get_argument('maxClips', '3')):] |
1951
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
157 clips.sort(key=lambda c: c['uri'], reverse=True) |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
158 |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
159 ret = json.dumps(clips) |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
160 log.info('replayMap had %s videos; json is %s bytes', len(clips), |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
161 len(ret)) |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
162 self.write(ret) |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
163 |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
164 |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
165 graph = SyncedGraph(networking.rdfdb.url, "vidref") |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
166 outVideos = videorecorder.FramesToVideoFiles( |
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
167 pipeline.liveImages, os.path.join(showconfig.root(), b'video')) |
1096
087f6cbe4b22
vidrefsetup tool now prepares a url that vidref will use for rpi camera requests
Drew Perttula <drewp@bigasterisk.com>
parents:
1089
diff
changeset
|
168 |
941
1d9547f90737
vidref can take snapshots and serve them back
drewp@bigasterisk.com
parents:
937
diff
changeset
|
169 port = networking.vidref.port |
1858 | 170 reactor.listenTCP( |
171 port, | |
1939
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
172 cyclone.web.Application( |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
173 handlers=[ |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
174 (r'/()', cyclone.web.StaticFileHandler, { |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
175 'path': 'light9/vidref', |
1945 | 176 'default_filename': 'index.html' |
1939
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
177 }), |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
178 (r'/setup/()', cyclone.web.StaticFileHandler, { |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
179 'path': 'light9/vidref', |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
180 'default_filename': 'setup.html' |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
181 }), |
1945 | 182 (r'/live', Live), |
1954
3ae1e7f8db23
vidref playback smoothness, autodelete short clips, manual-delete clips, vidref keyboard shortcuts
Drew Perttula <drewp@bigasterisk.com>
parents:
1951
diff
changeset
|
183 (r'/clips', Clips), |
1951
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
184 (r'/replayMap', ReplayMap), |
1939
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
185 (r'/snapshot', Snapshot), |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
186 (r'/snapshot/(.*)', SnapshotPic, { |
1951
9f0f2b39ad95
vidref web is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1945
diff
changeset
|
187 "path": 'todo', |
1939
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
188 }), |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
189 (r'/time', Time), |
1986
c8f0d1b9a171
timeline scrubbing shows up on vidref (again)
drewp@bigasterisk.com
parents:
1976
diff
changeset
|
190 (r'/time/stream', TimeStream), |
1955
9ee42b88299b
vidref now has some stats
Drew Perttula <drewp@bigasterisk.com>
parents:
1954
diff
changeset
|
191 (r'/stats/(.*)', StatsHandler, { |
9ee42b88299b
vidref now has some stats
Drew Perttula <drewp@bigasterisk.com>
parents:
1954
diff
changeset
|
192 'serverName': 'vidref' |
9ee42b88299b
vidref now has some stats
Drew Perttula <drewp@bigasterisk.com>
parents:
1954
diff
changeset
|
193 }), |
1939
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
194 ], |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
195 debug=True, |
6f49dc917aa3
start vidref web version. v4l camera frames to web page is working
Drew Perttula <drewp@bigasterisk.com>
parents:
1866
diff
changeset
|
196 )) |
941
1d9547f90737
vidref can take snapshots and serve them back
drewp@bigasterisk.com
parents:
937
diff
changeset
|
197 log.info("serving on %s" % port) |
937 | 198 |
935 | 199 reactor.run() |