48 lines
1.1 KiB
Bash
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/"
|