要么是我犯了一个非常愚蠢的错误,要么是我在这里偶然发现了一个非常奇怪的错误。我在 bash 中,我想使用 ffmpeg 将 .flac 转换为 .mp3。运行
ffmpeg -i 3\ -\ Thirty\ Seconds\ to\ Mars\ -\ Rescue\ Me.flac 3\ -\ Thirty\ Seconds\ to\ Mars\ -\ Rescue\ Me.mp3
结果是3 - Thirty Seconds to Mars - Rescue Me.flac: No such file or directory
,尽管stat
和ls
都显示该文件对当前用户具有读取权限,但我甚至可以使用来查看其内容less
。
我怀疑文件名有问题,所以我将文件重命名为asdf.flac
,这有效,但ffmpeg -i asdf.flac asdf.mp3
仍然给我asdf.flac: No such file or directory
。
为了排除权限问题,我已经chmod -R 777 .
使目录和所有文件都是全世界可读和可写的,但仍然没有机会。
尽管该文件显然存在,但有什么原因可能导致 ffmpeg 找不到它?
答案1
@kamil-maciorowski 为我指明了正确的方向。
lukas@Server:~$ type ffmpeg
ffmpeg ist /usr/local/bin/ffmpeg
这让我想起了一个firejail
设置。
lukas@Server:~$ file /usr/local/bin/ffmpeg
/usr/local/bin/ffmpeg: symbolic link to /usr/bin/firejail
确认了这一点。所以显然ffmpeg
是在监狱中运行。我不知道我firejail
在那台机器上设置了什么,但/usr/bin/ffmpeg
直接运行是有效的。所以监狱有一个限制,即不将输入文件列入白名单。