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 {
$(Self::$res => $bitrate),+
}
@ -100,12 +100,12 @@ macro_rules! resolutions {
}
resolutions! {
nHD: 640 x 360 at "500k",
HD: 1280 x 720 at "1M",
FullHD: 1920 x 1080 at "2M",
WQHD: 2560 x 1440 at "3M",
nHD: 640 x 360 at 500_000,
HD: 1280 x 720 at 1_000_000,
FullHD: 1920 x 1080 at 2_000_000,
WQHD: 2560 x 1440 at 3_000_000,
// 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)]

View file

@ -110,7 +110,7 @@ enum FfmpegFilter {
pub(crate) struct Ffmpeg {
inputs: Vec<FfmpegInput>,
filter: FfmpegFilter,
video_bitrate: Option<&'static str>,
video_bitrate: Option<u64>,
output: FfmpegOutput,
filter_idx: usize
@ -182,7 +182,7 @@ impl Ffmpeg {
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
}
@ -272,7 +272,7 @@ impl Ffmpeg {
cmd.arg("-c:v").arg("copy");
}
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 {
cmd.arg("-c:a").arg("aac");

View file

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