mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
DASH: Fix number mode bug to make it run. v5.0.96 (#3240)
* Add utc time utility * Fix calculate duration in fmp4 * Refine dash code, use segment template timeline * Shrink m4s file and cleanup * Support play by dash.js * Use SegmentTemplate timeline mode with $Number$ Co-authored-by: winlin <winlin@vip.126.com>
This commit is contained in:
parent
af192d6184
commit
271afbbf82
18 changed files with 506 additions and 105 deletions
|
@ -4912,7 +4912,7 @@ srs_error_t SrsMp4SampleManager::write(SrsMp4MovieBox* moov)
|
|||
return err;
|
||||
}
|
||||
|
||||
srs_error_t SrsMp4SampleManager::write(SrsMp4MovieFragmentBox* moof, uint64_t& dts)
|
||||
srs_error_t SrsMp4SampleManager::write(SrsMp4MovieFragmentBox* moof, uint64_t dts)
|
||||
{
|
||||
srs_error_t err = srs_success;
|
||||
|
||||
|
@ -4936,11 +4936,12 @@ srs_error_t SrsMp4SampleManager::write(SrsMp4MovieFragmentBox* moof, uint64_t& d
|
|||
entry->sample_flags = 0x01000000;
|
||||
}
|
||||
|
||||
entry->sample_duration = (uint32_t)srs_min(100, sample->dts - dts);
|
||||
if (entry->sample_duration == 0) {
|
||||
entry->sample_duration = 40;
|
||||
vector<SrsMp4Sample*>::iterator iter = (it + 1);
|
||||
if (iter == samples.end()) {
|
||||
entry->sample_duration = dts - sample->dts;
|
||||
} else {
|
||||
entry->sample_duration = (*iter)->dts - sample->dts;
|
||||
}
|
||||
dts = sample->dts;
|
||||
|
||||
entry->sample_size = sample->nb_data;
|
||||
entry->sample_composition_time_offset = (int64_t)(sample->pts - sample->dts);
|
||||
|
@ -6445,8 +6446,7 @@ srs_error_t SrsMp4M2tsSegmentEncoder::flush(uint64_t& dts)
|
|||
uint64_t duration = 0;
|
||||
if (samples && !samples->samples.empty()) {
|
||||
SrsMp4Sample* first = samples->samples[0];
|
||||
SrsMp4Sample* last = samples->samples[samples->samples.size() - 1];
|
||||
duration = srs_max(0, last->dts - first->dts);
|
||||
duration = srs_max(0, dts - first->dts);
|
||||
}
|
||||
|
||||
SrsMp4SegmentIndexEntry entry;
|
||||
|
|
|
@ -1906,7 +1906,7 @@ public:
|
|||
virtual srs_error_t write(SrsMp4MovieBox* moov);
|
||||
// Write the samples info to moof.
|
||||
// @param The dts is the dts of last segment.
|
||||
virtual srs_error_t write(SrsMp4MovieFragmentBox* moof, uint64_t& dts);
|
||||
virtual srs_error_t write(SrsMp4MovieFragmentBox* moof, uint64_t dts);
|
||||
private:
|
||||
virtual srs_error_t write_track(SrsFrameType track,
|
||||
SrsMp4DecodingTime2SampleBox* stts, SrsMp4SyncSampleBox* stss, SrsMp4CompositionTime2SampleBox* ctts,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue