diff options
author | Andrew Cady <d@jerkface.net> | 2018-12-09 03:58:58 -0500 |
---|---|---|
committer | Andrew Cady <d@jerkface.net> | 2018-12-09 03:58:58 -0500 |
commit | f4bd641e36418bc2a43bc31d8ac0bf57b1c51953 (patch) | |
tree | f565e29f956152fdb53c2a5042714de5bbb202ab /dot/local/bin/webbie | |
parent | 7aa3cd0a0e2961388df2cc11665dabef2250d6d7 (diff) |
new commands
Diffstat (limited to 'dot/local/bin/webbie')
-rwxr-xr-x | dot/local/bin/webbie | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/dot/local/bin/webbie b/dot/local/bin/webbie new file mode 100755 index 0000000..02fa3dd --- /dev/null +++ b/dot/local/bin/webbie | |||
@@ -0,0 +1,47 @@ | |||
1 | #!/bin/bash | ||
2 | |||
3 | AUDIO_DEVICE=pulse | ||
4 | VIDEO_DEVICE=/dev/video0 | ||
5 | |||
6 | # Why does OUTPUT_CODECS have to specify -pix_fmt ? Answered: | ||
7 | # https://stackoverflow.com/questions/37967120/ffmpeg-convert-from-h-264-high-444-profile-to-h-264-main-profile | ||
8 | |||
9 | # Why aac and libx264? Browser support: | ||
10 | # https://gist.github.com/Vestride/278e13915894821e1d6f | ||
11 | |||
12 | # Explanation of -profile and -level: | ||
13 | # https://trac.ffmpeg.org/wiki/Encode/H.264 | ||
14 | |||
15 | OUTPUT_CODECS='-c:a aac -c:v libx264 -pix_fmt yuv420p -profile:v high -level 4.1 -movflags +faststart' | ||
16 | # OUTPUT_CODECS='-c:a aac -c:v libx264' | ||
17 | OUTPUT_EXTENSION=mp4 | ||
18 | |||
19 | MAX_RECORDING_TIME=00:05:00 | ||
20 | |||
21 | NOW=$(date -Iseconds) | ||
22 | |||
23 | OUTPUT=recording.${NOW//[:T]/.}.${OUTPUT_EXTENSION} | ||
24 | OUTPUT_LINK=recording.latest.${OUTPUT_EXTENSION} | ||
25 | |||
26 | VIDEO_OPTS='-framerate 30 -video_size 640x480' | ||
27 | VIDEO_OPTS='-input_format mjpeg -framerate 30 -video_size 800x600' | ||
28 | # VIDEO_OPTS='-input_format mjpeg -framerate 15 -video_size 1600x1200' | ||
29 | |||
30 | record() | ||
31 | { | ||
32 | local timeout="${MAX_RECORDING_TIME+-t $MAX_RECORDING_TIME}" | ||
33 | ffmpeg -hide_banner -loglevel error -stats \ | ||
34 | $timeout -f video4linux2 ${VIDEO_OPTS} -i "$VIDEO_DEVICE" \ | ||
35 | $timeout -f "$AUDIO_DEVICE" -i default \ | ||
36 | -c:v rawvideo -pix_fmt yuv420p -f xv win \ | ||
37 | ${OUTPUT_CODECS} \ | ||
38 | "$1" | ||
39 | } | ||
40 | |||
41 | silently() { "$@" >/dev/null 2>&1; } | ||
42 | |||
43 | silently amixer-enable-mic | ||
44 | banish | ||
45 | record "$OUTPUT" | ||
46 | |||
47 | [ -h "$OUTPUT_LINK" -o ! -e "$OUTPUT_LINK" ] && ln -sf "$OUTPUT" "$OUTPUT_LINK" | ||