将ffmpeg应用于许多文件 [英] apply ffmpeg to many files

查看:140
本文介绍了将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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆