alicevision / Meshroom

3D Reconstruction Software
http://alicevision.org
Other
11.09k stars 1.08k forks source link

[bug] KeyframeSelection node not opening video #2285

Open CounterFlow64 opened 9 months ago

CounterFlow64 commented 9 months ago

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:

  1. Import KeyframeSelection node
  2. Add the correct parameters or any at all
  3. Hit compute
  4. 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

cbentejac commented 9 months ago

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.

arnolde commented 3 months ago

@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
furbrain commented 1 month ago

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.

furbrain commented 1 month ago

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?