Wes*_*ork 5 permissions ffmpeg
这个问题是在 18.04 开始出现的,当时我尝试修复它,但没有成功。我最近在新硬件上升级到 21.04,但问题仍然存在。
我从 Ubuntu 软件应用程序安装了 ffmpeg 4.3.1 我还安装了 Ubuntu 受限附加功能 下面是失败的命令示例。但即使是之前有效的 BASH 脚本也会失败并出现相同的错误。
~$ ffmpeg -i /mnt/Data/Videos/192.168.1.2_Street_main_20210522141323_141716-5fnd662.avi -ss 1 -t 95 /mnt/Data/Videos/192.168.1.2_Street_main_20210522141323_141716-5fnd662.mp4
/usr/share/libdrm/amdgpu.ids: No such file or directory
ffmpeg version n4.3.1 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
configuration: --prefix= --prefix=/usr --disable-debug --disable-doc --disable-static --enable-cuda --enable-cuda-sdk --enable-cuvid --enable-libdrm --enable-ffplay --enable-gnutls --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfontconfig --enable-libfreetype --enable-libmp3lame --enable-libnpp --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopus --enable-libpulse --enable-sdl2 --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libv4l2 --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxvid --enable-nonfree --enable-nvenc --enable-omx --enable-openal --enable-opencl --enable-runtime-cpudetect --enable-shared --enable-vaapi --enable-vdpau --enable-version3 --enable-xlib
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
libpostproc 55. 7.100 / 55. 7.100
/mnt/Data/Videos/192.168.1.2_Street_main_20210522141323_141716-5fnd662.avi: **Permission denied**
Run Code Online (Sandbox Code Playgroud)
如果文件权限看起来正常,但运行 ffmpeg 时仍然遇到权限被拒绝的情况,您还应该通过执行以下命令来检查系统上 ffmpeg 的安装位置:
which ffmpeg
Run Code Online (Sandbox Code Playgroud)
如果你看到
/snap/bin/ffmpeg
Run Code Online (Sandbox Code Playgroud)
这意味着 ffmpeg 是使用 snap 包管理器安装的,这可能会导致权限被拒绝错误。
如果是这种情况,您可以通过运行(请参阅链接)授予 ffmpeg 正确的快照资源权限来纠正这种情况:
sudo snap connect ffmpeg:removable-media
Run Code Online (Sandbox Code Playgroud)
注意:这是由于snap 包管理器的安全功能造成的。
对于那些不想使用 snap 的人来说,另一个解决方法是使用 apt 包管理器安装 ffmpeg:
sudo apt install ffmpeg
Run Code Online (Sandbox Code Playgroud)
并确保您运行由 apt 软件包管理器安装的 ffmpeg((apt 将安装到 /usr/bin/ 中)而不是由 snap 安装的 ffmpeg(snap 安装到 /snap/bin 中),即通过执行:
/usr/bin/ffmpeg -i input.avi output.mp3
Run Code Online (Sandbox Code Playgroud)
如果您选择使用 apt 包管理器安装和使用 ffmpeg,您可能还想删除通过 snap 安装的 ffmpeg:
sudo snap remove ffmpeg
Run Code Online (Sandbox Code Playgroud)
这样您以后就不会对系统上安装的两个 ffmpeg 感到困惑。
首先,运行以下命令来修复找不到文件的错误:
sudo apt update
sudo apt install libdrm-common
Run Code Online (Sandbox Code Playgroud)
每当出现文件未找到错误时,您可以尝试apt-file找到提供所需文件的包。
sudo apt update
sudo apt install apt-file
sudo apt-file update
apt-file search /usr/share/libdrm/amdgpu.ids
Run Code Online (Sandbox Code Playgroud)
可能需要一段时间,但它应该返回以下内容:
libdrm-common: /usr/share/libdrm/amdgpu.ids
Run Code Online (Sandbox Code Playgroud)
这就是我确定要安装哪个软件包的方法。
接下来,您似乎没有对安装目录的写入权限。
您可以使用写入权限重新挂载已挂载的文件系统,也可以在执行之前将.avi文件复制到用户的目录中。$HOMEffmpeg
例如,您可以将该文件复制到用户的桌面目录:
cp /mnt/Data/Videos/192.168.1.2_Street_main_20210522141323_141716-5fnd662.avi $HOME/Desktop
Run Code Online (Sandbox Code Playgroud)
然后ffmpeg从那里运行:
ffmpeg -i ~/Desktop/192.168.1.2_Street_main_20210522141323_141716-5fnd662.avi -ss 1 -t 95 ~/Desktop/192.168.1.2_Street_main_20210522141323_141716-5fnd662.mp4
Run Code Online (Sandbox Code Playgroud)
如果您仍然收到权限被拒绝错误,您可以更改文件的所有权:
sudo chown $USER:$USER ~/Desktop/192.168.1.2_Street_main_20210522141323_141716-5fnd662.avi
Run Code Online (Sandbox Code Playgroud)
然后再试一次:
ffmpeg -i ~/Desktop/192.168.1.2_Street_main_20210522141323_141716-5fnd662.avi -ss 1 -t 95 ~/Desktop/192.168.1.2_Street_main_20210522141323_141716-5fnd662.mp4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11642 次 |
| 最近记录: |