Set AdaptationSet contentType

- "video" and "audio" content type are set. No "text" support yet.

Change-Id: I15a9aae1aab15022627ca737668e6c97069a2e95
This commit is contained in:
Rintaro Kuroiwa 2015-06-23 10:21:44 -07:00
parent c3c971ebd9
commit 5f7a55b1db
10 changed files with 111 additions and 23 deletions

View File

@ -538,6 +538,12 @@ Representation* AdaptationSet::AddRepresentation(const MediaInfo& media_info) {
} }
} }
if (media_info.has_video_info()) {
content_type_ = "video";
} else if (media_info.has_audio_info()) {
content_type_ = "audio";
}
representations_.push_back(representation.get()); representations_.push_back(representation.get());
return representation.release(); return representation.release();
} }
@ -570,6 +576,7 @@ xml::ScopedXmlPtr<xmlNode>::type AdaptationSet::GetXml() {
} }
adaptation_set.SetId(id_); adaptation_set.SetId(id_);
adaptation_set.SetStringAttribute("contentType", content_type_);
if (!lang_.empty() && lang_ != "und") { if (!lang_.empty() && lang_ != "und") {
adaptation_set.SetStringAttribute("lang", LanguageToShortestForm(lang_)); adaptation_set.SetStringAttribute("lang", LanguageToShortestForm(lang_));
} }

View File

@ -181,6 +181,12 @@ class AdaptationSet {
private: private:
friend class MpdBuilder; friend class MpdBuilder;
FRIEND_TEST_ALL_PREFIXES(CommonMpdBuilderTest, CheckAdaptationSetId); FRIEND_TEST_ALL_PREFIXES(CommonMpdBuilderTest, CheckAdaptationSetId);
FRIEND_TEST_ALL_PREFIXES(CommonMpdBuilderTest,
CheckAdaptationSetVideoContentType);
FRIEND_TEST_ALL_PREFIXES(CommonMpdBuilderTest,
CheckAdaptationSetAudioContentType);
FRIEND_TEST_ALL_PREFIXES(CommonMpdBuilderTest,
CheckAdaptationSetTextContentType);
/// @param adaptation_set_id is an ID number for this AdaptationSet. /// @param adaptation_set_id is an ID number for this AdaptationSet.
/// @param representation_counter is a Counter for assigning ID numbers to /// @param representation_counter is a Counter for assigning ID numbers to
@ -220,6 +226,10 @@ class AdaptationSet {
// So, key == CalculatedValue(value) // So, key == CalculatedValue(value)
std::map<double, std::string> video_frame_rates_; std::map<double, std::string> video_frame_rates_;
// contentType attribute of AdaptationSet.
// Determined by examining the MediaInfo passed to AddRepresentation().
std::string content_type_;
DISALLOW_COPY_AND_ASSIGN(AdaptationSet); DISALLOW_COPY_AND_ASSIGN(AdaptationSet);
}; };

View File

@ -25,9 +25,10 @@ namespace edash_packager {
using base::FilePath; using base::FilePath;
namespace { namespace {
// Any number for RepresentationId. Required to create a Representation but // Any number for {AdaptationSet,Representation} ID. Required to create
// not checked in test. // either objects. Not checked in test.
const uint32_t kAnyRepresentationId = 1; const uint32_t kAnyRepresentationId = 1;
const uint32_t kAnyAdaptationSetId = 1;
const char kSElementTemplate[] = const char kSElementTemplate[] =
"<S t=\"%" PRIu64 "\" d=\"%" PRIu64 "\" r=\"%" PRIu64 "\"/>\n"; "<S t=\"%" PRIu64 "\" d=\"%" PRIu64 "\" r=\"%" PRIu64 "\"/>\n";
const char kSElementTemplateWithoutR[] = const char kSElementTemplateWithoutR[] =
@ -135,7 +136,7 @@ class DynamicMpdBuilderTest : public MpdBuilderTest<MpdBuilder::kDynamic> {
std::string GetDefaultMediaInfo() { std::string GetDefaultMediaInfo() {
const char kMediaInfo[] = const char kMediaInfo[] =
"video_info {\n" "video_info {\n"
" codec: \"avc1.010101\"\n" " codec: 'avc1.010101'\n"
" width: 720\n" " width: 720\n"
" height: 480\n" " height: 480\n"
" time_scale: 10\n" " time_scale: 10\n"
@ -145,8 +146,8 @@ class DynamicMpdBuilderTest : public MpdBuilderTest<MpdBuilder::kDynamic> {
"}\n" "}\n"
"reference_time_scale: %u\n" "reference_time_scale: %u\n"
"container_type: 1\n" "container_type: 1\n"
"init_segment_name: \"init.mp4\"\n" "init_segment_name: 'init.mp4'\n"
"segment_template: \"$Time$.mp4\"\n"; "segment_template: '$Time$.mp4'\n";
return base::StringPrintf(kMediaInfo, DefaultTimeScale()); return base::StringPrintf(kMediaInfo, DefaultTimeScale());
} }
@ -208,7 +209,7 @@ class SegmentTemplateTest : public DynamicMpdBuilderTest {
"type=\"dynamic\" profiles=\"urn:mpeg:dash:profile:isoff-live:2011\">\n" "type=\"dynamic\" profiles=\"urn:mpeg:dash:profile:isoff-live:2011\">\n"
" <Period start=\"PT0S\">\n" " <Period start=\"PT0S\">\n"
" <AdaptationSet id=\"0\" width=\"720\" height=\"480\"" " <AdaptationSet id=\"0\" width=\"720\" height=\"480\""
" frameRate=\"10/5\">\n" " frameRate=\"10/5\" contentType=\"video\">\n"
" <Representation id=\"0\" bandwidth=\"%" PRIu64 "\" " " <Representation id=\"0\" bandwidth=\"%" PRIu64 "\" "
"codecs=\"avc1.010101\" mimeType=\"video/mp4\" width=\"720\" " "codecs=\"avc1.010101\" mimeType=\"video/mp4\" width=\"720\" "
"height=\"480\" frameRate=\"10/5\" sar=\"1:1\">\n" "height=\"480\" frameRate=\"10/5\" sar=\"1:1\">\n"
@ -258,7 +259,7 @@ class TimeShiftBufferDepthTest : public SegmentTemplateTest {
// $Number$ for segment template. // $Number$ for segment template.
const char kMediaInfo[] = const char kMediaInfo[] =
"video_info {\n" "video_info {\n"
" codec: \"avc1.010101\"\n" " codec: 'avc1.010101'\n"
" width: 720\n" " width: 720\n"
" height: 480\n" " height: 480\n"
" time_scale: 10\n" " time_scale: 10\n"
@ -268,8 +269,8 @@ class TimeShiftBufferDepthTest : public SegmentTemplateTest {
"}\n" "}\n"
"reference_time_scale: %u\n" "reference_time_scale: %u\n"
"container_type: 1\n" "container_type: 1\n"
"init_segment_name: \"init.mp4\"\n" "init_segment_name: 'init.mp4'\n"
"segment_template: \"$Number$.mp4\"\n"; "segment_template: '$Number$.mp4'\n";
const std::string& number_template_media_info = const std::string& number_template_media_info =
base::StringPrintf(kMediaInfo, DefaultTimeScale()); base::StringPrintf(kMediaInfo, DefaultTimeScale());
@ -291,7 +292,7 @@ class TimeShiftBufferDepthTest : public SegmentTemplateTest {
"timeShiftBufferDepth=\"PT%dS\">\n" "timeShiftBufferDepth=\"PT%dS\">\n"
" <Period start=\"PT0S\">\n" " <Period start=\"PT0S\">\n"
" <AdaptationSet id=\"0\" width=\"720\" height=\"480\"" " <AdaptationSet id=\"0\" width=\"720\" height=\"480\""
" frameRate=\"10/2\">\n" " frameRate=\"10/2\" contentType=\"video\">\n"
" <Representation id=\"0\" bandwidth=\"%" PRIu64 "\" " " <Representation id=\"0\" bandwidth=\"%" PRIu64 "\" "
"codecs=\"avc1.010101\" mimeType=\"video/mp4\" width=\"720\" " "codecs=\"avc1.010101\" mimeType=\"video/mp4\" width=\"720\" "
"height=\"480\" frameRate=\"10/2\" sar=\"1:1\">\n" "height=\"480\" frameRate=\"10/2\" sar=\"1:1\">\n"
@ -327,7 +328,7 @@ class TimeShiftBufferDepthTest : public SegmentTemplateTest {
TEST_F(CommonMpdBuilderTest, ValidMediaInfo) { TEST_F(CommonMpdBuilderTest, ValidMediaInfo) {
const char kTestMediaInfo[] = const char kTestMediaInfo[] =
"video_info {\n" "video_info {\n"
" codec: \"avc1\"\n" " codec: 'avc1'\n"
" width: 720\n" " width: 720\n"
" height: 480\n" " height: 480\n"
" time_scale: 10\n" " time_scale: 10\n"
@ -346,7 +347,7 @@ TEST_F(CommonMpdBuilderTest, InvalidMediaInfo) {
// Missing width. // Missing width.
const char kTestMediaInfo[] = const char kTestMediaInfo[] =
"video_info {\n" "video_info {\n"
" codec: \"avc1\"\n" " codec: 'avc1'\n"
" height: 480\n" " height: 480\n"
" time_scale: 10\n" " time_scale: 10\n"
" frame_duration: 10\n" " frame_duration: 10\n"
@ -363,7 +364,7 @@ TEST_F(CommonMpdBuilderTest, InvalidMediaInfo) {
TEST_F(CommonMpdBuilderTest, CheckVideoInfoReflectedInXml) { TEST_F(CommonMpdBuilderTest, CheckVideoInfoReflectedInXml) {
const char kTestMediaInfo[] = const char kTestMediaInfo[] =
"video_info {\n" "video_info {\n"
" codec: \"avc1\"\n" " codec: 'avc1'\n"
" width: 1280\n" " width: 1280\n"
" height: 720\n" " height: 720\n"
" time_scale: 10\n" " time_scale: 10\n"
@ -388,6 +389,76 @@ TEST_F(CommonMpdBuilderTest, CheckVideoInfoReflectedInXml) {
ExpectAttributeEqString("frameRate", "10/10", node_xml.get())); ExpectAttributeEqString("frameRate", "10/10", node_xml.get()));
} }
// Verify that content type is set correctly if video info is present in
// MediaInfo.
TEST_F(CommonMpdBuilderTest, CheckAdaptationSetVideoContentType) {
base::AtomicSequenceNumber sequence_counter;
const char kVideoMediaInfo[] =
"video_info {\n"
" codec: 'avc1'\n"
" width: 1280\n"
" height: 720\n"
" time_scale: 10\n"
" frame_duration: 10\n"
" pixel_width: 1\n"
" pixel_height: 1\n"
"}\n"
"container_type: 1\n";
AdaptationSet adaptation_set(
kAnyAdaptationSetId, "", MpdOptions(), &sequence_counter);
adaptation_set.AddRepresentation(ConvertToMediaInfo(kVideoMediaInfo));
xml::ScopedXmlPtr<xmlNode>::type node_xml(adaptation_set.GetXml());
EXPECT_NO_FATAL_FAILURE(
ExpectAttributeEqString("contentType", "video", node_xml.get()));
}
// Verify that content type is set correctly if audio info is present in
// MediaInfo.
TEST_F(CommonMpdBuilderTest, CheckAdaptationSetAudioContentType) {
base::AtomicSequenceNumber sequence_counter;
const char kAudioMediaInfo[] =
"audio_info {\n"
" codec: 'mp4a.40.2'\n"
" sampling_frequency: 44100\n"
" time_scale: 1200\n"
" num_channels: 2\n"
"}\n"
"container_type: 1\n";
AdaptationSet adaptation_set(
kAnyAdaptationSetId, "", MpdOptions(), &sequence_counter);
adaptation_set.AddRepresentation(ConvertToMediaInfo(kAudioMediaInfo));
xml::ScopedXmlPtr<xmlNode>::type node_xml(adaptation_set.GetXml());
EXPECT_NO_FATAL_FAILURE(
ExpectAttributeEqString("contentType", "audio", node_xml.get()));
}
// Verify that content type is set correctly if text info is present in
// MediaInfo.
// TODO(rkuroiwa): Enable this once text support is implemented.
// This fails because it fails to get the codec, therefore Representation
// creation fails.
TEST_F(CommonMpdBuilderTest, DISABLED_CheckAdaptationSetTextContentType) {
base::AtomicSequenceNumber sequence_counter;
const char kTextMediaInfo[] =
"text_info {\n"
" format: 'ttml'\n"
" language: 'en'\n"
"}\n"
"container_type: 1\n";
AdaptationSet adaptation_set(
kAnyAdaptationSetId, "", MpdOptions(), &sequence_counter);
adaptation_set.AddRepresentation(ConvertToMediaInfo(kTextMediaInfo));
xml::ScopedXmlPtr<xmlNode>::type node_xml(adaptation_set.GetXml());
EXPECT_NO_FATAL_FAILURE(
ExpectAttributeEqString("contentType", "text", node_xml.get()));
}
TEST_F(CommonMpdBuilderTest, CheckAdaptationSetId) { TEST_F(CommonMpdBuilderTest, CheckAdaptationSetId) {
base::AtomicSequenceNumber sequence_counter; base::AtomicSequenceNumber sequence_counter;
const uint32_t kAdaptationSetId = 42; const uint32_t kAdaptationSetId = 42;

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S"> <MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S">
<Period> <Period>
<AdaptationSet id="0"> <AdaptationSet id="0" contentType="audio">
<Representation id="0" bandwidth="400" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100"> <Representation id="0" bandwidth="400" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/> <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
<BaseURL>test_output_file_name_audio1.mp4</BaseURL> <BaseURL>test_output_file_name_audio1.mp4</BaseURL>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S"> <MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S">
<Period> <Period>
<AdaptationSet id="0" width="720" height="480" frameRate="10/1"> <AdaptationSet id="0" width="720" height="480" frameRate="10/1" contentType="video">
<Representation id="1" bandwidth="7620" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/1" sar="1:1"> <Representation id="1" bandwidth="7620" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/1" sar="1:1">
<BaseURL>test_output_file_name1.mp4</BaseURL> <BaseURL>test_output_file_name1.mp4</BaseURL>
<SegmentBase indexRange="121-221" timescale="1000"> <SegmentBase indexRange="121-221" timescale="1000">
@ -9,7 +9,7 @@
</SegmentBase> </SegmentBase>
</Representation> </Representation>
</AdaptationSet> </AdaptationSet>
<AdaptationSet id="1"> <AdaptationSet id="1" contentType="audio">
<Representation id="0" bandwidth="400" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100"> <Representation id="0" bandwidth="400" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/> <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
<BaseURL>test_output_file_name_audio1.mp4</BaseURL> <BaseURL>test_output_file_name_audio1.mp4</BaseURL>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" availabilityStartTime="2011-12-25T12:30:00" minBufferTime="PT2S" type="dynamic" profiles="urn:mpeg:dash:profile:isoff-live:2011"> <MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" availabilityStartTime="2011-12-25T12:30:00" minBufferTime="PT2S" type="dynamic" profiles="urn:mpeg:dash:profile:isoff-live:2011">
<Period start="PT0S"> <Period start="PT0S">
<AdaptationSet id="0" width="720" height="480" frameRate="10/5"> <AdaptationSet id="0" width="720" height="480" frameRate="10/5" contentType="video">
<Representation id="0" bandwidth="102400" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/5" sar="1:1"> <Representation id="0" bandwidth="102400" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/5" sar="1:1">
<SegmentTemplate timescale="1000" initialization="init.mp4" media="$Time$.mp4"> <SegmentTemplate timescale="1000" initialization="init.mp4" media="$Time$.mp4">
<SegmentTimeline> <SegmentTimeline>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT24.00943374633789S"> <MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT24.00943374633789S">
<Period> <Period>
<AdaptationSet id="0"> <AdaptationSet id="0" contentType="audio">
<Representation id="0" bandwidth="195857" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100"> <Representation id="0" bandwidth="195857" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/> <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
<ContentProtection schemeIdUri="http://foo.com/"/> <ContentProtection schemeIdUri="http://foo.com/"/>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S"> <MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S">
<Period> <Period>
<AdaptationSet id="0" width="720" height="480" frameRate="10/1"> <AdaptationSet id="0" width="720" height="480" frameRate="10/1" contentType="video">
<Representation id="3" bandwidth="7620" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/1" sar="1:1"> <Representation id="3" bandwidth="7620" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/1" sar="1:1">
<BaseURL>test_output_file_name1.mp4</BaseURL> <BaseURL>test_output_file_name1.mp4</BaseURL>
<SegmentBase indexRange="121-221" timescale="1000"> <SegmentBase indexRange="121-221" timescale="1000">
@ -9,7 +9,7 @@
</SegmentBase> </SegmentBase>
</Representation> </Representation>
</AdaptationSet> </AdaptationSet>
<AdaptationSet id="1" lang="en"> <AdaptationSet id="1" lang="en" contentType="audio">
<Representation id="0" bandwidth="400" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100"> <Representation id="0" bandwidth="400" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/> <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
<BaseURL>test_output_file_name_audio_eng1.mp4</BaseURL> <BaseURL>test_output_file_name_audio_eng1.mp4</BaseURL>
@ -25,7 +25,7 @@
</SegmentBase> </SegmentBase>
</Representation> </Representation>
</AdaptationSet> </AdaptationSet>
<AdaptationSet id="2" lang="de"> <AdaptationSet id="2" lang="de" contentType="audio">
<Representation id="2" bandwidth="400" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100"> <Representation id="2" bandwidth="400" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/> <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
<BaseURL>test_output_file_name_audio_ger1.mp4</BaseURL> <BaseURL>test_output_file_name_audio_ger1.mp4</BaseURL>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S"> <MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S">
<Period> <Period>
<AdaptationSet id="0" width="720" height="480" frameRate="10/1"> <AdaptationSet id="0" width="720" height="480" frameRate="10/1" contentType="video">
<Representation id="0" bandwidth="7620" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/1" sar="1:1"> <Representation id="0" bandwidth="7620" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/1" sar="1:1">
<BaseURL>test_output_file_name1.mp4</BaseURL> <BaseURL>test_output_file_name1.mp4</BaseURL>
<SegmentBase indexRange="121-221" timescale="1000"> <SegmentBase indexRange="121-221" timescale="1000">

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S"> <MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S">
<Period> <Period>
<AdaptationSet id="0" maxWidth="720" maxHeight="480" maxFrameRate="10/1"> <AdaptationSet id="0" maxWidth="720" maxHeight="480" maxFrameRate="10/1" contentType="video">
<Representation id="0" bandwidth="7620" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/1" sar="1:1"> <Representation id="0" bandwidth="7620" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/1" sar="1:1">
<BaseURL>test_output_file_name1.mp4</BaseURL> <BaseURL>test_output_file_name1.mp4</BaseURL>
<SegmentBase indexRange="121-221" timescale="1000"> <SegmentBase indexRange="121-221" timescale="1000">