render videos with 3x bitrate

This commit is contained in:
Dominic 2023-11-16 11:49:38 +01:00
parent f2f3f67d10
commit 27c7cb3c7d
Signed by: msrd0
GPG key ID: DCC8C247452E98F9
3 changed files with 18 additions and 9 deletions

View file

@ -79,7 +79,7 @@ macro_rules! resolutions {
} }
} }
fn bitrate(self) -> &'static str { fn bitrate(self) -> u64 {
match self { match self {
$(Self::$res => $bitrate),+ $(Self::$res => $bitrate),+
} }
@ -100,12 +100,12 @@ macro_rules! resolutions {
} }
resolutions! { resolutions! {
nHD: 640 x 360 at "500k", nHD: 640 x 360 at 500_000,
HD: 1280 x 720 at "1M", HD: 1280 x 720 at 1_000_000,
FullHD: 1920 x 1080 at "2M", FullHD: 1920 x 1080 at 2_000_000,
WQHD: 2560 x 1440 at "3M", WQHD: 2560 x 1440 at 3_000_000,
// TODO qsx muss mal sagen wieviel bitrate für 4k // TODO qsx muss mal sagen wieviel bitrate für 4k
UHD: 3840 x 2160 at "4M" UHD: 3840 x 2160 at 4_000_000
} }
#[derive(Deserialize, Serialize)] #[derive(Deserialize, Serialize)]

View file

@ -110,7 +110,7 @@ enum FfmpegFilter {
pub(crate) struct Ffmpeg { pub(crate) struct Ffmpeg {
inputs: Vec<FfmpegInput>, inputs: Vec<FfmpegInput>,
filter: FfmpegFilter, filter: FfmpegFilter,
video_bitrate: Option<&'static str>, video_bitrate: Option<u64>,
output: FfmpegOutput, output: FfmpegOutput,
filter_idx: usize filter_idx: usize
@ -182,7 +182,7 @@ impl Ffmpeg {
self self
} }
pub fn set_video_bitrate(&mut self, bitrate: &'static str) -> &mut Self { pub fn set_video_bitrate(&mut self, bitrate: u64) -> &mut Self {
self.video_bitrate = Some(bitrate); self.video_bitrate = Some(bitrate);
self self
} }
@ -272,7 +272,7 @@ impl Ffmpeg {
cmd.arg("-c:v").arg("copy"); cmd.arg("-c:v").arg("copy");
} }
if venc && self.video_bitrate.is_some() { if venc && self.video_bitrate.is_some() {
cmd.arg("-b:v").arg(self.video_bitrate.unwrap()); cmd.arg("-b:v").arg(self.video_bitrate.unwrap().to_string());
} }
if aenc { if aenc {
cmd.arg("-c:a").arg("aac"); cmd.arg("-c:a").arg("aac");

View file

@ -443,6 +443,15 @@ impl<'a> Renderer<'a> {
// we're done :) // we're done :)
ffmpeg.set_filter_output(overlay); ffmpeg.set_filter_output(overlay);
ffmpeg.set_video_bitrate(
project
.source
.metadata
.as_ref()
.unwrap()
.source_res
.bitrate() * 3
);
ffmpeg.run()?; ffmpeg.run()?;
Ok(output) Ok(output)