From 7ded052e22df1be30b29a2943b2bbe9196152a2d Mon Sep 17 00:00:00 2001 From: metamuffin Date: Wed, 4 Mar 2026 17:52:03 +0100 Subject: move codec parameter string code in remuxer; init frag for transcodes --- stream/src/dash.rs | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'stream/src/dash.rs') diff --git a/stream/src/dash.rs b/stream/src/dash.rs index 01d0019..b9b9b3a 100644 --- a/stream/src/dash.rs +++ b/stream/src/dash.rs @@ -78,8 +78,8 @@ pub fn dash(sinfo: &SMediaInfo) -> Result> { else { unreachable!() }; - let container = StreamContainer::WebM; - let container_mime = container.mime_type(); + let container = choose_container(format); + let container_mime = container.mime_type(track.kind); let codec_param = &format.codec_param; writeln!( out, @@ -87,7 +87,7 @@ pub fn dash(sinfo: &SMediaInfo) -> Result> { id=\"{repr_id}\" \ mimeType=\"{container_mime}\" \ codecs=\"{codec_param}\" \ - bandwidth=\"{bitrate}\" \ + bandwidth=\"{bitrate:.0}\" \ width=\"{width}\" \ height=\"{height}\" \ scanType=\"unknown\" \ @@ -117,8 +117,8 @@ pub fn dash(sinfo: &SMediaInfo) -> Result> { else { unreachable!() }; - let container = StreamContainer::WebM; - let container_mime = container.mime_type(); + let container = choose_container(format); + let container_mime = container.mime_type(track.kind); let codec_param = &format.codec_param; writeln!( out, @@ -126,7 +126,7 @@ pub fn dash(sinfo: &SMediaInfo) -> Result> { id=\"{repr_id}\" \ mimeType=\"{container_mime}\" \ codecs=\"{codec_param}\" \ - bandwidth=\"{bitrate}\" \ + bandwidth=\"{bitrate:.0}\" \ audioSamplingRate=\"{samplerate:.0}\">" )?; write_segment_template(&mut out, as_id, container, &frags)?; @@ -144,6 +144,16 @@ pub fn dash(sinfo: &SMediaInfo) -> Result> { Ok(Box::new(Cursor::new(out))) } +fn choose_container(format: &StreamFormatInfo) -> StreamContainer { + if format.containers.contains(&StreamContainer::WebM) { + StreamContainer::WebM + } else if format.containers.contains(&StreamContainer::MPEG4) { + StreamContainer::MPEG4 + } else { + StreamContainer::Matroska + } +} + fn write_segment_template( out: &mut String, as_id: usize, -- cgit v1.3