上一篇文章自定义AVA数据集(一)_退即是进的博客-CSDN博客 ffmpeg已按每30秒长度剪辑视频,所需视频准备完毕,接下来需要分割视频 。在对视频进行切割前需要先下载git软件。因为我们切割视频所使用的是.sh文件,在Ubuntu上可以直接用bash xxx.sh
可以直接运行,但是若在window上实现,就需要借助git。
1 安装 git
安装过程参考Git 详细安装教程
2 分割视频
切割视频代码文件 cut_videos_frames.sh,代码如下(每个视频文件每秒30帧的图片(用于slowfast训练)):
#切割图片,每秒抽30帧
IN_DATA_DIR="D:/data/mydata"
OUT_DATA_DIR="D:/data/output"
if [[ ! -d "${OUT_DATA_DIR}" ]]; then
echo "${OUT_DATA_DIR} doesn't exist. Creating it.";
mkdir -p ${OUT_DATA_DIR}
fi
for video in $(ls -A1 -U ${IN_DATA_DIR}/*)
do
video_name=${video##*/}
if [[ $video_name = *".webm" ]]; then
video_name=${video_name::-5}
else
video_name=${video_name::-4}
fi
out_video_dir=${OUT_DATA_DIR}/${video_name}/
mkdir -p "${out_video_dir}"
out_name="${out_video_dir}/${video_name}_%06d.jpg"
ffmpeg -i "${video}" -r 30 -q:v 1 "${out_name}"
done
下面是(每个视频文件每秒抽1帧的图片(需要标注的图片))
#切割图片,每秒抽1帧
IN_DATA_DIR="D:/data/mydata"
OUT_DATA_DIR="D:/data/output"
if [[ ! -d "${OUT_DATA_DIR}" ]]; then
echo "${OUT_DATA_DIR} doesn't exist. Creating it.";
mkdir -p ${OUT_DATA_DIR}
fi
for video in $(ls -A1 -U ${IN_DATA_DIR}/*)
do
video_name=${video##*/}
if [[ $video_name = *".webm" ]]; then
video_name=${video_name::-5}
else
video_name=${video_name::-4}
fi
out_video_dir=${OUT_DATA_DIR}/${video_name}/
mkdir -p "${out_video_dir}"
out_name="${out_video_dir}/${video_name}_%06d.jpg"
ffmpeg -i "${video}" -r 1 -q:v 1 "${out_name}"
done
cut_videos_frames.sh 所在的目录:D:\data
3 在window中运行sh文件,进行切割视频
将上面的步骤都完成后,在window上运行.sh文件对视频进行切割,现在需要用到git。
打开git方法,法一:
进入cut_videos_frames.sh所在路径
法二:进入.sh所在的目录,在该路径中输入git bash,进入后即在该.sh所在目录的路径下 。
然后输入 sh cut_videos_frames.sh,即可将D:\data\mydata文件夹下的所有视频进行切割。视频文件命名要有顺序。
切割后D:\data\output文件夹如下:
4 Ubuntu上直接用下面的命令(进入到路径cut_videos_frames.sh中)
bash cut_videos_frames.sh