正在显示
1 个修改的文件
包含
28 行增加
和
5 行删除
| @@ -339,20 +339,39 @@ int process_files(const char * output_dest_file) | @@ -339,20 +339,39 @@ int process_files(const char * output_dest_file) | ||
| 339 | get_duration_from_video_file(); | 339 | get_duration_from_video_file(); |
| 340 | 340 | ||
| 341 | if (filesvideo.size()) {//has video files | 341 | if (filesvideo.size()) {//has video files |
| 342 | + | ||
| 342 | for (int i = 0; i < filesaudio.size(); i++){ // | 343 | for (int i = 0; i < filesaudio.size(); i++){ // |
| 343 | fileinfo audio = filesaudio[i]; | 344 | fileinfo audio = filesaudio[i]; |
| 344 | - float audio_start = 0; | 345 | + float audio_start = audio.start_time; |
| 346 | + | ||
| 347 | + for (int j = i; j < filesaudio.size(); j++){ | ||
| 348 | + filesaudio[j].start_time -= audio_start; | ||
| 349 | + filesaudio[j].end_time -= audio_start; | ||
| 350 | + } | ||
| 351 | + | ||
| 352 | + for (int j = nv; j < filesvideo.size(); j++) { | ||
| 353 | + filesvideo[j].start_time -= audio_start; | ||
| 354 | + filesvideo[j].end_time -= audio_start; | ||
| 355 | + } | ||
| 356 | + | ||
| 357 | + audio = filesaudio[i]; | ||
| 358 | + | ||
| 359 | + audio_start = 0; | ||
| 345 | 360 | ||
| 346 | for (; nv < filesvideo.size(); nv++) { | 361 | for (; nv < filesvideo.size(); nv++) { |
| 347 | fileinfo video = filesvideo[nv]; | 362 | fileinfo video = filesvideo[nv]; |
| 348 | 363 | ||
| 349 | if (video.start_time - audio_start > 0.100) { | 364 | if (video.start_time - audio_start > 0.100) { |
| 350 | - | ||
| 351 | sprintf(destfile, "%d_%s", nf, audio.name.c_str()); | 365 | sprintf(destfile, "%d_%s", nf, audio.name.c_str()); |
| 352 | - split_audio(audio, audio_start, video.start_time - audio_start, destfile); | 366 | + if (video.start_time > audio.end_time){ |
| 367 | + split_audio(audio, audio_start, audio.end_time - audio_start, destfile); | ||
| 368 | + } | ||
| 369 | + else{ | ||
| 370 | + split_audio(audio, audio_start, video.start_time - audio_start, destfile); | ||
| 371 | + audio_start = video.start_time; | ||
| 372 | + } | ||
| 353 | tmp_files.push_back(destfile); | 373 | tmp_files.push_back(destfile); |
| 354 | - | ||
| 355 | - audio_start = video.start_time; | 374 | + |
| 356 | 375 | ||
| 357 | sprintf(destfile, "%s.jpg", video.name.c_str()); | 376 | sprintf(destfile, "%s.jpg", video.name.c_str()); |
| 358 | get_video_first_frame_jpeg(video, destfile); | 377 | get_video_first_frame_jpeg(video, destfile); |
| @@ -362,6 +381,10 @@ int process_files(const char * output_dest_file) | @@ -362,6 +381,10 @@ int process_files(const char * output_dest_file) | ||
| 362 | merge_audio_pic(audio, nf, video, destfile); | 381 | merge_audio_pic(audio, nf, video, destfile); |
| 363 | merged_files.push_back(destfile); | 382 | merged_files.push_back(destfile); |
| 364 | nf++; | 383 | nf++; |
| 384 | + | ||
| 385 | + if (video.start_time > audio.end_time){//to next audio | ||
| 386 | + break; | ||
| 387 | + } | ||
| 365 | } | 388 | } |
| 366 | if (nv != filesvideo.size() - 1) {// not the last one | 389 | if (nv != filesvideo.size() - 1) {// not the last one |
| 367 | sprintf(destfile, "%d_%s", nf, audio.name.c_str()); | 390 | sprintf(destfile, "%d_%s", nf, audio.name.c_str()); |
-
请 注册 或 登录 后发表评论