自从我的电脑从Fedora 35升级到Fedora 36之后,kdenlive就无法渲染。我追踪到问题是mlt融化造成的。
$ mlt-melt export.mlt
+-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+
|1=-10| |2= -5| |3= -2| |4= -1| |5= 0| |6= 1| |7= 2| |8= 5| |9= 10|
+-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+
+---------------------------------------------------------------------+
| H = back 1 minute, L = forward 1 minute |
| h = previous frame, l = next frame |
| g = start of clip, j = next clip, k = previous clip |
| 0 = restart, q = quit, space = play |
+---------------------------------------------------------------------+
[consumer avformat] error with audio encode: -22 (frame 1)
[consumer avformat] error with audio encode: -22 (frame 11)
[consumer avformat] error with audio encode: -22 (frame 21)
Current Position: 20$ mlt-melt --version
mlt-melt 7.4.0
...
$ dnf list mlt\*
...
Installed Packages
mlt.x86_64 7.4.0-3.fc36 @fedora
mlt-freeworld.x86_64 7.4.0-1.fc36 @rpmfusion-free
...完全相同的mlt文件(我在F36上的kdenlive 22.04.0上生成的)在Fedora 35上工作得很好,它安装了mlt熔体6.26.1。我没有看到任何关于需要额外步骤使mlt在F36上工作的说明。如果我将一个工作的.mlt文件从F35拉到F36,我会得到相同的"audo 22“错误。
有什么想法或建议吗?我不能回过头来看F35。我需要一个前进的解决方案。谢谢。
发布于 2022-05-22 21:32:07
错误代码-22映射到posix错误EINVAL (无效参数)。THis是FFMpeg从对avcodec_receive_packet()的调用返回的代码。https://github.com/mltframework/mlt/blob/0e0e526124f4392275bdeb2510e8fb086d23da8f/src/modules/avformat/consumer_avformat.c#L1376
如果您在FFMpeg中跟踪代码,那么返回EINVAL的地方有很多:https://ffmpeg.org/doxygen/trunk/encode_8c_source.html#l00391
我认为最有可能的是,您的FFMpeg没有您想要使用的编解码器--但是您说它在直接使用FFMpeg时是有效的。除非MLT没有找到与您正在测试的相同的FFMpeg。查看MLT是否正在找到您想要的编解码器的一个好方法是运行:
melt -query audio_codecs但这只是猜测。也许EINVAL错误代码是由另一个问题引起的。
至于其他想法..。那么,您可以使用开发人员自己提供的AppImage或Flatpack:https://kdenlive.org/en/download/。
https://stackoverflow.com/questions/72295498
复制相似问题