Failure to build movie strip proxy / ffmpeg incompatibility #87932

Closed
opened 2021-04-30 11:11:26 +02:00 by Jan Žegklitz · 21 comments

System Information
Operating system: Linux-5.11.16-arch1-1-x86_64-with-glibc2.33 64 Bits
Graphics card: NVIDIA GeForce 940M/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 465.27

Blender Version
Broken: version: 2.92.0, branch: makepkg (modified), commit date: 2021-02-24 16:25, hash: 02948a2cab
Worked: version 2.92.0, branch: master, commit date: 2021-02-24 16:25, hash: 02948a2cab

Short description of error
In VSE, when I want to build the proxy, it pretends that the proxy is being built but when it finishes, the proxy is not actually used. When I run blender from terminal, I can see error messages Error encoding proxy frame X for '<path>' where X are frame numbers from 0 up and <path> is the path to the proxy file.

Other important info
The version of blender where this behaviour happens is the version from the Arch Linux community repository. The behaviour reported in this bug does not happen with blender downloaded from the official blender download page. However, there is a different bug reported for the Arch blender package (see https://bugs.archlinux.org/task/70630?project=5&string=blender) where one of the maintainers of the package says

Pretty sure this is due to our usage of a very recent ffmpeg as compared to the official blender builds.

and further suggests that that issue could be resolved if blender was made (more) compatible with newer ffmpeg. That issue is not related to mine but since it is revolves around ffmpeg, I think it might be very relevant to my issue as well.

I've reported this bug in the Arch package bug tracker as well (see https://bugs.archlinux.org/task/70657?project=5&string=blender) but I suspect I will get similar answer as for the other bug mentioned above.

Exact steps for others to reproduce the error
See the attached screen recording: screenrec-2021-04-30_10.44.59.mkv

From #88459:

I have a short video clip in Matroska format (see below for details). With the 2.92 and 2.83.13 official binaries creating a VSE proxy for this video works as expected. But with the Arch Linux 2.92 package and a locally built 3.0 alpha version VSE proxy generation fails:

  • The proxy_50.avi file is only a few kilobytes and subsequently the preview doesn't use the proxy
  • With 3.0 alpha the errors printed are Can't send video frame: Invalid argument, apparently coming from
static void add_to_proxy_output_ffmpeg(struct proxy_output_ctx *ctx, AVFrame *frame)
{
   ....

  int ret = avcodec_send_frame(ctx->c, frame);
  if (ret < 0) {
    /* Can't send frame to encoder. This shouldn't happen. */
    fprintf(stderr, "Can't send video frame: %s\n", av_err2str(ret));
    return;
  }

I suspect this is an issue related to the used FFmpeg version. As reported in system-info.txt these differ:

Official 2.92 binaries

FFmpeg:
=====================================

avcodec:   '58, 54, 100'
avdevice:  '58,  8, 100'
avformat:  '58, 29, 100'
avutil:    '56, 31, 100'
swscale:   ' 5,  5, 100'


Arch Linux 2.92 binaries, same for manually built 3.0 alpha:

FFmpeg:
=====================================

avcodec:   '58, 134, 100'
avdevice:  '58, 13, 100'
avformat:  '58, 76, 100'
avutil:    '56, 70, 100'
swscale:   ' 5,  9, 100'

Are there restrictions on which FFmpeg versions are used when building Blender? My current globally installed ffmpeg is 4.4.

Exact steps for others to reproduce the error

  • Add movie to VSE as strip, select it
  • Enable strip proxy & timecode
  • Set size to 50%
  • Set timecode index to Record Run
  • Rebuild proxy and Timecode indices
  • Console shows errors

Video contents:

ffmpeg version n4.4 Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 10.2.0 (GCC)
  configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmfx --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librav1e --enable-librsvg --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-nvdec --enable-nvenc --enable-shared --enable-version3
  libavutil      56. 70.100 / 56. 70.100
  libavcodec     58.134.100 / 58.134.100
  libavformat    58. 76.100 / 58. 76.100
  libavdevice    58. 13.100 / 58. 13.100
  libavfilter     7.110.100 /  7.110.100
  libswscale      5.  9.100 /  5.  9.100
  libswresample   3.  9.100 /  3.  9.100
  libpostproc    55.  9.100 / 55.  9.100
Input #0, matroska,webm, from '2021-05-21_09-20-55.mkv':
  Metadata:
    ENCODER         : Lavf58.76.100
  Duration: 00:05:33.85, start: 0.000000, bitrate: 876 kb/s
  Stream #0:0: Video: h264 (High), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 60 fps, 60 tbr, 1k tbn, 120 tbc (default)
    Metadata:
      DURATION        : 00:05:33.850000000
  Stream #0:1: Audio: aac (LC), 48000 Hz, stereo, fltp (default)
    Metadata:
      title           : simple_aac_recording
      DURATION        : 00:05:33.781000000
**System Information** Operating system: Linux-5.11.16-arch1-1-x86_64-with-glibc2.33 64 Bits Graphics card: NVIDIA GeForce 940M/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 465.27 **Blender Version** Broken: version: 2.92.0, branch: makepkg (modified), commit date: 2021-02-24 16:25, hash: `02948a2cab` Worked: version 2.92.0, branch: master, commit date: 2021-02-24 16:25, hash: `02948a2cab` **Short description of error** In VSE, when I want to build the proxy, it pretends that the proxy is being built but when it finishes, the proxy is not actually used. When I run blender from terminal, I can see error messages `Error encoding proxy frame X for '<path>'` where X are frame numbers from 0 up and `<path>` is the path to the proxy file. **Other important info** The version of blender where this behaviour happens is the version from the Arch Linux community repository. The behaviour reported in this bug does not happen with blender downloaded from the official blender download page. However, there is a different bug reported for the Arch blender package (see https://bugs.archlinux.org/task/70630?project=5&string=blender) where one of the maintainers of the package says > Pretty sure this is due to our usage of a very recent ffmpeg as compared to the official blender builds. and further suggests that that issue could be resolved if blender was made (more) compatible with newer ffmpeg. That issue is not related to mine but since it is revolves around ffmpeg, I think it might be very relevant to my issue as well. I've reported this bug in the Arch package bug tracker as well (see https://bugs.archlinux.org/task/70657?project=5&string=blender) but I suspect I will get similar answer as for the other bug mentioned above. **Exact steps for others to reproduce the error** See the attached screen recording: [screenrec-2021-04-30_10.44.59.mkv](https://archive.blender.org/developer/F10046598/screenrec-2021-04-30_10.44.59.mkv) From #88459: I have a short video clip in Matroska format (see below for details). With the 2.92 and 2.83.13 official binaries creating a VSE proxy for this video works as expected. But with the Arch Linux 2.92 package and a locally built 3.0 alpha version VSE proxy generation fails: * The proxy_50.avi file is only a few kilobytes and subsequently the preview doesn't use the proxy * With 3.0 alpha the errors printed are `Can't send video frame: Invalid argument`, apparently coming from ``` static void add_to_proxy_output_ffmpeg(struct proxy_output_ctx *ctx, AVFrame *frame) { .... int ret = avcodec_send_frame(ctx->c, frame); if (ret < 0) { /* Can't send frame to encoder. This shouldn't happen. */ fprintf(stderr, "Can't send video frame: %s\n", av_err2str(ret)); return; } ``` I suspect this is an issue related to the used FFmpeg version. As reported in system-info.txt these differ: ``` Official 2.92 binaries FFmpeg: ===================================== avcodec: '58, 54, 100' avdevice: '58, 8, 100' avformat: '58, 29, 100' avutil: '56, 31, 100' swscale: ' 5, 5, 100' Arch Linux 2.92 binaries, same for manually built 3.0 alpha: FFmpeg: ===================================== avcodec: '58, 134, 100' avdevice: '58, 13, 100' avformat: '58, 76, 100' avutil: '56, 70, 100' swscale: ' 5, 9, 100' ``` Are there restrictions on which FFmpeg versions are used when building Blender? My current globally installed ffmpeg is 4.4. **Exact steps for others to reproduce the error** * Add movie to VSE as strip, select it * Enable strip proxy & timecode * Set size to 50% * Set timecode index to Record Run * Rebuild proxy and Timecode indices * Console shows errors Video contents: ``` ffmpeg version n4.4 Copyright (c) 2000-2021 the FFmpeg developers built with gcc 10.2.0 (GCC) configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmfx --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librav1e --enable-librsvg --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-nvdec --enable-nvenc --enable-shared --enable-version3 libavutil 56. 70.100 / 56. 70.100 libavcodec 58.134.100 / 58.134.100 libavformat 58. 76.100 / 58. 76.100 libavdevice 58. 13.100 / 58. 13.100 libavfilter 7.110.100 / 7.110.100 libswscale 5. 9.100 / 5. 9.100 libswresample 3. 9.100 / 3. 9.100 libpostproc 55. 9.100 / 55. 9.100 Input #0, matroska,webm, from '2021-05-21_09-20-55.mkv': Metadata: ENCODER : Lavf58.76.100 Duration: 00:05:33.85, start: 0.000000, bitrate: 876 kb/s Stream #0:0: Video: h264 (High), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 60 fps, 60 tbr, 1k tbn, 120 tbc (default) Metadata: DURATION : 00:05:33.850000000 Stream #0:1: Audio: aac (LC), 48000 Hz, stereo, fltp (default) Metadata: title : simple_aac_recording DURATION : 00:05:33.781000000 ```
Author

Added subscriber: @zegkljan

Added subscriber: @zegkljan

#88647 was marked as duplicate of this issue

#88647 was marked as duplicate of this issue

#88459 was marked as duplicate of this issue

#88459 was marked as duplicate of this issue

Added subscriber: @charbel

Added subscriber: @charbel

Yes, the move from ffmpeg 4.3 to 4.4 in the Arch Linux blender package definitely caused some issues when rendering with audio and who knows what other stuff got broken too.

Yes, the move from ffmpeg 4.3 to 4.4 in the Arch Linux blender package definitely caused some issues when rendering with audio and who knows what other stuff got broken too.
Member

Added subscribers: @PaulMelis, @lichtwerk

Added subscribers: @PaulMelis, @lichtwerk
Member

Added subscriber: @iss

Added subscriber: @iss
Member

@iss: does this ring a bell?

@iss: does this ring a bell?

Added subscriber: @ZedDB

Added subscriber: @ZedDB

In #87932#1163924, @lichtwerk wrote:
@iss: does this ring a bell?

Yes, But I will invite @ZedDB here as he would know more about Linux env.

This is a bit shot in the dark, but Can't send video frame: Invalid argument could be possibly resolved by D10988. There may be other inconsistencies in current code vs intended FFmpeg usage though. Message implies that encoder is set up incorrectly.

> In #87932#1163924, @lichtwerk wrote: > @iss: does this ring a bell? Yes, But I will invite @ZedDB here as he would know more about Linux env. This is a bit shot in the dark, but `Can't send video frame: Invalid argument` could be possibly resolved by [D10988](https://archive.blender.org/developer/D10988). There may be other inconsistencies in current code vs intended FFmpeg usage though. Message implies that encoder is set up incorrectly.

I can reproduce this issue.

I'll look into exactly which is the invalid argument.

I can reproduce this issue. I'll look into exactly which is the invalid argument.

I found the issue and created a patch. https://developer.blender.org/D11390

Could you try it out @zegkljan ? Just to confirm that nothing else funny is going on that I missed?

I found the issue and created a patch. https://developer.blender.org/D11390 Could you try it out @zegkljan ? Just to confirm that nothing else funny is going on that I missed?
Author

In #87932#1165958, @ZedDB wrote:
I found the issue and created a patch. https://developer.blender.org/D11390

Could you try it out @zegkljan ? Just to confirm that nothing else funny is going on that I missed?

I have never built blender myself but I can try to modify the PKGBUILD of the arch package to include the patch.

> In #87932#1165958, @ZedDB wrote: > I found the issue and created a patch. https://developer.blender.org/D11390 > > Could you try it out @zegkljan ? Just to confirm that nothing else funny is going on that I missed? I have never built blender myself but I can try to modify the `PKGBUILD` of the arch package to include the patch.

I have never built blender myself but I can try to modify the PKGBUILD of the arch package to include the patch.

Yes, that is easier and exactly the same thing in the end.

Let me know how it goes :)

> I have never built blender myself but I can try to modify the `PKGBUILD` of the arch package to include the patch. Yes, that is easier and exactly the same thing in the end. Let me know how it goes :)
Author

@ZedDB What revision should I apply the patch to? It fails for the 2.92.0 version which is specified in the current PKGBUILD.

@ZedDB What revision should I apply the patch to? It fails for the 2.92.0 version which is specified in the current PKGBUILD.

3.0 . You said in your report that you had a locally built 3.0 version.
Why didn't you try it out on that?
2.92 is not receiving any more patches or releases.

3.0 . You said in your report that you had a locally built 3.0 version. Why didn't you try it out on that? 2.92 is not receiving any more patches or releases.
Author

3.0 . You said in your report that you had a locally built 3.0 version.

No, that part of the report was added later by someone else when merging duplicate reports. Will try with 3.0, thanks.

> 3.0 . You said in your report that you had a locally built 3.0 version. No, that part of the report was added later by someone else when merging duplicate reports. Will try with 3.0, thanks.

Added subscriber: @tintwotin

Added subscriber: @tintwotin

This issue was referenced by fe4cbe62df

This issue was referenced by fe4cbe62dff28933d6b5b66a2a9e95074016fd1e

This issue was referenced by 3311350670

This issue was referenced by 33113506701fac51b8b4dc8f51975200f885e50a

Changed status from 'Needs Triage' to: 'Resolved'

Changed status from 'Needs Triage' to: 'Resolved'
Sebastian Parborg self-assigned this 2021-05-28 18:36:32 +02:00
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
6 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#87932
No description provided.