PabloMK7 / citra

A Nintendo 3DS Emulator
GNU General Public License v2.0
3.74k stars 636 forks source link

Some ffmpeg DLLs aren't included in the windows release? (avfilter-9.dll + postproc-57.dll) #274

Open DimitriPilot3 opened 1 month ago

DimitriPilot3 commented 1 month ago

Issue

Affected Build(s)

r608383e (msvc and msys2)

Description of the issue

The release builds provided for citra-windows-msvc and citra-windows-msys2 appear to be missing some shared DLLs that are needed for the video dumping feature:

Reproduction Steps

  1. Download the affected build(s) from the release page
  2. Run citra-qt
  3. Menu > Tools > Dump video

Expected: A dialog appears, you can decide the format, video, and audio encode options

Actual: FFmpeg could not be loaded

Log file

[2161.556650] Common common/dynamic_library/ffmpeg.cpp:LoadAVUtil:132: Could not dynamically load libavutil: The specified module cannot be found.

(If avfilter-9.dll exists but postproc-57.dll is missing, the log output is the same.)

System configuration

OS: Windows 10 22H2

Workaround

  1. Download ffmpeg 6 shared libraries from gyan.dev (6.1.1) or BtbN (latest 6.1)
  2. Extract the bin directory somewhere
  3. Open Citra, Menu > Tools > Dump video. Select the bin directory when prompted. If it failed to install (likely because it can't overwrite DLLs that are in use by Citra), close Citra, and copy all .dll files from the bin directory into the Citra directory, overwriting existing files.
  4. Open Citra, Menu > Tools > Dump video
  5. ???
  6. Profit?

After doing this, it seems to load and record successfully ~but not everything works. The best I got was an output file that only contained audio but no video.~ (EDIT: that was with Vulkan—OpenGL works fine!) but occasionally I get a deadlock when emulation stops.

rtiangha commented 1 month ago

Are you using Vulkan? The video dumping only seems to work with OpenGL (unless I'm doing something wrong); Vulkan gets you audio but a black screen.

DimitriPilot3 commented 1 month ago

Oh, you're right! I was using Vulkan and only got audio, but with OpenGL it records audio and video successfully.