Skip to content
Snippets Groups Projects
Select Git revision
  • 7de6f766e965dc85f9412935bbe0922e45233cb7
  • master default protected
  • th/caddy-wip
  • th/caddy
  • th/lego
  • th/acmebot
  • pyzabbix
  • th/keycloak
8 results

nginx.conf

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    mod.rs 3.67 KiB
    #![allow(warnings)]
    
    pub mod ffmpeg;
    
    use crate::{
    	iotro::intro,
    	render::ffmpeg::Ffmpeg,
    	time::{format_date, Time},
    	Project, ProjectSourceMetadata, Resolution
    };
    use anyhow::{bail, Context};
    use camino::{Utf8Path as Path, Utf8PathBuf as PathBuf};
    use rational::Rational;
    use std::{
    	fs::{self, File},
    	io::Write as _,
    	process::{Command, Stdio}
    };
    
    const INTRO_LEN: Time = Time {
    	seconds: 3,
    	micros: 0
    };
    const OUTRO_LEN: Time = Time {
    	seconds: 5,
    	micros: 0
    };
    const TRANSITION: &str = "fadeblack";
    const TRANSITION_LEN: Time = Time {
    	seconds: 0,
    	micros: 200_000
    };
    
    fn cmd() -> Command {
    	let mut cmd = Command::new("busybox");
    	cmd.arg("ash")
    		.arg("-exuo")
    		.arg("pipefail")
    		.arg("-c")
    		.arg("exec");
    	cmd
    }
    
    fn ffprobe() -> Command {
    	let mut cmd = cmd();
    	cmd.arg("ffprobe")
    		.arg("-v")
    		.arg("error")
    		.arg("-of")
    		.arg("default=noprint_wrappers=1:nokey=1");
    	cmd
    }
    
    fn read_output(cmd: &mut Command) -> anyhow::Result<String> {
    	let out = cmd.stderr(Stdio::inherit()).output()?;
    	if !out.status.success() {
    		bail!(
    			"Executed command failed with exit status {:?}",
    			out.status.code()
    		);
    	}
    	String::from_utf8(out.stdout).context("Command returned non-utf8 output")
    }
    
    fn ffprobe_video(query: &str, input: &Path) -> anyhow::Result<String> {
    	read_output(
    		ffprobe()
    			.arg("-select_streams")
    			.arg("v:0")
    			.arg("-show_entries")