Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 将csv解析为变量并在循环中执行ffmpeg命令_Bash_Loops_Csv - Fatal编程技术网

Bash 将csv解析为变量并在循环中执行ffmpeg命令

Bash 将csv解析为变量并在循环中执行ffmpeg命令,bash,loops,csv,Bash,Loops,Csv,我正在尝试执行批处理操作,使用bash脚本从多个视频文件中提取特定帧并另存为PNG。我希望通过在bash脚本中使用ffmpeg来实现这一点,并辅之以csv文件,该文件包含输入视频的名称、要从输入视频中提取的特定帧号以及PNG文件的输出名称 视频文件和csv文件将全部放在同一个文件夹中。如果需要,脚本也可以放在那里 我的csv-称为“select.csv”-当前采用以下格式(输入、输出、帧): 我当前的脚本名为“frame.sh”,采用以下形式: #!/bin/bash OLDIFS=$IFS I

我正在尝试执行批处理操作,使用bash脚本从多个视频文件中提取特定帧并另存为PNG。我希望通过在bash脚本中使用ffmpeg来实现这一点,并辅之以csv文件,该文件包含输入视频的名称、要从输入视频中提取的特定帧号以及PNG文件的输出名称

视频文件和csv文件将全部放在同一个文件夹中。如果需要,脚本也可以放在那里

我的csv-称为“select.csv”-当前采用以下格式(输入、输出、帧):

我当前的脚本名为“frame.sh”,采用以下形式:

#!/bin/bash
OLDIFS=$IFS
IFS=“,”
SDIR=/Users/myuser/Desktop/f-input/

cd $SDIR;
while read input output frame
do
   echo "$input"
   echo "$output"
   echo "$frame"
   input1=$input
   output1=$output
   frame1=$frame
   ffmpeg -i "$input1" -vf select='eq(n\,'"$frame1"')' -vsync 0 
"$output1".png
done < $1
IFS=$OLDIFS
感谢您的任何建议


非常感谢

IFS=“,”
替换为
IFS=“,”

谢谢-我没有注意到语音标记。但是,有了这个更改,我仍然无法循环遍历每一行,只能解析csv中的第一行。还有其他想法吗?请附加赛勒斯-谢谢你的回答。完成这项任务并没有结束。对于那些想要理解的人——如果我理解正确的话——添加同意dbl报价解决方案。你已经上路了,继续走!。检查您的代码以加快开发周期。祝你好运
#!/bin/bash
OLDIFS=$IFS
IFS=“,”
SDIR=/Users/myuser/Desktop/f-input/

cd $SDIR;
while read input output frame
do
   echo "$input"
   echo "$output"
   echo "$frame"
   input1=$input
   output1=$output
   frame1=$frame
   ffmpeg -i "$input1" -vf select='eq(n\,'"$frame1"')' -vsync 0 
"$output1".png
done < $1
IFS=$OLDIFS
#!/bin/bash
OLDIFS=$IFS
IFS=“,”
SDIR=/Users/myuser/Desktop/f-input/

cd $SDIR;
while read input output frame
do
   ffmpeg -i "$input" -vf select='eq(n\,'"$frame"')' -vsync 0 "$output".png
done < $1
IFS=$OLDIFS