skvideo + ffmpeg:无法设置二进制文件的路径
skvideo + ffmpeg: Can't set path to binaries
出于某种原因,设置 ffmpeg 二进制文件的路径并不完全有效。
虽然它看起来像它应该的那样工作:
import skvideo.io
import skvideo.datasets
ffmpeg_path = "C:/Users/xyz/ffmpeg-4.3.1-win64-static/bin/"
skvideo.setFFmpegPath(ffmpeg_path)
print("FFmpeg path: {}".format(skvideo.getFFmpegPath()))
print("FFmpeg version: {}".format(skvideo.getFFmpegVersion()))
>>> FFmpeg path: C:/Users/xyz/ffmpeg-4.3.1-win64-static/bin/
>>> FFmpeg version: b'4'.b'3'.b'1'
运行 这些行紧跟在没有:
videodata = skvideo.io.vread(skvideo.datasets.bigbuckbunny())
print(videodata.shape)
[...]
>>> File "C:\Users\xyz\Anaconda3\envs\cv_env\lib\site-packages\skvideo\io\io.py", line 133, in vread
assert _HAS_FFMPEG, "Cannot find installation of real FFmpeg (which comes with ffprobe)."
>>> AssertionError: Cannot find installation of real FFmpeg (which comes with ffprobe).
想不通,为什么设置不正确...
感谢官方scikit-video repo中的一些隐藏评论,我想通了。
显然你必须设置路径然后然后再次导入包:
import skvideo
ffmpeg_path = "C:/Users/xyz/ffmpeg-4.3.1-win64-static/bin/"
skvideo.setFFmpegPath(ffmpeg_path)
import skvideo.datasets
import skvideo.io
print("FFmpeg path: {}".format(skvideo.getFFmpegPath()))
print("FFmpeg version: {}".format(skvideo.getFFmpegVersion()))
videodata = skvideo.io.vread(skvideo.datasets.bigbuckbunny())
print(videodata.shape)
>>> FFmpeg path: C:/Users/xyz/ffmpeg-4.3.1-win64-static/bin/
>>> FFmpeg version: b'4'.b'3'.b'1'
>>> (132, 720, 1280, 3)
Ubuntu也不自带ffmpeg
。正如@fukiburi 所提到的,一旦 ffmpeg
(主要充当独立的二进制文件,无需处理 python 或 skvideo
python 包本身)使用 sudo apt-get install ffmpeg
,它在 /usr/bin/
中默认安装 ffmpeg
、ffprobe
、ffplay
等,从而解决了问题。
出于某种原因,设置 ffmpeg 二进制文件的路径并不完全有效。
虽然它看起来像它应该的那样工作:
import skvideo.io
import skvideo.datasets
ffmpeg_path = "C:/Users/xyz/ffmpeg-4.3.1-win64-static/bin/"
skvideo.setFFmpegPath(ffmpeg_path)
print("FFmpeg path: {}".format(skvideo.getFFmpegPath()))
print("FFmpeg version: {}".format(skvideo.getFFmpegVersion()))
>>> FFmpeg path: C:/Users/xyz/ffmpeg-4.3.1-win64-static/bin/
>>> FFmpeg version: b'4'.b'3'.b'1'
运行 这些行紧跟在没有:
videodata = skvideo.io.vread(skvideo.datasets.bigbuckbunny())
print(videodata.shape)
[...]
>>> File "C:\Users\xyz\Anaconda3\envs\cv_env\lib\site-packages\skvideo\io\io.py", line 133, in vread
assert _HAS_FFMPEG, "Cannot find installation of real FFmpeg (which comes with ffprobe)."
>>> AssertionError: Cannot find installation of real FFmpeg (which comes with ffprobe).
想不通,为什么设置不正确...
感谢官方scikit-video repo中的一些隐藏评论,我想通了。 显然你必须设置路径然后然后再次导入包:
import skvideo
ffmpeg_path = "C:/Users/xyz/ffmpeg-4.3.1-win64-static/bin/"
skvideo.setFFmpegPath(ffmpeg_path)
import skvideo.datasets
import skvideo.io
print("FFmpeg path: {}".format(skvideo.getFFmpegPath()))
print("FFmpeg version: {}".format(skvideo.getFFmpegVersion()))
videodata = skvideo.io.vread(skvideo.datasets.bigbuckbunny())
print(videodata.shape)
>>> FFmpeg path: C:/Users/xyz/ffmpeg-4.3.1-win64-static/bin/
>>> FFmpeg version: b'4'.b'3'.b'1'
>>> (132, 720, 1280, 3)
Ubuntu也不自带ffmpeg
。正如@fukiburi 所提到的,一旦 ffmpeg
(主要充当独立的二进制文件,无需处理 python 或 skvideo
python 包本身)使用 sudo apt-get install ffmpeg
,它在 /usr/bin/
中默认安装 ffmpeg
、ffprobe
、ffplay
等,从而解决了问题。