[bug] KeyframeSelection node not opening video
Describe the bug
The KeyframeSelection node helps me convert videos to frames, while adding in the needed camera metadata. However, it simply says [13:14:19.136457][fatal] Unable to open the video : /home/linuxworkstation/Programs/Meshroom-2023.3.0-linux/Meshroom-2023.3.0/C1710.mp4 when starting computation.
To Reproduce Steps to reproduce the behavior:
- Import KeyframeSelection node
- Add the correct parameters or any at all
- Hit compute
- It will say the video cannot open, even if directory and all is correct
Expected behavior I would expect it to export the frames inside the video into a specified image folder. On a footnote, maybe it would be better to support video imports directly as a convenience measure? A common use case is drag and drop camera tracking, and that would be very useful.
Desktop
- OS: Fedora Linux
- Python version: Python 3.12.1 (Not sure if relevant since this is the portable linux build)
- Qt/PySide version: I don't believe I have this installed
- Meshroom version: 2023.3.0
Hi @CounterFlow64,
Thank you for reporting the issue!
This does not happen on Windows with Meshroom 2023.3.0, so I suspect an issue with the built codecs of OpenCV for the Linux release. I'll check that out.
@cbentejac I also still have this exact same problem, it was also mentioned here but never solved: https://github.com/alicevision/Meshroom/issues/955 https://github.com/alicevision/Meshroom/issues/1215 https://github.com/alicevision/meshroom/issues/1291
Have you made any progress? I run Ubuntu 22.04, I even installed the libopencv-dev packages but that didnt help.
Log: (unfortunately even "trace" loglevel gives no details)
- commandLine: aliceVision_keyframeSelection --inputPaths "/tmp/FoamPlane.MP4" --sensorDbPath "/home/oliver/Downloads/Meshroom-2023.3.0-linux/Meshroom-2023.3.0/aliceVision/share/aliceVision/cameraSensors.db" --useSmartSelection True --pxDisplacement 10.0 --minNbOutFrames 10 --maxNbOutFrames 2000 --rescaledWidthSharpness 720 --rescaledWidthFlow 720 --sharpnessWindowSize 200 --flowCellSize 90 --minBlockSize 10 --renameKeyframes False --outputExtension jpg --exportScores False --exportFlowVisualisation False --flowVisualisationOnly False --skipSharpnessComputation False --skipSelection False --verboseLevel trace --outputFolder "/tmp/MeshroomCache/KeyframeSelection/2788bbbd4a7fa7683411826fc0bb52d8a16a38a9" --outputSfMDataKeyframes "/tmp/MeshroomCache/KeyframeSelection/2788bbbd4a7fa7683411826fc0bb52d8a16a38a9/keyframes.sfm" --outputSfMDataFrames "/tmp/MeshroomCache/KeyframeSelection/2788bbbd4a7fa7683411826fc0bb52d8a16a38a9/frames.sfm"
- logFile: /tmp/MeshroomCache/KeyframeSelection/2788bbbd4a7fa7683411826fc0bb52d8a16a38a9/log
ERROR:root:Error on node computation: Error on node "KeyframeSelection_1":
Log:
[2024-06-21 10:03:48.589193] [0x00007ed46e2a4000] [trace] Embedded OCIO configuration file: '/home/oliver/Downloads/Meshroom-2023.3.0-linux/Meshroom-2023.3.0/aliceVision/share/aliceVision/config.ocio' found.
Program called with the following parameters:
* brands = = [] (default)
* csvFilename = "scores.csv" (default)
* exportFlowVisualisation = 0
* exportScores = 0
* exportSelectedFrames = 0 (default)
* flowCellSize = 90
* flowVisualisationOnly = 0
* inputPaths = = [/tmp/FoamPlane.MP4]
* maskPaths = = [] (default)
* maxCoresAvailable = Unknown Type "j" (default)
* maxFrameStep = Unknown Type "j" (default)
* maxMemoryAvailable = 18446744073709551615 (default)
* maxNbOutFrames = Unknown Type "j"
* minBlockSize = 10
* minFrameStep = Unknown Type "j" (default)
* minNbOutFrames = Unknown Type "j"
* mmFocals = Unknown Type "St6vectorIfSaIfEE" (default)
* models = = [] (default)
* outputExtension = "jpg"
* outputFolder = "/tmp/MeshroomCache/KeyframeSelection/2788bbbd4a7fa7683411826fc0bb52d8a16a38a9"
* outputSfMDataFrames = "/tmp/MeshroomCache/KeyframeSelection/2788bbbd4a7fa7683411826fc0bb52d8a16a38a9/frames.sfm"
* outputSfMDataKeyframes = "/tmp/MeshroomCache/KeyframeSelection/2788bbbd4a7fa7683411826fc0bb52d8a16a38a9/keyframes.sfm"
* pxDisplacement = 10
* renameKeyframes = 0
* rescaledWidthFlow = 720
* rescaledWidthSharpness = 720
* sensorDbPath = "/home/oliver/Downloads/Meshroom-2023.3.0-linux/Meshroom-2023.3.0/aliceVision/share/aliceVision/cameraSensors.db"
* sharpnessWindowSize = 200
* skipSelection = 0
* skipSharpnessComputation = 0
* storageDataType = Unknown Type "N11aliceVision5image16EStorageDataTypeE" (default)
* useSmartSelection = 1
* verboseLevel = "trace"
Hardware :
Detected core count : 4
OpenMP will use 4 cores
Detected available memory : 13602 Mo
[10:03:48.590637][info] Single camera
[10:03:48.590678][info] Camera: /tmp/FoamPlane.MP4
- brand:
- model:
- focal (mm): 0
[10:03:48.599303][warning] Unable to open the video : /tmp/FoamPlane.MP4
[10:03:48.599664][fatal] Unable to open the video : /tmp/FoamPlane.MP4
I've looked into this further - it appears that the opencv created in AliceVisionDependencies does not have FFMPEG support installed, which is what is required for reading videos. I suspect it should just need adding ffmpeg libraries to the travis.yml; I'll create an issue there.
Ah, AlicevisionDependencies looks like it isn't used any more. The docker build scripts look like they ought to work. I can't find the script that makes the downloads for the main website though - can anyone point me in the right direction here?