#!/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/"