Another way would be :
for file in $(find . -name "*mp4")
do
ffmpeg -i $file -vn -acodec copy [other parameters if required] ${file%%.mp4}.aac
done
EDIT:
I have no idea why I might have thought of such a loop, when the simpler one suffices:
for file in *.mp4
do
ffmpeg -i $file -vn -acodec copy [other parameters if required] ${file%.mp4}.aac
done
However if a recursive find
is really required, based on the comment by Scott I decided to improve the last answer. I use a while loop with input from find through process substitution:
while IFS= read -r file
do
ffmpeg -nostdin -i $file -vn -acodec copy [other parameters if required] ${file%.mp4}.aac
done< <(find . -name "*.mp4")
Note that ffmpeg requires -nostdin
in a while loop. exec and xargs in general may be more efficient than while loops, but since this instance would have ffmpeg do the processing, I don't feel there is a significant performance hit.