tum-live-worker-v2's People
tum-live-worker-v2's Issues
Include stream id in filenames
Two streams from the same course at the same time are currently written to the same file. This is
Don't use gin
There are only 3 super simple http endpoints. no need for a framework like gin, this can be handled using net/http
Inconsistent vod output codec
For some reason, some recordings are transcoded into another codec than others before making them available as vod. This is a problem because those videos can not be played in firefox.
originally reported at joschahenningsen/TUM-Live#149
Problematic video:
- Codec: avc1.64003e,mp4a.40.2
- ffprobe:
Duration: 02:02:41.45, start: 0.000000, bitrate: N/A
Program 0
Metadata:
variant_bitrate : 342520
Stream #0:0: Data: timed_id3 (ID3 / 0x20334449)
Metadata:
variant_bitrate : 342520
Stream #0:1: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p, 1280x720, 60 tbr, 90k tbn, 180k tbc
Metadata:
variant_bitrate : 342520
Stream #0:2: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, mono, fltp
Metadata:
variant_bitrate : 342520
- mediainfo:
Video
ID : 1-256 (0x100)
Menu ID : 1-1 (0x1)
Format : AVC
Format/Info : Advanced Video Codec
Format profile : [email protected]
Format settings : CABAC / 4 Ref Frames
Format settings, CABAC : Yes
Format settings, Reference frames : 4 frames
Muxing mode : HLS / MPEG-TS
Codec ID : 27
Duration : 8 s 606 ms
Width : 1 280 pixels
Height : 720 pixels
Display aspect ratio : 16:9
Frame rate mode : Variable
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Writing library : x264 core 155 r2917 0a84d98
Encoding settings : cabac=1 / ref=3 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=7 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=9 / lookahead_threads=1 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=crf / mbtree=1 / crf=24.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00
Audio
ID : 1-257 (0x101)
Menu ID : 1-1 (0x1)
Format : AAC LC
Format/Info : Advanced Audio Codec Low Complexity
Format version : Version 4
Muxing mode : HLS / MPEG-TS / ADTS
Codec ID : 15-2
Duration : 8 s 567 ms
Bit rate mode : Variable
Channel(s) : 1 channel
Channel layout : C
Sampling rate : 44.1 kHz
Frame rate : 43.066 FPS (1024 SPF)
Compression mode : Lossy
Delay relative to video : -66 ms
Source : chunklist_w658549093.m3u8
Source_Original : media_w658549093_0.ts
known good video:
- codec: avc1.64001f,mp4a.40.2
- ffprobe:
Duration: 01:58:06.28, start: 0.000000, bitrate: N/A
Program 0
Metadata:
variant_bitrate : 2575771
Stream #0:0: Data: timed_id3 (ID3 / 0x20334449)
Metadata:
variant_bitrate : 2575771
Stream #0:1: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p, 1280x720, 29 fps, 29 tbr, 90k tbn, 58.01 tbc
Metadata:
variant_bitrate : 2575771
Stream #0:2: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, mono, fltp
Metadata:
variant_bitrate : 2575771
- mediainfo:
Video
ID : 1-256 (0x100)
Menu ID : 1-1 (0x1)
Format : AVC
Format/Info : Advanced Video Codec
Format profile : [email protected]
Format settings : CABAC / 4 Ref Frames
Format settings, CABAC : Yes
Format settings, Reference frames : 4 frames
Muxing mode : HLS / MPEG-TS
Codec ID : 27
Duration : 8 s 618 ms
Width : 1 280 pixels
Height : 720 pixels
Display aspect ratio : 16:9
Frame rate mode : Variable
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Writing library : x264 core 155 r2917 0a84d98
Encoding settings : cabac=1 / ref=3 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=7 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=9 / lookahead_threads=1 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=crf / mbtree=1 / crf=23.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00
Audio
ID : 1-257 (0x101)
Menu ID : 1-1 (0x1)
Format : AAC LC
Format/Info : Advanced Audio Codec Low Complexity
Format version : Version 4
Muxing mode : HLS / MPEG-TS / ADTS
Codec ID : 15-2
Duration : 8 s 567 ms
Bit rate mode : Variable
Channel(s) : 1 channel
Channel layout : C
Sampling rate : 44.1 kHz
Frame rate : 43.066 FPS (1024 SPF)
Compression mode : Lossy
Delay relative to video : -69 ms
Source : chunklist_w293289683.m3u8
Source_Original : media_w293289683_0.ts
Upload converted lectures in go
Currently, we're using curl to upload lectures.
We do this because the previous solution
TUM-Live-Worker-v2/worker/upload.go
Line 43 in efc5d99
consumed huge amounts of memory for some reason. I assume the video file was loaded into memory unbuffered.
Since we needed this issue mitigated asap, we had to shell out to curl.
Transcode self ingested streams
adaptive streaming would be nice for them as well (given that there is a free transcoding slot ofc.)
Use Alpine Linux instead of Ubuntu for Nginx Docker Image
Right now we use ubuntu:21.04
for the nginx image. see https://github.com/joschahenningsen/TUM-Live-Worker-v2/blob/main/nginx/Dockerfile.
With some adjustments we could change to Alpine LInux e.g alpine3.15
and possible save memory and enhance security even further.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.