正在显示
2 个修改的文件
包含
13 行增加
和
3 行删除
| @@ -307,10 +307,10 @@ int SrsFlvSegment::write_video(SrsSharedPtrMessage* __video) | @@ -307,10 +307,10 @@ int SrsFlvSegment::write_video(SrsSharedPtrMessage* __video) | ||
| 307 | char* payload = video->payload; | 307 | char* payload = video->payload; |
| 308 | int size = video->size; | 308 | int size = video->size; |
| 309 | 309 | ||
| 310 | + bool is_sequence_header = SrsFlvCodec::video_is_sequence_header(payload, size); | ||
| 310 | #ifdef SRS_AUTO_HTTP_CALLBACK | 311 | #ifdef SRS_AUTO_HTTP_CALLBACK |
| 311 | bool is_key_frame = SrsFlvCodec::video_is_h264(payload, size) | 312 | bool is_key_frame = SrsFlvCodec::video_is_h264(payload, size) |
| 312 | - && SrsFlvCodec::video_is_keyframe(payload, size) | ||
| 313 | - && !SrsFlvCodec::video_is_sequence_header(payload, size); | 313 | + && SrsFlvCodec::video_is_keyframe(payload, size) && !is_sequence_header; |
| 314 | if (is_key_frame) { | 314 | if (is_key_frame) { |
| 315 | has_keyframe = true; | 315 | has_keyframe = true; |
| 316 | if ((ret = plan->on_video_keyframe()) != ERROR_SUCCESS) { | 316 | if ((ret = plan->on_video_keyframe()) != ERROR_SUCCESS) { |
| @@ -319,6 +319,16 @@ int SrsFlvSegment::write_video(SrsSharedPtrMessage* __video) | @@ -319,6 +319,16 @@ int SrsFlvSegment::write_video(SrsSharedPtrMessage* __video) | ||
| 319 | } | 319 | } |
| 320 | srs_verbose("dvr video is key: %d", is_key_frame); | 320 | srs_verbose("dvr video is key: %d", is_key_frame); |
| 321 | #endif | 321 | #endif |
| 322 | + | ||
| 323 | + // accept the sequence header here. | ||
| 324 | + // when got no keyframe, ignore when should wait keyframe. | ||
| 325 | + if (!has_keyframe && !is_sequence_header) { | ||
| 326 | + bool wait_keyframe = _srs_config->get_dvr_wait_keyframe(req->vhost); | ||
| 327 | + if (wait_keyframe) { | ||
| 328 | + srs_info("dvr: ignore when wait keyframe."); | ||
| 329 | + return ret; | ||
| 330 | + } | ||
| 331 | + } | ||
| 322 | 332 | ||
| 323 | if ((jitter->correct(video, 0, 0, jitter_algorithm)) != ERROR_SUCCESS) { | 333 | if ((jitter->correct(video, 0, 0, jitter_algorithm)) != ERROR_SUCCESS) { |
| 324 | return ret; | 334 | return ret; |
| @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
| 31 | // current release version | 31 | // current release version |
| 32 | #define VERSION_MAJOR 2 | 32 | #define VERSION_MAJOR 2 |
| 33 | #define VERSION_MINOR 0 | 33 | #define VERSION_MINOR 0 |
| 34 | -#define VERSION_REVISION 126 | 34 | +#define VERSION_REVISION 127 |
| 35 | 35 | ||
| 36 | // server info. | 36 | // server info. |
| 37 | #define RTMP_SIG_SRS_KEY "SRS" | 37 | #define RTMP_SIG_SRS_KEY "SRS" |
-
请 注册 或 登录 后发表评论