diff options
author | Mole Shang <[email protected]> | 2023-08-07 15:31:11 +0800 |
---|---|---|
committer | Mole Shang <[email protected]> | 2023-08-07 15:31:45 +0800 |
commit | 51747e102ba304304a683ec93b2f62caccbead58 (patch) | |
tree | 023c64e68ad8be2f40493c505a7bbf9714fc11c7 /src/extractors | |
parent | 189fba5a4b63706575f9287cd0b1760a331d636e (diff) | |
download | hinata-51747e102ba304304a683ec93b2f62caccbead58.tar.gz hinata-51747e102ba304304a683ec93b2f62caccbead58.tar.bz2 hinata-51747e102ba304304a683ec93b2f62caccbead58.zip |
extractors/bilibili: use ffmpeg to merge files once downloaded
Diffstat (limited to 'src/extractors')
-rw-r--r-- | src/extractors/bilibili.c | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/src/extractors/bilibili.c b/src/extractors/bilibili.c index 675a035..fd95884 100644 --- a/src/extractors/bilibili.c +++ b/src/extractors/bilibili.c @@ -13,6 +13,7 @@ #include "../logger.h" #include "../process_url.h" #include "../utils.h" +#include "../utils/ffmpeg.h" #include "bilibili.h" #include "extractor.h" @@ -380,13 +381,13 @@ static void dash_cleanup(Dash *dash) { free_array(&dash->dashinfo.dash.video); } -static int ffmpeg_merge(callback_struct_t *cb_struct) { - char *filename = - malloc(strlen(cb_struct->title) + strlen(cb_struct->ext) + 2); - sprintf(filename, "%s.%s", cb_struct->title, cb_struct->ext); - DEBUG_PRINT("Callback gets filename: %s\n", filename); - free_and_nullify(cb_struct->title); - free_and_nullify(filename); +static int bilibili_merge(callback_struct_t *cb_struct) { + LOG("Bilibili", "Using ffmpeg to merge downloaded files ..."); + merge_av(cb_struct->videofn, cb_struct->audiofn, cb_struct->filename); + free_and_nullify(cb_struct->videofn); + free_and_nullify(cb_struct->audiofn); + free_and_nullify(cb_struct->filename); + append_log("All done!"); return 0; } @@ -407,27 +408,26 @@ static int download(Bilibili_options *bilibili_options) { const char *quality_desc = id2quality_desc(video->id); static callback_struct_t callback_struct = {0}; - callback_struct.ext = mimeType2ext(video->mimeType); - callback_struct.title = - malloc(strlen(bilibili_options->title) + strlen(quality_desc) + 3); - sprintf(callback_struct.title, "%s[%s]", bilibili_options->title, - quality_desc); - DEBUG_PRINT("Outside the callback, title: %s ext: %s\n", - callback_struct.title, callback_struct.ext); + const char *ext = mimeType2ext(video->mimeType); + callback_struct.filename = malloc(strlen(bilibili_options->title) + + strlen(quality_desc) + strlen(ext) + 1); + sprintf(callback_struct.filename, "%s[%s].%s", bilibili_options->title, + quality_desc, ext); { - char fn[USHRT_MAX]; - sprintf(fn, "%s[%s]-%s.%s", bilibili_options->title, quality_desc, "video", - callback_struct.ext); - add_url(video->baseUrl, NULL, fn, "https://www.bilibili.com", NULL, NULL); + callback_struct.videofn = malloc(strlen(callback_struct.filename) + 6); + sprintf(callback_struct.videofn, "%s[%s]-%s.%s", bilibili_options->title, + quality_desc, "video", ext); + add_url(video->baseUrl, NULL, callback_struct.videofn, + "https://www.bilibili.com", NULL, NULL); } { - char fn[USHRT_MAX]; - sprintf(fn, "%s[%s]-%s.%s", bilibili_options->title, quality_desc, "audio", - mimeType2ext(audio->mimeType)); - add_url(audio->baseUrl, NULL, fn, "https://www.bilibili.com", &ffmpeg_merge, - &callback_struct); + callback_struct.audiofn = malloc(strlen(callback_struct.filename) + 6); + sprintf(callback_struct.audiofn, "%s[%s]-%s.%s", bilibili_options->title, + quality_desc, "audio", mimeType2ext(audio->mimeType)); + add_url(audio->baseUrl, NULL, callback_struct.audiofn, + "https://www.bilibili.com", &bilibili_merge, &callback_struct); } free_and_nullify(resp); dash_cleanup(&dash); |