diff options
Diffstat (limited to 'stream/src/dash.rs')
| -rw-r--r-- | stream/src/dash.rs | 22 |
1 files changed, 16 insertions, 6 deletions
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<Box<dyn Read + Send + Sync>> { 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<Box<dyn Read + Send + Sync>> { 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<Box<dyn Read + Send + Sync>> { 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<Box<dyn Read + Send + Sync>> { 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<Box<dyn Read + Send + Sync>> { 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, |