Skip to content

Commit

Permalink
For ossrs#2549: Fix duration issue for HLS on_hls. v4.0.176
Browse files Browse the repository at this point in the history
  • Loading branch information
Haibo Chen authored and winlinvip committed Oct 12, 2021
1 parent d6064ac commit eb3bbf1
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 8 deletions.
1 change: 1 addition & 0 deletions trunk/doc/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ The changelog for SRS.

## SRS 4.0 Changelog

* v4.0, 2021-10-12, Merge [#2549](https://github.com/ossrs/srs/pull/2549): Fix duration issue for HLS on_hls. v4.0.176
* v4.0, 2021-10-11, Fix [#1641](https://github.com/ossrs/srs/issues/1641), HLS/RTC picture corrupt for SPS/PPS lost. v4.0.175
* v4.0, 2021-10-11, RTC: Refine config, aac to rtmp_to_rtc, bframe to keep_bframe. v4.0.174
* v4.0, 2021-10-10, For [#1641](https://github.com/ossrs/srs/issues/1641), Support RTMP publish and play regression test. v4.0.173
Expand Down
3 changes: 2 additions & 1 deletion trunk/scripts/git.commit.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#!/bin/bash

for file in $(git remote); do echo ""; git push $file $@; done
#for file in $(git remote); do echo ""; git push $file $@; done
for file in $(git remote -v|grep -v https|grep push|awk '{print $1}'); do echo ""; echo "git push $file $@"; git push $file $@; done

23 changes: 17 additions & 6 deletions trunk/src/app/srs_app_hls.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,17 @@ void SrsHlsSegment::config_cipher(unsigned char* key,unsigned char* iv)

SrsEncFileWriter* fw = (SrsEncFileWriter*)writer;
fw->config_cipher(key, iv);
}

srs_error_t SrsHlsSegment::rename()
{
if (true) {
std::stringstream ss;
ss << srsu2msi(duration());
uri = srs_string_replace(uri, "[duration]", ss.str());
}

return SrsFragment::rename();
}

SrsDvrAsyncCallOnHls::SrsDvrAsyncCallOnHls(SrsContextId c, SrsRequest* r, string p, string t, string m, string mu, int s, srs_utime_t d)
Expand Down Expand Up @@ -607,6 +618,11 @@ srs_error_t SrsHlsMuxer::do_segment_close()
bool matchMinDuration = current->duration() >= SRS_HLS_SEGMENT_MIN_DURATION;
bool matchMaxDuration = current->duration() <= max_td * 2 * 1000;
if (matchMinDuration && matchMaxDuration) {
// rename from tmp to real path
if ((err = current->rename()) != srs_success) {
return srs_error_wrap(err, "rename");
}

// use async to call the http hooks, for it will cause thread switch.
if ((err = async->execute(new SrsDvrAsyncCallOnHls(_srs_context->get_id(), req, current->fullpath(),
current->uri, m3u8, m3u8_url, current->sequence_no, current->duration()))) != srs_success) {
Expand All @@ -620,12 +636,7 @@ srs_error_t SrsHlsMuxer::do_segment_close()

// close the muxer of finished segment.
srs_freep(current->tscw);

// rename from tmp to real path
if ((err = current->rename()) != srs_success) {
return srs_error_wrap(err, "rename");
}


segments->append(current);
current = NULL;
} else {
Expand Down
2 changes: 2 additions & 0 deletions trunk/src/app/srs_app_hls.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ class SrsHlsSegment : public SrsFragment
virtual ~SrsHlsSegment();
public:
void config_cipher(unsigned char* key,unsigned char* iv);
// replace the placeholder
virtual srs_error_t rename();
};

// The hls async call: on_hls
Expand Down
2 changes: 1 addition & 1 deletion trunk/src/core/srs_core_version4.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@

#define VERSION_MAJOR 4
#define VERSION_MINOR 0
#define VERSION_REVISION 175
#define VERSION_REVISION 176

#endif

0 comments on commit eb3bbf1

Please sign in to comment.