raycv/tool/process/vox2_get_I_frame.sh
2020-08-28 08:15:29 +08:00

48 lines
1.1 KiB
Bash

#!/usr/bin/env bash
META_FILE="/data/VoxCeleb2/vox2_meta.csv"
VOX2_TEST_PATH="/data/VoxCeleb2/test/mp4/"
VOX2_DEV_PATH="/data/VoxCeleb2/dev/mp4/"
generate_frame() {
clip_path=$1
save_path=$3
fn="${clip_path##$2}"
fn=${fn//\//-}
ffmpeg -hide_banner -loglevel panic -threads 8 -i "$clip_path" -vf select="'eq(pict_type\,I)'" -vsync 2 -f image2 "$save_path${fn%.mp4}_%d.jpg" &>>ff.log
gnum=$(ls $save_path${fn%.mp4}_* | wc -l)
if [ $gnum -eq 0 ]; then
echo $clip_path >>"not_done.txt"
echo $clip_path ERROR
else
echo $clip_path >>"done.txt"
fi
}
iter_videos() {
idl=$1
root=$2
save_path=$3
cat "$idl" | wc -l
while read -u 10 pid; do
echo $pid
for vp in $root$pid/*/; do
num=$(ls $vp | wc -l)
if [ $num -ge 4 ]; then
echo $vp
for cp in $vp*.mp4; do
generate_frame "$cp" "$root" "$save_path"
done
fi
done
done 10<"$idl"
}
cat $META_FILE | grep f | grep dev | grep -Po "id[0-9]+" >f_dev.txt
cat $META_FILE | grep f | grep test | grep -Po "id[0-9]+" >f_test.txt
iter_videos f_dev.txt $VOX2_DEV_PATH "temp/dev/"
iter_videos f_test.txt $VOX2_TEST_PATH "temp/test/"