ggarra13 / mrv2

Professional player and review tool for vfx, animation and computer graphics.
https://mrv2.sourceforge.io
BSD 3-Clause "New" or "Revised" License
222 stars 14 forks source link

"Save Movie Error - Invalid Argument" (+Compiling MRV2 in Windows) #183

Closed Olympusmonsgames closed 8 months ago

Olympusmonsgames commented 9 months ago

Here's what I get in the output log when attempting to save a movie of a 16-bit EXR image sequence (Windows 10 | mrv2 v1.0.5 pre-compiled installer):

[save] Image info: 2048x858 RGBA_F16
[save] Output info: 2048x858 RGB_U8
ERROR: [save] E:/MyVideoFile.mp4: avcodec_open2 - Invalid argument

Am I just missing something here? Saving/Exporting movies isn't covered anywhere in the documentation. I have FFMPEG (full) installed at C:\FFMPEG\, but mrv2 seems to be using it's own ffmpeg libraries as updating FFMPEG today didn't make any difference here.

The ProRes profiles seem to work fine, as does choosing None for profile, but None gives me an H.263 video, which isn't supported as embeddable on most comms platforms (Slack, Discord etc). As ProRes also isn't an embeddable codec on these platforms, I currently have no way to use mrv2 to process render dailies (which I would love to be able to do instead of using Adobe Media Encoder.

Side Note: Where are the FFMPEG profiles saved? Can I edit/add to that list myself using the pre-compiled install of mrv2 or do I need to build from src?

ggarra13 commented 9 months ago

Am I just missing something here? Saving/Exporting movies isn't covered anywhere in the documentation.

Sadly, you are not missing anything. I'll make sure to add a section to the documentation.

The ProRes profiles seem to work fine, as does choosing None for profile

The H264 codec is, unfortunately, only supported if you build mrv2 as GPL, as, otherwise, it requires a license from VideoLan. mrv2 is, by default, a BSD application, not a GPL one. If you want to build your own version of mrv2 as GPL, look for how to do it in the main page of https://github.com/ggarra13/mrv2.

Side Note: Where are the FFMPEG profiles saved? Can I edit/add to that list myself using the pre-compiled install of mrv2 or do I need to build from src?

They are stored in the mrv2 and tlRender source code. You cannot edit them easily.

Olympusmonsgames commented 8 months ago

It's a bit unclear to me how to compile mrv2 on Windows. I've modified the vcvars_win64.bat file calls with my VS Community (2022) and msys2 dirs. I don't need to set an explicit Win SDK version, I already have a few SDK versions installed as VS components.

Do I run the bat file? Or the runme.sh file (if so, do I run that in msys2)? I like the idea of compiling the NSIS installer, as I'd like to distribute the build to multiple of my machines. How do I incorporate that into the build? I've already downloaded fresh copies of msys2, NSIS, and CMake

Sorry if these are newbie questions, I have experience compiling/debugging C++ & Python scripts, but no experience packaging windows applications/installers.

Thanks!

ggarra13 commented 8 months ago

It's a bit unclear to me how to compile mrv2 on Windows.

I'll try to make the instructions clearer.

Do I run the bat file? Or the runme.sh file (if so, do I run that in msys2)? I like the idea of compiling the NSIS installer, as I'd like to distribute the build to multiple of my machines. How do I incorporate that into the build? I've already downloaded fresh copies of msys2, NSIS, and CMake

First, you need to run the .bat file from its installed location (or make it as I do a shortcut in the Desktop). The .bat file should open a new MSYS2 terminal after saying a quick welcome message from the MSVC compiler. From then on, you run all MSYS2 commands. From the MSYS2 terminal it opens, you can verify that you can see the MSVC compiler if you do:

$ which cl.exe
/C/Program Files/MSVC2019/etc.../bin/cl.exe

If you cannot see the compiler, you modified the .bat file incorrectly (check the paths to it).

If you can see it, then you can proceed to:

$ cd /root/dir/of/mrv2
$ ./runme.sh -gpl   # -gpl to have it compile with H264 of FFmpeg.

That should compile mrv2 with its default settings (it will print out the number of CPUs and the CMake version). If you have a modern machine with 16 cores, it should take about 45-60 mins for the compilation to finish.

Assuming the compilation works, it will place the mrv2.exe in: /root/dir/of/mrv2/BUILD-Msys-amd64/Release/install/bin/mrv2.exe

If the compilation fails, you can always check the log to see what went wrong at: /root/dir/of/mrv2/BUILD-Msys-amd64/Release/compile.log

Look for "FAILED:", "Error:", "CMake Error", etc.

If something went wrong, you can try compiling with one CPU core to make the compiled messages clearer like: ./runme.sh -j 1

Anyway, that should get you started. If you run into issues, feel free to ask again here, and make sure to attach the compile.log file.

Finally, if the compilation worked and you can run mrv2.exe from the installed location (ie. BUILD-MSys-amd64/Release/install/bin), you can proceed to packaging it with:


$ cd /root/dir/of/mrv2
$ ./runmeq.sh -t package

That will place the .exe and .zip files in:

/root/dir/of/mrv2/packages

Sorry if these are newbie questions, I have experience compiling/debugging C++ & Python scripts, but no experience packaging windows applications/installers.

Never mind the newbie questions. We've all had them.

slavkosky commented 8 months ago

Great, much appreciated! I stopped using VS2019 last year, so I had to modify my 2022 install by adding the MVSC v142 Build Tools x86/64 components. That didn't work, I got a few unresolved external symbol errors when building liblcms2.lib and raw.dll.

So next I tried this:

I still got unresolved symbols errors in the same stage of the compile ( attached my latest compile.log ) the errors start on Line 14128

What's interesting is, ninja is reporting ninja: build stopped: subcommand failed., and it's not creating BUILD-Msys-amd64\Release\install\bin\mrv2.exe executable however (Line 14380) reports 0 Error(s). I didn't realize it'd failed until after noticing mrv2.exe was missing then searching log.

EDIT: Sorry for confusion, this is my alt account but still the same person ;)

ggarra13 commented 8 months ago

Ok. Your problem is that you have gcc installed in your path, which you should not install as liblcms2 needs to be compiled with cl.exe, not gcc. Let me know if this was installed by default so I add that to the instructions or scripts.

Try:

pacman -R gcc
cd /root/dir/of/mrv2
./runme.sh -gpl
ggarra13 commented 8 months ago

Regarding ninja reporting no errors, that's because ninja runs multiple threads so some threads may exit with no errors but if at least one exits with errors the whole compilation stops. Sadly the messages get buried in the log.

slavkosky commented 8 months ago

Gotcha, no worries on that. And thanks for the insight, ill remove gcc and try again. I cant remember if i installed it at some point, I've been using the same OS install for years so its entirely possible.

Maybe just add a line in your instructions to make people aware that gcc is the culprit if they get that error in the future. Ill let you know how the compile goes!

ggarra13 commented 8 months ago

Gotcha, no worries on that. And thanks for the insight, ill remove gcc and try again. I cant remember if i installed it at some point, I've been using the same OS install for years so its entirely possible.

You can also modify the compile_liblcms2_windows.sh script to:

export CC=cl.exe  # Added
./configure --enable-shared --disable-static ....etc....
slavkosky commented 8 months ago

Running pacman -R gcc in MSYS2 = error: target not found: gcc I'm checking my VS install to see if it crept into one of my component bundles I selected when installing

ggarra13 commented 8 months ago

Try:

which gcc

to see if it is installed indeed.

Anyway, I recommend you use the export CC=cl.exe change in compile_liblcms2_windows.sh as it is more solid.

slavkosky commented 8 months ago

Ah, found it. I had installed Strawberry Perl env last year, it added gcc.exe to my path. I'll try again with this change, but could you elaborate on the mod to compile_liblcms2_windows.sh? I looked at it

#!/usr/bin/env bash
# SPDX-License-Identifier: BSD-3-Clause
# mrv2
# Copyright Contributors to the mrv2 Project. All rights reserved.

#
# This script compiles a LCMS2 as a shared library (DLL).
#
if [[ ! -e etc/build_dir.sh ]]; then
    echo "You must run this script from the root of mrv2 directory like:"
    echo
    script=`basename $0`
    echo "> bin/$script"
    exit 1
fi

if [[ ! $RUNME ]]; then
    . etc/build_dir.sh
else
    . etc/functions.sh
fi

#
# Set the main tag to compile
#
LCMS_BRANCH=lcms2.15

if [[ $KERNEL != *Msys* ]]; then
    echo
    echo "This script is for Windows MSys2-64 only."
    echo
    exit 1
fi

MRV2_ROOT=$PWD
SUPERBUILD=$PWD/$BUILD_DIR/tlRender/etc/SuperBuild
INSTALLDIR=$PWD/$BUILD_DIR/install

if [[ ! -e $INSTALLDIR/lib/liblcms2.lib ]]; then

    #
    # Install development tools
    #
    pacman -Sy --noconfirm
    # pacman -Sy mingw-w64-x86_64-toolchain --noconfirm

    #
    # Clone the repository
    #
    mkdir -p $SUPERBUILD
    cd $SUPERBUILD
    if [[ ! -d LCMS2 ]]; then
    run_cmd git clone --depth 1 --branch $LCMS_BRANCH https://github.com/mm2/Little-CMS.git LCMS2 2> /dev/null
    fi

    #
    # Run configure
    #
    cd LCMS2
    run_cmd ./configure --enable-shared --disable-static --prefix=$INSTALLDIR

    #
    # Compile and install the library
    #
    make -j ${CPU_CORES} install

    run_cmd mv $INSTALLDIR/lib/liblcms2.a $INSTALLDIR/lib/liblcms2.lib

    cd $MRV2_ROOT
else
    echo "liblcms2 already installed."
fi

Where do I put those two lines you mentioned?

ggarra13 commented 8 months ago

     #
     # Run configure
     #
     export CC=cl.exe   # Add this.  It will still choke if you have gcc or g++ on your path thou.
     cd LCMS2
     run_cmd ./configure --enable-shared --disable-static --prefix=$INSTALLDIR
slavkosky commented 8 months ago

Thanks. After Strawberry Perl uninstall and removing path entries which gcc now spits out no gcc in (<a bunch of compiler dirs>). I've also added export CC=cl.exe at line 59. Time for another go :)

slavkosky commented 8 months ago

Ran it again, and the output when configuring lcms2 is stating:

> git clone --depth 1 --branch lcms2.15 https://github.com/mm2/Little-CMS.git LCMS2

> ./configure --enable-shared --disable-static --prefix=/C/mrv2/BUILD-Msys-amd64/Release/install
configure: loading site script /etc/config.site
checking build system type... x86_64-pc-msys
checking host system type... x86_64-pc-msys
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether UID '197609' is supported by ustar format... yes
checking whether GID '197121' is supported by ustar format... yes
checking how to create a ustar tar archive... gnutar
checking whether make supports the include directive... yes (GNU style)
checking for gcc... cl.exe
checking whether the C compiler works... yes
checking for C compiler default output file name... conftest.exe
checking for suffix of executables... .exe
checking whether we are cross compiling... no
checking for suffix of object files... obj
checking whether we are using the GNU C compiler... no
checking whether cl.exe accepts -g... yes
checking for cl.exe option to accept ISO C89... none needed
checking whether cl.exe understands -c and -o together... no
checking dependency style of /C/mrv2/BUILD-Msys-amd64/Release/tlRender/etc/SuperBuild/LCMS2/compile cl.exe... msvc7
checking for /C/mrv2/BUILD-Msys-amd64/Release/tlRender/etc/SuperBuild/LCMS2/compile cl.exe option to accept ISO C99... unsupported
checking for /C/mrv2/BUILD-Msys-amd64/Release/tlRender/etc/SuperBuild/LCMS2/compile cl.exe option to accept ISO C89... (cached) none needed
checking for /C/mrv2/BUILD-Msys-amd64/Release/tlRender/etc/SuperBuild/LCMS2/compile cl.exe option to accept ISO Standard C... (cached) none needed
checking how to run the C preprocessor... /C/mrv2/BUILD-Msys-amd64/Release/tlRender/etc/SuperBuild/LCMS2/compile cl.exe -E
checking for g++... no
checking for c++... no
checking for gpp... no
checking for aCC... no
checking for CC... no
checking for cxx... no
checking for cc++... no
checking for cl.exe... cl.exe
checking whether we are using the GNU C++ compiler... no
checking whether cl.exe accepts -g... yes
checking dependency style of cl.exe... msvc7
checking how to print strings... printf
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for non-GNU ld... no
configure: error: no acceptable ld found in $PATH

real    0m12.370s
user    0m0.075s
sys 0m0.212s

make: Nothing to be done for 'install'.
> mv /C/mrv2/BUILD-Msys-amd64/Release/install/lib/liblcms2.a /C/mrv2/BUILD-Msys-amd64/Release/install/lib/liblcms2.lib
mv: cannot stat '/C/mrv2/BUILD-Msys-amd64/Release/install/lib/liblcms2.a': No such file or directory
:: Synchronizing package databases...

Which then seems to break the build (Line 19679):

[115/241] Building CXX object lib\mrvWidgets\CMakeFiles\mrvWidgets.dir\mrvTile.cpp.obj
[116/241] Building CXX object lib\mrvWidgets\CMakeFiles\mrvWidgets.dir\mrvHUDUI.cxx.obj
[117/241] Building CXX object lib\mrvWidgets\CMakeFiles\mrvWidgets.dir\mrvVersion.cpp.obj
FAILED: lib/mrvWidgets/CMakeFiles/mrvWidgets.dir/mrvVersion.cpp.obj 
C:\PROGRA~2\MICROS~3\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\cl.exe  /nologo /TP -DCURL_STATICLIB -DFFmpeg_FOUND -DFL_DLL -DLibRaw_FOUND -DMRV2_NETWORK -DMRV2_PDF -DMRV2_PYBIND11 -DMRV2_PYFLTK -DMRV2_VERSION=\"1.0.4\" -DOpenColorIO_SKIP_IMPORTS -DOpenSSL_FOUND -DPNG_FOUND -DRtAudio_FOUND -DTIFF_FOUND -DTLRENDER_EXR -DTLRENDER_FFMPEG -DTLRENDER_GL -DTLRENDER_JPEG -DTLRENDER_NET -DTLRENDER_OCIO -DTLRENDER_PNG -DTLRENDER_RAW -DTLRENDER_STB -DTLRENDER_TIFF -DTLRENDER_USD -DTLRENDER_VERSION=\"0.0.1\" -DZLIB_FOUND -Dopentime_FOUND -Dopentimelineio_FOUND -DtlRender_FOUND -IC:\mrv2\mrv2\lib -IC:\mrv2\BUILD-Msys-amd64\Release\mrv2\src\mrv2-build\lib\mrvWidgets -IC:\mrv2\mrv2\..\tlRender\deps\glad_GL_4_1 -IC:\mrv2\BUILD-Msys-amd64\Release\install\include\boost-1_78 -IC:\mrv2\BUILD-Msys-amd64\Release\install\include\boost-1_76 -I\include -IC:\mrv2\mrv2\..\tlRender\deps -IC:\mrv2\mrv2\..\tlRender\lib -IC:\mrv2\mrv2 -external:IC:\mrv2\BUILD-Msys-amd64\Release\install\include\OpenEXR -external:IC:\mrv2\BUILD-Msys-amd64\Release\install\include\Imath -external:IC:\mrv2\BUILD-Msys-amd64\Release\install\include\opentimelineio\deps -external:IC:\mrv2\BUILD-Msys-amd64\Release\install\include\tlRender -external:IC:\mrv2\BUILD-Msys-amd64\Release\install\include -external:IC:\mrv2\BUILD-Msys-amd64\Release\install\include\freetype2 -external:IC:\mrv2\BUILD-Msys-amd64\Release\install\bin\Include -external:W0 /DWIN32 /D_WINDOWS /EHsc /O2 /Ob2 /DNDEBUG -std:c++17 -MD   -D NOMINMAX /EHsc -openmp /showIncludes /Folib\mrvWidgets\CMakeFiles\mrvWidgets.dir\mrvVersion.cpp.obj /Fdlib\mrvWidgets\CMakeFiles\mrvWidgets.dir\mrvWidgets.pdb /FS -c C:\mrv2\mrv2\lib\mrvWidgets\mrvVersion.cpp
C:\mrv2\mrv2\lib\mrvWidgets\mrvVersion.cpp(77): fatal error C1083: Cannot open include file: 'lcms2.h': No such file or directory
[118/241] Building CXX object lib\mrvWidgets\CMakeFiles\mrvWidgets.dir\mrvColorInfo.cpp.obj
[119/241] Building CXX object lib\mrvFl\CMakeFiles\mrvFl.dir\mrvContextObject.cpp.obj
[120/241] Building CXX object lib\mrvWidgets\CMakeFiles\mrvWidgets.dir\mrViewer.cxx.obj

Here's the entire log: compile.log

ggarra13 commented 8 months ago

Okay. Now you are missing /usr/bin/ld which comes from:

pacman -Sy binutils --noconfim

It was missing in the script. Good catch!

ggarra13 commented 8 months ago

I have re-worked the ffmpeg and lcms2 compile scripts in the repository and I also added support for VP9 encoding and AV1 decoding and encoding, which are supported by Discord and are free of patents and license issues (and offer better quality than H264 on top).

cd /dir/of/mrv2/
git switch main
git pull
./runme.sh -gpl
slavkosky commented 8 months ago

I have an RTX 4090 with AV1 encoder, so that's great news! I'll pull those changes now and attempt again. Thanks for you're amazing work!

ggarra13 commented 8 months ago

Make sure to check the new build requirements, as you now need to install "meson" too on Windows (ie. the meson .msi installer) for the dav1d (AV1 decoder). Also, the AV1 encoder currently works in software only, so it is still somewhat slower than H264. I will be adding hardware encoding at some point, but the build scripts are hard to deal with as you need CUDA installled, which cannot be automated as you need to sign the NVidia EULA.

slavkosky commented 8 months ago

Software encoding will be fine. AV1 is so much better than h264 so it's worth the extra bit of encode time regardless

Olympusmonsgames commented 8 months ago

Hey, just wanted to follow up:

Also I noticed an issue with video export:

Are you setting the ffmpeg command args using the profile configs? If so, where do those live? Just curious if I can make my own export profiles for mrv. I do a lot of voxel-based fluid sims at uncommon timesteps. I export frame sequences frequently (~dozen times per day or so) and play around with playback fps to see what speed looks best, compare my results to reference video, etc. I've been trying to cut Adobe Media Encoder out of my workflow because I already use mrv2 for previewing sequences and the extra time adds up.

ggarra13 commented 8 months ago
  • I was able to package an installer using NSIS on the first try. Great!

Most excellent!!! 👍

  • Now installed, I'm getting some strange python-related errors in the log immediately upon opening mrv2

These type of errors usually means that when compiling (or installing) python there was a mismatch between the libraries and the main python executable versions (the embedded mrv2.exe in our case). Usually, the culprit is PYTHONPATH or PATH at either compile or run time. I am now recompiling all of mrv2 and installing it myself to see if I also get the errorrs.

You might want to check the compile.log to see when Python gets compiled to see if there are any errors then too.

Also I noticed an issue with video export:

  • While I am able to export with the GPL profiles, I've noticed that the frame rate of the exported video isn't being set correctly sometimes.

    • FFMPEG seems to be getting the fps from the session default frame rate (in preferences) instead of the timeline frame rate override in the bottom toolbar in the viewer.
    • Once you change the default fps in settings, and export again, fps will still be the value before the setting change
    • However restarting mrv2 after changing default fps will give you the right fps on export.

Ok. You almost got it right.

The FPS is stored with the clip once loaded.

If loading a movie, the FPS is taken from the movie file. If loading a sequence the FPS is taken from the Preferences upon load time and stored with it.

When you go to save the clip, the FPS is taken from the stored location with the clip.

You should be able to avoid having to restart mrv2 if you go to Preferences, change the Sequence FPS there, and then reload the sequence (or RMB->File->Clone in the Files Panel).

ggarra13 commented 8 months ago

Are you setting the ffmpeg command args using the profile configs? If so, where do those live?

No. The ffmpeg executable is not bundled with mrv2. The profile settings for exporting (ie. bitrate, etc) are in C++ code in my own version of the tlRender gitmodule (ie. https://github.com/ggarra13/tlRender)

ggarra13 commented 8 months ago

You might want to check the compile.log to see when Python gets compiled to see if there are any errors then too.

I removed some errors (warnings really) from the Windows compilation of Python. I don't think that was what caused your build to fail with Python errors, but just in case do:

git pull
runme.sh

In any case, do you have another Python version installed on your machine that may be conflicting with version 3.10 that mrv2 compiles? I may want to mimic your setup and see if I can get my build to fail too.

Olympusmonsgames commented 8 months ago

Usually, the culprit is PYTHONPATH or PATH at either compile or run time. I am now recompiling all of mrv2 and installing it myself to see if I also get the errors.

You might want to check the compile.log to see when Python gets compiled to see if there are any errors then too.

In any case, do you have another Python version installed on your machine that may be conflicting with version 3.10 that mrv2 compiles? I may want to mimic your setup and see if I can get my build to fail too.

To be clear, my build didn't fail (I was able to compile, assemble exe, build installer, and use mrv2), however the python errors on startup are more of a concern because I want to distribute my built installer internally to a couple people on my team.

I checked compile.log and didn't find any errors except the Python Logging "Module Detached" errors I'd been seeing before, as well as a warning about pip needing an update for 3.10. However your bit about PATH conflicts tipped me off. I had other installs of Python (both 3.12 and 3.10) installed on my system (and both were added to my system PATH. I removed 3.12 completely from the system, and manually upgraded pip in my 3.10 install (to pip version 24.0). I'll try and compile again with your latest git commits and report back 👍

Olympusmonsgames commented 8 months ago

The FPS is stored with the clip once loaded.

If loading a movie, the FPS is taken from the movie file. If loading a sequence the FPS is taken from the Preferences upon load time and stored with it.

When you go to save the clip, the FPS is taken from the stored location with the clip.

You should be able to avoid having to restart mrv2 if you go to Preferences, change the Sequence FPS there, and then reload the sequence (or RMB->File->Clone in the Files Panel).

I see, yeah I'd deduced that from trial and error (and by experimenting editing a session file I'd saved). This workflow will be fine now that I have confirmation of how to change export fps properly, but I also can't help but wish there were a way to override FPS (and some other FFMPEG params like bitrate target, resolution, etc.) right in the export dialog. Either way, I'm just glad I can use mrv2 for exporting video now!

Olympusmonsgames commented 8 months ago

Ok, got a new set of errors I haven't seen before (starting ~Line 94 of compile.log:

:: Synchronizing package databases...
 clangarm64 downloading...
 mingw32 downloading...
 mingw64 downloading...
 ucrt64 downloading...
 clang32 downloading...
 clang64 downloading...
 msys downloading...
error: failed retrieving file 'ucrt64.db' from mirror.msys2.org : SSL connection timeout
error: failed retrieving file 'clang32.db' from mirror.msys2.org : SSL connection timeout
error: failed retrieving file 'clang64.db' from mirror.msys2.org : SSL connection timeout
warning: too many errors from mirror.msys2.org, skipping for the remainder of this transaction
error: failed retrieving file 'msys.db' from mirror.msys2.org : SSL connection timeout
resolving dependencies...
looking for conflicting packages...

I'll try updating my MSYS2 install and run again to see if those go away. I suppose it's possible their servers are down for maintenance or something too.

I also got two errors late in the build (~Lines 17702 and 17777 respectively)having to do with exceptions.py:

byte-compiling build\bdist.win-amd64\egg\fltk14\test\exceptions.py to exceptions.cpython-310.pyc
Sorry: IndentationError: unexpected indent (exceptions.py, line 47)
...
Extracting pyFltk1.4-1.4.0rc1-py3.10-win-amd64.egg to c:\mrv2\build-msys-amd64\release\install\bin\lib\site-packages
Sorry: IndentationError: unexpected indent (exceptions.py, line 47)
Adding pyFltk1.4 1.4.0rc1 to easy-install.pth file

In addition to having my C:\python310\ added to my system/user PATH, I also have a system-wide env variable python pointing to that python310 dir. I'll remove that (but leave python310 in PATH).

Finally, for warnings, there are a couple dozen regarding cl, here are a few of them:

Line   419: cl : Command line warning D9002 : ignoring unknown option '-g'
Line   420: cl : Command line warning D9002 : ignoring unknown option '-fvisibility=hidden'
Line   424: cl : Command line warning D9002 : ignoring unknown option '-g'
Line   425: cl : Command line warning D9002 : ignoring unknown option '-fvisibility=hidden'
Line   432: cl : Command line warning D9002 : cl : Command line warning D9002 : ignoring unknown option '-g'ignoring unknown option '-g'
Line   434: cl : Command line warning D9002 : cl : Command line warning D9002 : ignoring unknown option '-fvisibility=hidden'ignoring unknown option '-fvisibility=hidden'

Attaching my full log here if it'll help you. compile.log

EDIT: I checked BUILD-Msys-amd64\Release\install\bin and it did seem to build mrv2.exe properly. I opened it, and there aren't any python errors in the console on startup anymore. Lower-left corner of mrv2 window states Everything OK. For now, I'm going to package this up.

ggarra13 commented 8 months ago

The msys2 errors are network errors. You might need to start the build with runme.sh again if you get them if some Msys package does not sync.

The byte compiling error is a typo the pyFLTK guys missed. You can ignore it.

El mar, 13 de feb. de 2024 17:05, Olympusmonsgames @.***> escribió:

Ok, got a new set of errors I haven't seen before (starting ~Line 94 of compile.log:

:: Synchronizing package databases... clangarm64 downloading... mingw32 downloading... mingw64 downloading... ucrt64 downloading... clang32 downloading... clang64 downloading... msys downloading...error: failed retrieving file 'ucrt64.db' from mirror.msys2.org : SSL connection timeouterror: failed retrieving file 'clang32.db' from mirror.msys2.org : SSL connection timeouterror: failed retrieving file 'clang64.db' from mirror.msys2.org : SSL connection timeoutwarning: too many errors from mirror.msys2.org, skipping for the remainder of this transactionerror: failed retrieving file 'msys.db' from mirror.msys2.org : SSL connection timeoutresolving dependencies...looking for conflicting packages...

Also got two errors late in the build (~Lines 17702 and 17777 respectively)having to do with exceptions.py:

byte-compiling build\bdist.win-amd64\egg\fltk14\test\exceptions.py to exceptions.cpython-310.pycSorry: IndentationError: unexpected indent (exceptions.py, line 47)...Extracting pyFltk1.4-1.4.0rc1-py3.10-win-amd64.egg to c:\mrv2\build-msys-amd64\release\install\bin\lib\site-packagesSorry: IndentationError: unexpected indent (exceptions.py, line 47)Adding pyFltk1.4 1.4.0rc1 to easy-install.pth file

— Reply to this email directly, view it on GitHub https://github.com/ggarra13/mrv2/issues/183#issuecomment-1942345275, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABOKUC44A2PH4RX3YAT32GTYTPBQNAVCNFSM6AAAAABCJ2Q2MSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNBSGM2DKMRXGU . You are receiving this because you commented.Message ID: @.***>

ggarra13 commented 8 months ago

EDIT: I checked BUILD-Msys-amd64\Release\install\bin and it did seem to build mrv2.exe properly. I opened it, and there aren't any python errors in the console on startup anymore. Lower-left corner of mrv2 window states Everything OK. For now, I'm going to package this up.

Yes, the warnings you are getting are normal. Most libraries used in ffmpeg are unix libraries and when built with the MSVC compiler they throw fits.

ggarra13 commented 8 months ago

I am now trying to modify the build so that if you have other instances of Python installed they don't conflict. I found out the environment variables set in System->Environment Variables were getting used (like python.exe), instead of the files in BUILD-MSys-amd64/Release/install/bin.

ggarra13 commented 8 months ago

You should now be able to install any python version and it should not interfere with the build process. If you can do a test with another python version, I'd be much obliged. Do:

``` cd mrv2 git switch main git pull ./runme.sh ```
ggarra13 commented 8 months ago

I have added the option to save movie files with the speed set in the playback toolbar. You can save movie files from sequences or without sound at a different rate. If you try to save a movie file with sound, the speed in the toolbar is disregarded (we cannot do resampling while saving the movie file).

cd /dir/of/mrv2/
git switch main
git pull
./runme.sh -gpl

If you kept the directory of your latest compile, you can do to compile quicky:

cd /dir/of/mrv2/
git switch main
git pull
./runmet.sh
ggarra13 commented 8 months ago

Side Note: Where are the FFMPEG profiles saved? Can I edit/add to that list myself using the pre-compiled install of mrv2 or do I need to build from src?

I have added FFmpeg presets to mrv2 v1.0.5 (currently in beta). The current beta lives in www.sourceforge.net/projecs/mrv2/files/beta.

You can either donwload it to try it, or compile it again yourself with:

cd mrv2_dir
git switch main
git pull
./runme.sh

I also improved the performance of compiling and removed the potential for network errors when updating Msys64 (it is now updated only once).

Olympusmonsgames commented 8 months ago

Hey! I just pulled from git and tried a compile again, got this error when FFMPEG compilation started:

Compiling FFmpeg as GPL......

> rm -rf /c/mrv2/BUILD-Msys-amd64/Release/tlRender/etc/SuperBuild/FFmpeg/build/ffmpeg
ERROR: OpenSSL >=3.0.0 requires --enable-version3

compile.log

ggarra13 commented 8 months ago

Oh. Msys64 updated its openssl library. Try:

cd mrv2_dir
git switch main
git pull
./runme.sh -gpl