pencil2d / pencil

Pencil2D is an easy, intuitive tool to make 2D hand-drawn animations. Pencil2D is open source and cross-platform.
http://pencil2d.org
GNU General Public License v2.0
1.47k stars 273 forks source link

Issues with Fedora dnf package #1563

Closed scribblemaniac closed 8 months ago

scribblemaniac commented 3 years ago

Issue Summary

Two issues were reported by one of our users using the Pencil2D dnf package for Fedora 33.

The first issue is that ffmpeg is not included as a requirement for the package. Pencil2D needs ffmpeg installed to be able to successfully export video.

The second issue is that the user's about dialog indicated that it was a November 29th development build. Likely this was not a development build but rather the package was built with the incorrect build environment. The qmake call should have CONFIG+=release CONFIG+=PENCIL2D_RELEASE passed to it at least so that it is built as a release version rather than a development version.

@AndyMender Could you please take a look at this issue when you get a chance?

System Information

AndyMender commented 3 years ago

Thanks for reporting this! Yes, I will take a look at it. Very likely it's my fault.

AndyMender commented 3 years ago

I opened a ticket in the Fedora Bugzilla for tracking: https://bugzilla.redhat.com/show_bug.cgi?id=1914555

The caveat is that my fix will land in Fedora 34/Rawhide instantly, but will take a couple of days to reach Fedora33 stable due to QA gating.

Another problem is that ffmpeg itself might not be enough, since each video format requires a different codec and Fedora doesn't ship some of them due to licensing restrictions.

scribblemaniac commented 3 years ago

Another problem is that ffmpeg itself might not be enough, since each video format requires a different codec and Fedora doesn't ship some of them due to licensing restrictions.

Ideally the following external codecs should be installed and ffmpeg built with support for: libx264, libvpx, libvorbis, libmp3lame, and libxvid. If some of these are missing, ffmpeg should automatically switch to a different encoder that is available and supported by the container format, although in most cases that means a lower-quality output or worse compression.

AndyMender commented 3 years ago

Scratch the above. The ffmpeg package is not in the main Fedora repositories so perhaps Pencil2D would be better suited for the RPM Fusion repositories?

scribblemaniac commented 3 years ago

@AndyMender What's the status of this and the 0.6.6 release? I know your question wasn't ever addressed so I'll try to do that now. None of us here have a lot of experience with Fedora or it's packaging practices, so I think we will have to defer to you on what you think is the best way of resolving this issue. While not strictly required, ffmpeg is needed for quite an important feature of Pencil2D. Would it be much harder to install in the Fusion repositories? Would you say that most Fedora users already add the fusion repositories or is it not so common?

AndyMender commented 3 years ago

@AndyMender What's the status of this and the 0.6.6 release? I know your question wasn't ever addressed so I'll try to do that now. None of us here have a lot of experience with Fedora or it's packaging practices, so I think we will have to defer to you on what you think is the best way of resolving this issue. While not strictly required, ffmpeg is needed for quite an important feature of Pencil2D. Would it be much harder to install in the Fusion repositories? Would you say that most Fedora users already add the fusion repositories or is it not so common?

If ffmpeg provides important features for Pencil2D, one could then consider it a "recommended" requirement. However, I think it should just be a regular requirement then to make user experience more complete.

I would say most Fedora users will use the RPM Fusion repositories, exactly because of codec support, but the package itself cannot make such assumptions per packaging guidelines.

What I will do is the following:

  1. Remove Pencil2D from main Fedora repositories (pending until it's approved to RPM Fusion).
  2. Open a request to add Pencil2D to RPM Fusion and submit there once it's reviewed.
J5lx commented 3 years ago

@AndyMender Any progress on this?

J5lx commented 2 years ago

@AndyMender Have you made any progress on this issue?

musicinmybrain commented 1 year ago

Two things have changed since the last update on this issue.

I have issued updates for all Fedora releases that should fix the problems reported in this issue:

I have also added a package for EPEL9: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2023-ea71b78f67

I spent a few minutes manually testing these packages, and everything seemed to work as expected, but I am not personally a Pencil2D user, so I would appreciate any feedback on these updates. Please feel free to open new downstream bugs against the Fedora package in Red Hat Bugzilla if you find any problems. I also welcome and appreciate co-maintainers.

J5lx commented 1 year ago

I took a look at the changes you made and the codecs supported in ffmpeg-free and it looks all good to me. I’ll still set aside some time to set up a Fedora VM and take a closer look at how Pencil2D copes with the limited codec support, though. Thanks for adopting the package and dealing with these issues!

scribblemaniac commented 11 months ago

I have setup a fresh Fedora 39 Desktop VM and have tested this. When I installed Pencil2D, it also installed ffmpeg-free as a dependency. However, it did not install openh264, so when I tried to import videos that use the h.264 codec, ffmpeg failed with a missing library error. After manually installing the openh264 package, everything worked as expected. Exporting seems to be handled gracefully, defaulting to different codecs where necessary for the supported output container formats. MP4 defaults to MPEG-4 rather than H264 for export, which is not the best but at least it works. Switching to the version of ffmpeg in rpm-fusion, everything worked fine and H264 was the default for the MP4 format.

@musicinmybrain Can I please get your input on the openh264 issue I encountered? ffmpeg-free is build with openh264 support, so is it a mistake with that package that it doesn't have that as a dependency, or is this something Fedora users are expected to handle themselves? If the ffmpeg-free package is working as expected, I would suggest that we add openh264 as a weak dependency for Pencil2D as it's almost certainly the codec users will most frequently want to import from and should be present if libx264 is not available.

Once this last point is sorted out, I think we're good to close this issue. There's a lot we could do to better adjust to different ffmpeg configurations, but that's no longer just a Fedora issue. From my testing, the importing/exporting user experience is otherwise on par with other distros and platforms.

musicinmybrain commented 11 months ago

OpenH264 support is available from a special disabled-by-default repo in Fedora; see https://docs.fedoraproject.org/en-US/quick-docs/openh264/. Installing the openh264 package from the fedora-cisco-openh264 repo will get the import working (I tested this in a clean VM with https://download.blender.org/durian/trailer/sintel_trailer-480p.mp4), but the user has to do it manually; we can’t add a dependency (and ffmpeg-free is patched to dlopen it rather than linking it normally) because the repository is disabled by default. Unfortunately, due the patent licensing situation, this is the case for OpenH264 support system-wide. On the other hand, that means users are at least more likely to be able to figure out what to do.

scribblemaniac commented 11 months ago

Updating installation instructions here: https://github.com/pencil2d/pencil2d.github.io/pull/27

J5lx commented 8 months ago

Closing this since the updated installation instructions were merged a while ago.