ffmpeg \
-f lavfi -i "sine=frequency=1000:duration=120" \
-f lavfi \
-i testsrc=duration=5:size=1280x720:rate=24 \
-t 120 \
-map 0:0 \
-map 1:0 \
#!/usr/bin/env bash | |
ROKU_IP="192.168.1.167" | |
ROKU_USER="rokudev" | |
ROKU_PASSWORD="XXXXXXX" | |
APP_FOLDER="app" | |
DEST_FOLDER="dist" | |
timestamp=$(date +%s) | |
zipfile="../$DEST_FOLDER/rokuapp-$timestamp.zip" |
#!/bin/bash | |
wget "https://nodejs.org/dist/v20.9.0/node-v20.9.0-linux-arm64.tar.xz" | |
tar -xf node-v20.9.0-linux-arm64.tar.xz | |
cd node-v20.9.0-linux-arm64 | |
sudo cp -R bin include lib share /usr/local/ | |
node -v | |
npm -v |
#!/bin/bash | |
ffprobe \ | |
-v error \ | |
-select_streams v \ | |
-show_entries frame=pict_type,pts_time \ | |
-of csv=p=0 \ | |
-skip_frame nokey \ | |
$INPUT_FILE > iframes.txt |
#!/bin/bash | |
packager \ | |
'in=./tmp/output_540p.mp4,stream=video,init_segment=./tmp/output/video_3000_0/video_init.mp4,segment_template=./tmp/output/video_3000_0/video_$Number$.m4s' \ | |
'in=./tmp/output_720p.mp4,stream=video,init_segment=./tmp/output/video_1700_1/video_init.mp4,segment_template=./tmp/output/video_1700_1/video_$Number$.m4s' \ | |
'in=./tmp/output_1080p.mp4,stream=video,init_segment=./tmp/output/video_1200_2/video_init.mp4,segment_template=./tmp/output/video_1200_2/video_$Number$.m4s' \ | |
'in=./tmp/output_audio_128.mp4,stream=audio,language=en,roles=main,hls_name=main_en_2,init_segment=./tmp/output/audio_96_2/audio_init.mp4,segment_template=./tmp/output/audio_96_2/audio_$Number$.m4s' \ | |
'in=./tmp/output_audio_196.mp4,stream=audio,language=en,roles=main,hls_name=main_en_3,init_segment=./tmp/output/audio_64_3/audio_init.mp4,segment_template=./tmp/output/audio_64_3/audio_$Number$.m4s' \ | |
--fragment_duration 6 \ | |
--segment_duration 6 \ |
#!/bin/bash | |
BUILD_ID=$(date +"%s") | |
SRC_DIR="MyApp" | |
ZIP_FILE="dist/devbuild_$BUILD_ID.zip" | |
ROKU_URL="http://192.168.1.167" | |
ROKU_DEV_USER="rokudev" | |
ROKU_DEV_PW="******" |
#!/bin/sh | |
ffmpeg \ | |
-i "http://relay.publicdomainradio.org/classical.mp3" \ | |
-f lavfi \ | |
-re \ | |
-i testsrc=duration=120:size=1280x720:rate=24 \ | |
-map 0:0 \ | |
-map 1:0 \ | |
-c:v libx264 \ |
Some notes on getting Debian 10 (stable) installed and running on the Beelink U57 Mini PC with Intel Core i5-5257u Processor.
Create a bootable USB Flash drive of the Debian 10 netinst ISO using Etcher.
- Download ISO from Debian: https://www.debian.org/distrib/netinst
- Flash to SD Card using Balena Etcher https://www.balena.io/etcher/
- Connect ethernet cable to Beelink
Note: The firmware needed to use the Beelink's onboard Intel Wifi is proprietary, and is not included with the default install of Debian. If you don't have the option of a wired LAN connection you can use an "unofficial" Debian CD image, that includes the proprietary (non-free) firmware. (https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/) See the below section on installing the firmware later on.
- Immediately after startup press the
Del
key to enter the BIOS.
Basic ffmpeg scene detection:
ffmpeg -i input.flv -filter:v "select='gt(scene,0.4)',showinfo" -f null -
scene (video only) value between 0 and 1 to indicate a new scene; a low value reflects a low probability for the current frame to introduce a new scene, while a higher value means the current frame is more likely to be one (see the example below) https://ffmpeg.org/ffmpeg-filters.html#select_002c-aselect
Set the scene change detection threshold as a percentage of maximum change on the luma plane. Good values are in the [8.0, 14.0] range. Scene change detection is only relevant in case combmatch=sc. The range for scthresh is [0.0, 100.0].
window._fs__hbo_timeout; | |
window._fs__hbo = function(){ | |
document.querySelector("#ifp").parentNode.setAttribute("style", "position:fixed;top:0px;left:0px;width:100vw;height:100vh;background-color:#000;z-index:2147483648;"); | |
document.querySelector("#ifp").parentNode.setAttribute("id", "flvideo"); | |
document.querySelector("#ifp").parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.style.top = "0px"; | |
document.querySelectorAll(".default").forEach(function(e){ | |
var style = window.getComputedStyle(e); | |
if(e.getAttribute("id") != "flvideo" && style.position == "fixed"){ e.style.opacity = 0; e.style.zIndex = 1; } | |
}); | |
} |