有这样的脚本:
#!/bin/bash
# $1 -- extension, like *.MP4
# $2 -- output file name
ffmpeg -f concat -i <(find . -name '$1' -printf "file '$PWD/%p'\n" | sort) -c copy $2
尝试连接 MP4 文件,出现错误:
/dev/fd/63:处理输入时发现无效数据
可能是什么问题?使用Linux Mint 18,基于Ubuntu 16.04。
PS 我发现问题是 $1 没有被替换为引号 - '$1'。现在硬编码。如何替代?
答案1
这有效 - 将扩展名移到引号外面,因为-name
标志允许这样做:
#!/bin/bash
# $1 -- extension, like MP4
# $2 -- output file name
echo Extension: $1
echo Output: $2
echo Files:
find . -name \*.$1 -printf "file '$PWD/%p'\n" | sort
ffmpeg -f concat -i <(find . -name \*.$1 -printf "file '$PWD/%p'\n" | sort) -c copy $2