我正在使用FFmpeg进行一些Haskell项目的开发。我需要批量从一个包含MP4文件的媒体文件夹中创建截图。我已经获取了代码并在Unix终端上使用它。它可以工作,但是如何使其成为一个可在Haskell中通过system "xxxx"执行的单行代码呢?
如果不使用多个system“xx”...
我尝试了:
但是它会报错:
如果不使用多个system“xx”...
#/bin/sh
for i in $(ls *.mp4)
do
ffmpeg -i $i -vframes 7 -y -ss 10 -s 150x150 -an -sameq -f image2 -r 1/5 $i%1d.jpg
done
我尝试了:
import System.Cmd
function = do{system "#/bin/sh";
system "for i in $(ls *.mp4)";
system "do";
system "ffmpeg -i $i -vframes 7 -y -ss 10 -s 150x150 -an -sameq -f image2 -r 1/5 $i%1d.jpg";
system "done";}
但是它会报错:
-vframes: No such file or directory
/bin/sh: Syntax error: "done" unexpected
#!/bin/sh
作为shebang,正如另一个回答者指出的那样。 - wildplasserfor i in *.mp4
比for i in $(ls *.mp4)
更有效率。并且在那些/bin/sh
不是指向/bin/bash
的系统中也可以运行($(command)
是 Bash 特有的)。 - Keith Thompson