需求
视频下载下来后,需要对每个视频提取12个关键帧,提取每个视频的音频并等分为6段,获取每个视频的text。
三者分别保存在以id命名的文件夹下以images/audios/texts命名的文件夹下。
准备工作
扫描存放所有视频的文件夹,将所有视频名存储为list_videos_name并写入文件list_videos.txt
get_videos_list.py
1 | # 获取要提取关键帧的所有视频的名字存储在list_videos_name并写入文件list_videos_name.txt |
为了获取视频text,须对之前处理获得的final_texts.txt读取获得dict_id_text并存储为dict_id_text.txt
get_dict_id_text.py
1 | # 读取final_texts.txt,生成字典dict_id_text |
细节
- 因为要处理的数据量较大,要考虑到程序可随时终止再继续运行。故加入四个日志文件
- extract_ok.txt:记录所有处理成功的视频
- extract_ok_this_time.txt:记录每次任务处理成功的视频
- video_error.txt:记录所有处理失败的视频
- video_error_this_time.txt:记录每次任务处理失败的视频
- 在每次任务开始处理视频前将日志文件整合并将处理成功的视频从list_videos中删除即可
- 视频帧提取用的cv2包,视频的音频提取和音频的分割用的第三方工具ffmpeg
- 音频分割后发现每段音频间有重叠部分,故应采用精准分割
1
ffmpeg -y -vn -ss start_time -t 持续时间(00:00:00.900) -i 原文件路径 -acodec copy 生成文件路径
get_final_dataset.py
1 | # 配置video_path、mkpath_images和mkpath_audios内容 |
小结
到目前为止,读取所有的视频并保存其帧、音频、文本数据。
数据集与代码,发布在github.