#bin/bash
INPUT_DIR="$1"
INPUT_VIDEO="$2"
OUTPUT_PATH="$3"
SOURCE="$4"
DATE="$5"
INPUT="$INPUT_DIR/sorted_result.txt"
COUNT=1
initial=00:00:00
while IFS= read -r line; do
OUT_DIR=$OUTPUT_PATH/$COUNT
mkdir "$OUT_DIR"
ffmpeg -nostdin -i $INPUT_VIDEO -vcodec h264 -vf fps=25 -ss $initial -to $line $OUT_DIR/$COUNT.avi
ffmpeg -i $OUT_DIR/$COUNT.avi -acodec pcm_s16le -ar 16000 -ac 1 $OUT_DIR/$COUNT.wav
python3.6 /home/Video_Audio_Chunks_1.py $OUT_DIR/$COUNT.wav
python /home/transcribe.py --decoder beam --cuda --source $SOURCE --date $DATE --video $OUT_DIR/$COUNT.avi --out_dir "$OUT_DIR"
COUNT=$((COUNT + 1))
echo "--------------------------------------------------"
echo $initial
echo $line
echo "--------------------------------------------------"
initial=$line
done < "$INPUT"
Это код, над которым я работаю.
Содержимое файла sorted_results.txt выглядит следующим образом:
00:6:59
00:7:55
00:8:39
00:19:17
00:27:48
00:43:27
При чтении файла он пропускает первые два символа третьей строки, т. Е. Принимает его как :8:39
, что приводит к ошибке ffmpeg, и скрипт останавливается.
Однако, когда я печатаю только переменные $ INITIAL и $ LINE, комментируя команду ffmpeg
, значения печатаются правильно, то есть так же, как содержимое файла.
Я думаю, что команда ffmpeg как-то влияет на процесс чтения файла или значение переменной. Но я не могу понять, как?
ПОЖАЛУЙСТА, ПОМОГИТЕ.