1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-02-13 11:51:57 +00:00

for #179, wait keyframe for dvr. 2.0.127

This commit is contained in:
winlin 2015-02-27 21:11:29 +08:00
parent 0213cc6466
commit 8ed256b7e9
2 changed files with 13 additions and 3 deletions

View file

@ -307,10 +307,10 @@ int SrsFlvSegment::write_video(SrsSharedPtrMessage* __video)
char* payload = video->payload; char* payload = video->payload;
int size = video->size; int size = video->size;
bool is_sequence_header = SrsFlvCodec::video_is_sequence_header(payload, size);
#ifdef SRS_AUTO_HTTP_CALLBACK #ifdef SRS_AUTO_HTTP_CALLBACK
bool is_key_frame = SrsFlvCodec::video_is_h264(payload, size) bool is_key_frame = SrsFlvCodec::video_is_h264(payload, size)
&& SrsFlvCodec::video_is_keyframe(payload, size) && SrsFlvCodec::video_is_keyframe(payload, size) && !is_sequence_header;
&& !SrsFlvCodec::video_is_sequence_header(payload, size);
if (is_key_frame) { if (is_key_frame) {
has_keyframe = true; has_keyframe = true;
if ((ret = plan->on_video_keyframe()) != ERROR_SUCCESS) { if ((ret = plan->on_video_keyframe()) != ERROR_SUCCESS) {
@ -320,6 +320,16 @@ int SrsFlvSegment::write_video(SrsSharedPtrMessage* __video)
srs_verbose("dvr video is key: %d", is_key_frame); srs_verbose("dvr video is key: %d", is_key_frame);
#endif #endif
// accept the sequence header here.
// when got no keyframe, ignore when should wait keyframe.
if (!has_keyframe && !is_sequence_header) {
bool wait_keyframe = _srs_config->get_dvr_wait_keyframe(req->vhost);
if (wait_keyframe) {
srs_info("dvr: ignore when wait keyframe.");
return ret;
}
}
if ((jitter->correct(video, 0, 0, jitter_algorithm)) != ERROR_SUCCESS) { if ((jitter->correct(video, 0, 0, jitter_algorithm)) != ERROR_SUCCESS) {
return ret; return ret;
} }

View file

@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// current release version // current release version
#define VERSION_MAJOR 2 #define VERSION_MAJOR 2
#define VERSION_MINOR 0 #define VERSION_MINOR 0
#define VERSION_REVISION 126 #define VERSION_REVISION 127
// server info. // server info.
#define RTMP_SIG_SRS_KEY "SRS" #define RTMP_SIG_SRS_KEY "SRS"