如何獲取視頻關鍵幀????python中

嗨,經過我半天的折騰,結果沒折騰出來。ffmpeg命令在此,可直接在cmd下執行

ffmpeg -i baby.mp4 -vf select='eq(pict_type\,I)' -vsync 2 -f image2 keyframe-%02d.jpeg

但我的目的不限於此啊,我要放在python腳本中執行啊,結果調用subprocess及shlex出錯,主要原因是上面命令中-f的參數有空格

這讓我矇蔽,它爲啥一定要倆參數??

另外有其他搜索結果說pyav庫可以直接得到,然而現實是,這個玩意需要安裝VS,臥槽,這就沒法玩了,依賴庫多的註定不能流行。

Collecting av
  Downloading av-7.0.1.tar.gz (2.3 MB)
     |████████████████████████████████| 2.3 MB 177 kB/s
Building wheels for collected packages: av
  Building wheel for av (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: 'd:\python36\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\ggca1\\AppData\\Local\\Temp\\pip-install-f8ye098_\\av\\setup.py'"'"'; __file__='"'"'C:\\Users\\ggca1\\AppData\\Local\\Temp\\pip-install-f8ye098_\\av\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d 'C:\Users\ggca1\AppData\Local\Temp\pip-wheel-0ryqelsx'
       cwd: C:\Users\ggca1\AppData\Local\Temp\pip-install-f8ye098_\av\
  Complete output (32 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build\lib.win-amd64-3.6
  creating build\lib.win-amd64-3.6\av
  copying av\datasets.py -> build\lib.win-amd64-3.6\av
  copying av\deprecation.py -> build\lib.win-amd64-3.6\av
  copying av\__init__.py -> build\lib.win-amd64-3.6\av
  copying av\__main__.py -> build\lib.win-amd64-3.6\av
  creating build\lib.win-amd64-3.6\av\audio
  copying av\audio\__init__.py -> build\lib.win-amd64-3.6\av\audio
  creating build\lib.win-amd64-3.6\av\codec
  copying av\codec\__init__.py -> build\lib.win-amd64-3.6\av\codec
  creating build\lib.win-amd64-3.6\av\container
  copying av\container\__init__.py -> build\lib.win-amd64-3.6\av\container
  creating build\lib.win-amd64-3.6\av\data
  copying av\data\__init__.py -> build\lib.win-amd64-3.6\av\data
  creating build\lib.win-amd64-3.6\av\filter
  copying av\filter\__init__.py -> build\lib.win-amd64-3.6\av\filter
  creating build\lib.win-amd64-3.6\av\sidedata
  copying av\sidedata\__init__.py -> build\lib.win-amd64-3.6\av\sidedata
  creating build\lib.win-amd64-3.6\av\subtitles
  copying av\subtitles\__init__.py -> build\lib.win-amd64-3.6\av\subtitles
  creating build\lib.win-amd64-3.6\av\video
  copying av\video\__init__.py -> build\lib.win-amd64-3.6\av\video
  running build_ext
  running config
  writing build\temp.win-amd64-3.6\Release\include\pyav\config.h
  running cythonize
  building 'av.buffer' extension
  error: Microsoft Visual C++ 14.0 is required. Get it with "Build Tools for Visual Studio": https://visualstudio.microsoft.com/downloads/
  ----------------------------------------
  ERROR: Failed building wheel for av

我也在服務器試了,也是不行,總有一樣的坑在。

Collecting av
  Downloading av-7.0.1.tar.gz (2.3 MB)
     |████████████████████████████████| 2.3 MB 177 kB/s
Building wheels for collected packages: av
  Building wheel for av (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: 'd:\python36\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\ggca1\\AppData\\Local\\Temp\\pip-install-f8ye098_\\av\\setup.py'"'"'; __file__='"'"'C:\\Users\\ggca1\\AppData\\Local\\Temp\\pip-install-f8ye098_\\av\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d 'C:\Users\ggca1\AppData\Local\Temp\pip-wheel-0ryqelsx'
       cwd: C:\Users\ggca1\AppData\Local\Temp\pip-install-f8ye098_\av\
  Complete output (32 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build\lib.win-amd64-3.6
  creating build\lib.win-amd64-3.6\av
  copying av\datasets.py -> build\lib.win-amd64-3.6\av
  copying av\deprecation.py -> build\lib.win-amd64-3.6\av
  copying av\__init__.py -> build\lib.win-amd64-3.6\av
  copying av\__main__.py -> build\lib.win-amd64-3.6\av
  creating build\lib.win-amd64-3.6\av\audio
  copying av\audio\__init__.py -> build\lib.win-amd64-3.6\av\audio
  creating build\lib.win-amd64-3.6\av\codec
  copying av\codec\__init__.py -> build\lib.win-amd64-3.6\av\codec
  creating build\lib.win-amd64-3.6\av\container
  copying av\container\__init__.py -> build\lib.win-amd64-3.6\av\container
  creating build\lib.win-amd64-3.6\av\data
  copying av\data\__init__.py -> build\lib.win-amd64-3.6\av\data
  creating build\lib.win-amd64-3.6\av\filter
  copying av\filter\__init__.py -> build\lib.win-amd64-3.6\av\filter
  creating build\lib.win-amd64-3.6\av\sidedata
  copying av\sidedata\__init__.py -> build\lib.win-amd64-3.6\av\sidedata
  creating build\lib.win-amd64-3.6\av\subtitles
  copying av\subtitles\__init__.py -> build\lib.win-amd64-3.6\av\subtitles
  creating build\lib.win-amd64-3.6\av\video
  copying av\video\__init__.py -> build\lib.win-amd64-3.6\av\video
  running build_ext
  running config
  writing build\temp.win-amd64-3.6\Release\include\pyav\config.h
  running cythonize
  building 'av.buffer' extension
  error: Microsoft Visual C++ 14.0 is required. Get it with "Build Tools for Visual Studio": https://visualstudio.microsoft.com/downloads/
  ----------------------------------------
  ERROR: Failed building wheel for av

有的說用conda安裝,抱歉我的conda安裝後它自己就死了,現在都無法解決,而且這個問題誰都沒法解決,之前死磕tf安裝的時候有。

Traceback (most recent call last):
  File "/home/./anaconda3/bin/conda", line 7, in <module>
    from conda.cli import main
ModuleNotFoundError: No module named 'conda'

好好,我們暫且假設上面能運行,能夠提取到幀或者index,然後呢?再運行其他庫讀取一遍幀/視頻,這不是浪費時間嗎??

這不是扯淡嗎??都不能一次性解決嗎?有,pyav庫,然而這個庫沒法玩,等於沒說。真是夠了。

考慮到也有一個其他庫,不如問問,issue is here,

有沒有大佬給點建議或者好的解決方法啊,多謝。

 

另外有相關問題可以加入QQ羣討論,不設微信羣

QQ羣:868373192 

語音圖像視頻深度-學習羣

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章