aboutsummaryrefslogtreecommitdiff
path: root/stream/src/dash.rs
diff options
context:
space:
mode:
Diffstat (limited to 'stream/src/dash.rs')
-rw-r--r--stream/src/dash.rs22
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,