将ffmpeg应用于许多文件 [英] apply ffmpeg to many files
本文介绍了将ffmpeg应用于许多文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我写了简单的脚本:
#!/ bin / bash
find。 -name* .m4a|同时读取文件名;
do
new_filename = $(echo$ filename| seds / ^ \(。* \)m4a $ / \1flac / g);
如果[! -f$ new_filename]
然后
#ffmpeg -i$ filename-acodec flac$ new_filename> / dev / null 2>& 1;
#wait $ !;
echo$ filename;
echo$ new_filename;
fi
done
它输出正确的结果:
./ Equalibrium,ALAC [GER] viking.folk / 2003 - Demo 2003,ALAC / 04 - Met.m4a
./Equilibrium, ALAC [GER] viking.folk / 2003 - Demo 2003,ALAC / 04 - Met.flac
./Equilibrium,ALAC [GER] viking.folk / 2003 - Demo 2003,ALAC / 02 - Nach Dem Winter.m4a
./Equilibrium,ALAC [GER] viking.folk / 2003 - Demo 2003,ALAC / 02 - Nach Dem Winter.flac
如果取消注释ffmpeg并等待:
./平衡,ALAC [GER] viking.folk / 2003 - Demo 2003,ALAC / 04 - Met.m4a
./Equilibrium,ALAC [GER] viking.folk / 2003 - Demo 2003,ALAC / 04 - Met.flac
uilibrium,ALAC [GER ] viking.folk / 2003 - Demo 2003,ALAC / 02 - Nach Dem Winter.m4a
uilibrium,ALAC [GER] viking.folk / 2003 - Demo 2003,ALAC / 02 - Nach Dem Winter.flac
没有flacs已经完成!
PS
#!/ bin / bash
find。 -name* .m4a|同时读取文件名;
do
new_filename = $(echo$ filename| seds / ^ \(。* \)m4a $ / \1flac / g);
如果[! -f$ new_filename]
然后
ffmpeg -i$ filename-acodec flac$ new_filename;
echo$ filename;
echo$ new_filename;
fi
睡眠5;
done
1)编码开始但突然停止,没有错误消息
2)编码无法启动,因为uilibrium而不是./Equilibrium
3)= 1) / p>
4)= 2)
...
last)正确
解决方案
突然发现解决方案:
#!/ bin / bash
find。 -name* .m4a|同时读取文件名;
do
new_filename = $(echo$ filename| seds / ^ \(。* \)m4a $ / \1flac / g);
如果[! -f$ new_filename]
然后
ffmpeg -i$ filename-acodec flac$ new_filename&
wait $ !;
fi
done
我不知道为什么,但如果启动过程在后台(&),而不是等待(等待$!)都正常工作!
I have written simple script:
#!/bin/bash
find . -name "*.m4a" | while read filename;
do
new_filename=$(echo "$filename" | sed "s/^\(.*\)m4a$/\1flac/g");
if [ ! -f "$new_filename" ]
then
#ffmpeg -i "$filename" -acodec flac "$new_filename" > /dev/null 2>&1;
#wait $!;
echo "$filename";
echo "$new_filename";
fi
done
it outputs correct result:
./Equilibrium, ALAC [GER] viking.folk/2003 - Demo 2003, ALAC/04 - Met.m4a
./Equilibrium, ALAC [GER] viking.folk/2003 - Demo 2003, ALAC/04 - Met.flac
./Equilibrium, ALAC [GER] viking.folk/2003 - Demo 2003, ALAC/02 - Nach Dem Winter.m4a
./Equilibrium, ALAC [GER] viking.folk/2003 - Demo 2003, ALAC/02 - Nach Dem Winter.flac
if uncomment ffmpeg and wait:
./Equilibrium, ALAC [GER] viking.folk/2003 - Demo 2003, ALAC/04 - Met.m4a
./Equilibrium, ALAC [GER] viking.folk/2003 - Demo 2003, ALAC/04 - Met.flac
uilibrium, ALAC [GER] viking.folk/2003 - Demo 2003, ALAC/02 - Nach Dem Winter.m4a
uilibrium, ALAC [GER] viking.folk/2003 - Demo 2003, ALAC/02 - Nach Dem Winter.flac
And no flacs has been done!
PS
#!/bin/bash
find . -name "*.m4a" | while read filename;
do
new_filename=$(echo "$filename" | sed "s/^\(.*\)m4a$/\1flac/g");
if [ ! -f "$new_filename" ]
then
ffmpeg -i "$filename" -acodec flac "$new_filename";
echo "$filename";
echo "$new_filename";
fi
sleep 5;
done
1) encode start but suddenly stop with no error messages
2) encode couldn't start because of "uilibrium" instead of "./Equilibrium"
3) = 1)
4) = 2)
...
last) correctly
解决方案
suddenly found a solution:
#!/bin/bash
find . -name "*.m4a" | while read filename;
do
new_filename=$(echo "$filename" | sed "s/^\(.*\)m4a$/\1flac/g");
if [ ! -f "$new_filename" ]
then
ffmpeg -i "$filename" -acodec flac "$new_filename" &
wait $!;
fi
done
I don't know why, but if start process in background (&) and than wait for it (wait $!) all works correctly!
这篇关于将ffmpeg应用于许多文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文