正在显示
3 个修改的文件
包含
23 行增加
和
2 行删除
| @@ -454,7 +454,9 @@ int SrsDvrPlan::flv_open(string stream, string path) | @@ -454,7 +454,9 @@ int SrsDvrPlan::flv_open(string stream, string path) | ||
| 454 | { | 454 | { |
| 455 | int ret = ERROR_SUCCESS; | 455 | int ret = ERROR_SUCCESS; |
| 456 | 456 | ||
| 457 | - if ((ret = fs->open(path)) != ERROR_SUCCESS) { | 457 | + current_flv_path = path; |
| 458 | + std::string tmp_file = path + ".tmp"; | ||
| 459 | + if ((ret = fs->open(tmp_file)) != ERROR_SUCCESS) { | ||
| 458 | srs_error("open file stream for file %s failed. ret=%d", path.c_str(), ret); | 460 | srs_error("open file stream for file %s failed. ret=%d", path.c_str(), ret); |
| 459 | return ret; | 461 | return ret; |
| 460 | } | 462 | } |
| @@ -487,7 +489,21 @@ int SrsDvrPlan::on_video_msg(SrsSharedPtrMessage* /*video*/) | @@ -487,7 +489,21 @@ int SrsDvrPlan::on_video_msg(SrsSharedPtrMessage* /*video*/) | ||
| 487 | 489 | ||
| 488 | int SrsDvrPlan::flv_close() | 490 | int SrsDvrPlan::flv_close() |
| 489 | { | 491 | { |
| 490 | - return fs->close(); | 492 | + int ret = ERROR_SUCCESS; |
| 493 | + | ||
| 494 | + if ((ret = fs->close()) != ERROR_SUCCESS) { | ||
| 495 | + return ret; | ||
| 496 | + } | ||
| 497 | + | ||
| 498 | + std::string tmp_file = current_flv_path + ".tmp"; | ||
| 499 | + if (rename(tmp_file.c_str(), current_flv_path.c_str()) < 0) { | ||
| 500 | + ret = ERROR_SYSTEM_FILE_RENAME; | ||
| 501 | + srs_error("rename flv file failed, %s => %s. ret=%d", | ||
| 502 | + tmp_file.c_str(), current_flv_path.c_str(), ret); | ||
| 503 | + return ret; | ||
| 504 | + } | ||
| 505 | + | ||
| 506 | + return ret; | ||
| 491 | } | 507 | } |
| 492 | 508 | ||
| 493 | int SrsDvrPlan::on_dvr_keyframe() | 509 | int SrsDvrPlan::on_dvr_keyframe() |
| @@ -127,6 +127,10 @@ protected: | @@ -127,6 +127,10 @@ protected: | ||
| 127 | SrsSource* _source; | 127 | SrsSource* _source; |
| 128 | SrsRequest* _req; | 128 | SrsRequest* _req; |
| 129 | SrsRtmpJitter* jitter; | 129 | SrsRtmpJitter* jitter; |
| 130 | + /** | ||
| 131 | + * current flv file path. | ||
| 132 | + */ | ||
| 133 | + std::string current_flv_path; | ||
| 130 | public: | 134 | public: |
| 131 | SrsDvrPlan(); | 135 | SrsDvrPlan(); |
| 132 | virtual ~SrsDvrPlan(); | 136 | virtual ~SrsDvrPlan(); |
| @@ -106,6 +106,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -106,6 +106,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
| 106 | #define ERROR_SYSTEM_FILE_READ 426 | 106 | #define ERROR_SYSTEM_FILE_READ 426 |
| 107 | #define ERROR_SYSTEM_FILE_WRITE 427 | 107 | #define ERROR_SYSTEM_FILE_WRITE 427 |
| 108 | #define ERROR_SYSTEM_FILE_EOF 428 | 108 | #define ERROR_SYSTEM_FILE_EOF 428 |
| 109 | +#define ERROR_SYSTEM_FILE_RENAME 429 | ||
| 109 | 110 | ||
| 110 | // see librtmp. | 111 | // see librtmp. |
| 111 | // failed when open ssl create the dh | 112 | // failed when open ssl create the dh |
-
请 注册 或 登录 后发表评论