#10858: Break in [overlay]? when using filter_complex between 6.0 and 6.1
-------------------------------------+-------------------------------------
             Reporter:  Markizano    |                    Owner:  (none)
  Draconus                           |
                 Type:  defect       |                   Status:  new
             Priority:  normal       |                Component:  ffmpeg
              Version:  6.1          |               Resolution:
             Keywords:               |               Blocked By:
  filter_complex overlay             |
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
Description changed by Markizano Draconus:

Old description:

> == Summary of the issue
> EOF on input when joining overlays. Works in 6.0, fails in 6.1.
>
> I have a filter_complex script that is trying to take two videos as input
> and overlay a trim'd snippet scaled down a little from one over the other
> in a fade-in/fade-out type of fashion.
>
> In ffmpeg-6.0 [1], this works, but in ffmpeg-6.1 [2] this fails with the
> error described below.
>
> [1]:
> {{{
> ffmpeg version n6.0 Copyright (c) 2000-2023 the FFmpeg developers
> built with gcc 10 (Debian 10.2.1-6)
> configuration: --prefix=/usr/local --arch=amd64 --toolchain=hardened
> --incdir=/usr/include/x86_64-linux-gnu --libdir=/usr/lib/x86_64-linux-gnu
> --enable-chromaprint --enable-encoder=libx264 --enable-encoder=libx265
> --enable-frei0r --enable-gpl --enable-ladspa --enable-libaom --enable-
> libass --enable-libass --enable-libbluray --enable-libbs2b --enable-
> libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-
> libdc1394 --enable-libdrm --enable-libflite --enable-libfontconfig
> --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm
> --enable-libiec61883 --enable-libjack --enable-libmfx --enable-libmp3lame
> --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-
> libopus --enable-libpulse --enable-libpulse --enable-librabbitmq
> --enable-librsvg --enable-librubberband --enable-libshine --enable-
> libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-
> libssh --enable-libtheora --enable-libtwolame --enable-libvidstab
> --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264
> --enable-libx264 --enable-libx265 --enable-libx265 --enable-libxcb
> --enable-libxcb-shm --enable-libxcb-xfixes --enable-libxml2 --enable-
> libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-nonfree
> --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-
> opengl --enable-openssl --enable-pocketsphinx --enable-sdl2 --enable-
> shared
> libavutil      58.  2.100 / 58.  2.100
> libavcodec     60.  3.100 / 60.  3.100
> libavformat    60.  3.100 / 60.  3.100
> libavdevice    60.  1.100 / 60.  1.100
> libavfilter     9.  3.100 /  9.  3.100
> libswscale      7.  1.100 /  7.  1.100
> libswresample   4. 10.100 /  4. 10.100
> libpostproc    57.  1.100 / 57.  1.100
> }}}
>
> [2]:
> {{{
> ffmpeg version n6.1 Copyright (c) 2000-2023 the FFmpeg developers
> built with gcc 12 (Debian 12.2.0-14)
> configuration: --prefix=/usr/local --arch=amd64 --toolchain=hardened
> --incdir=/usr/include/x86_64-linux-gnu --libdir=/usr/lib/x86_64-linux-gnu
> --enable-chromaprint --enable-encoder=libx264 --enable-encoder=libx265
> --enable-frei0r --enable-gpl --enable-ladspa --enable-libaom --enable-
> libass --enable-libass --enable-libbluray --enable-libbs2b --enable-
> libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-
> libdc1394 --enable-libdrm --enable-libflite --enable-libfontconfig
> --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm
> --enable-libiec61883 --enable-libjack --enable-libmp3lame --enable-
> libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus
> --enable-libpulse --enable-libpulse --enable-librabbitmq --enable-librsvg
> --enable-librubberband --enable-libshine --enable-libsnappy --enable-
> libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-
> libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis
> --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx264
> --enable-libx265 --enable-libx265 --enable-libxcb --enable-libxcb-shm
> --enable-libxcb-xfixes --enable-libxml2 --enable-libxvid --enable-libzmq
> --enable-libzvbi --enable-lv2 --enable-nonfree --enable-omx --enable-
> openal --enable-opencl --enable-opengl --enable-opengl --enable-openssl
> --enable-pocketsphinx --enable-sdl2 --enable-shared --enable-libvpl
> libavutil      58. 29.100 / 58. 29.100
> libavcodec     60. 31.102 / 60. 31.102
> libavformat    60. 16.100 / 60. 16.100
> libavdevice    60.  3.100 / 60.  3.100
> libavfilter     9. 12.100 /  9. 12.100
> libswscale      7.  5.100 /  7.  5.100
> libswresample   4. 12.100 /  4. 12.100
> libpostproc    57.  3.100 / 57.  3.100
> }}}
>

> == Expected Output
> Process the two files in an overlay and combine the results as the
> filter_complex describes.
>
> == Actual Output
> Error (trimmed, full version below) saying:
> {{{
> [fc#0 @ 0x556978fc6e40] Error while filtering: Invalid data found when
> processing input=3.92x
> Failed to inject frame into filter network: Invalid data found when
> processing input
> Error while filtering: Invalid data found when processing input
> Conversion failed!
> }}}
>
> == How to Reproduce
> Contents of {{{02-conditionals.filter_complex}}}:
> {{{
> [0:v]fps=29,trim=start=0:end=9.6,setpts=PTS-STARTPTS[vstart];
> [0:a]atrim=start=0:end=9.6,asetpts=PTS-STARTPTS[astart];
> [0:v]fps=29,trim=start=9.6:end=16.5,setpts=PTS-STARTPTS[vbackDrop];
> [0:a]atrim=start=9.6:end=16.5,asetpts=PTS-STARTPTS[abackDrop];
> [1:v]fps=29,trim=start=53.1:end=60,setpts=PTS-
> STARTPTS,scale=608x1080,setsar=1:1,fade=in:st=0:d=5:alpha=1[vref];
> [1:a]atrim=start=53.1:end=60,asetpts=PTS-
> STARTPTS,afade=in:st=0:d=5,volume=0.5[aref];
> [vbackDrop][vref]overlay=(W-w)/2:(H-h)/2,setpts=PTS-STARTPTS[vlead];
> [abackDrop][aref]amix[alead];
> [0:v]fps=29,trim=start=16.5:end=257,setpts=PTS-STARTPTS[vrest];
> [0:a]atrim=start=16.5:end=257,asetpts=PTS-STARTPTS[arest];
> [vstart][astart][vlead][alead][vrest][arest]concat=v=1:a=1:n=3[video][audio]
> }}}
>
> === FFMPEG command executed
> {{{
> $ ffmpeg -i if-conditionals.mkv -i programming-basics.mkv \
>   -filter_complex_script 02-conditionals.filter_complex \
>   -map_metadata -1 -map [video] -map [audio] \
>   -c:v h264 -pix_fmt yuv420p -crf 28 -metadata:s:v language=en \
>   -c:a aac -metadata:s:a language=en \
>   -y 02-conditionals.mkv
> }}}
>
> Full output attached as ffmpeg-20240212-120354.log.
> Resources used in this were also attached.

New description:

 == Summary of the issue
 EOF on input when joining overlays. Works in 6.0, fails in 6.1.

 I have a filter_complex script that is trying to take two videos as input
 and overlay a trim'd snippet scaled down a little from one over the other
 in a fade-in/fade-out type of fashion.

 In ffmpeg-6.0 [1], this works, but in ffmpeg-6.1 [2] this fails with the
 error described below.

 [1]:
 {{{
 ffmpeg version n6.0 Copyright (c) 2000-2023 the FFmpeg developers
 built with gcc 10 (Debian 10.2.1-6)
 configuration: --prefix=/usr/local --arch=amd64 --toolchain=hardened
 --incdir=/usr/include/x86_64-linux-gnu --libdir=/usr/lib/x86_64-linux-gnu
 --enable-chromaprint --enable-encoder=libx264 --enable-encoder=libx265
 --enable-frei0r --enable-gpl --enable-ladspa --enable-libaom --enable-
 libass --enable-libass --enable-libbluray --enable-libbs2b --enable-
 libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-
 libdc1394 --enable-libdrm --enable-libflite --enable-libfontconfig
 --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm
 --enable-libiec61883 --enable-libjack --enable-libmfx --enable-libmp3lame
 --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-
 libopus --enable-libpulse --enable-libpulse --enable-librabbitmq --enable-
 librsvg --enable-librubberband --enable-libshine --enable-libsnappy
 --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh
 --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-
 libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-
 libx264 --enable-libx265 --enable-libx265 --enable-libxcb --enable-libxcb-
 shm --enable-libxcb-xfixes --enable-libxml2 --enable-libxvid --enable-
 libzmq --enable-libzvbi --enable-lv2 --enable-nonfree --enable-omx
 --enable-openal --enable-opencl --enable-opengl --enable-opengl --enable-
 openssl --enable-pocketsphinx --enable-sdl2 --enable-shared
 libavutil      58.  2.100 / 58.  2.100
 libavcodec     60.  3.100 / 60.  3.100
 libavformat    60.  3.100 / 60.  3.100
 libavdevice    60.  1.100 / 60.  1.100
 libavfilter     9.  3.100 /  9.  3.100
 libswscale      7.  1.100 /  7.  1.100
 libswresample   4. 10.100 /  4. 10.100
 libpostproc    57.  1.100 / 57.  1.100
 }}}

 [2]:
 {{{
 ffmpeg version n6.1 Copyright (c) 2000-2023 the FFmpeg developers
 built with gcc 12 (Debian 12.2.0-14)
 configuration: --prefix=/usr/local --arch=amd64 --toolchain=hardened
 --incdir=/usr/include/x86_64-linux-gnu --libdir=/usr/lib/x86_64-linux-gnu
 --enable-chromaprint --enable-encoder=libx264 --enable-encoder=libx265
 --enable-frei0r --enable-gpl --enable-ladspa --enable-libaom --enable-
 libass --enable-libass --enable-libbluray --enable-libbs2b --enable-
 libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-
 libdc1394 --enable-libdrm --enable-libflite --enable-libfontconfig
 --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm
 --enable-libiec61883 --enable-libjack --enable-libmp3lame --enable-
 libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus
 --enable-libpulse --enable-libpulse --enable-librabbitmq --enable-librsvg
 --enable-librubberband --enable-libshine --enable-libsnappy --enable-
 libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-
 libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis
 --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx264
 --enable-libx265 --enable-libx265 --enable-libxcb --enable-libxcb-shm
 --enable-libxcb-xfixes --enable-libxml2 --enable-libxvid --enable-libzmq
 --enable-libzvbi --enable-lv2 --enable-nonfree --enable-omx --enable-
 openal --enable-opencl --enable-opengl --enable-opengl --enable-openssl
 --enable-pocketsphinx --enable-sdl2 --enable-shared --enable-libvpl
 libavutil      58. 29.100 / 58. 29.100
 libavcodec     60. 31.102 / 60. 31.102
 libavformat    60. 16.100 / 60. 16.100
 libavdevice    60.  3.100 / 60.  3.100
 libavfilter     9. 12.100 /  9. 12.100
 libswscale      7.  5.100 /  7.  5.100
 libswresample   4. 12.100 /  4. 12.100
 libpostproc    57.  3.100 / 57.  3.100
 }}}


 == Expected Output
 Process the two files in an overlay and combine the results as the
 filter_complex describes.

 == Actual Output
 Error (trimmed, full version below) saying:
 {{{
 [fc#0 @ 0x556978fc6e40] Error while filtering: Invalid data found when
 processing input=3.92x
 Failed to inject frame into filter network: Invalid data found when
 processing input
 Error while filtering: Invalid data found when processing input
 Conversion failed!
 }}}

 == How to Reproduce
 Contents of {{{02-conditionals.filter_complex}}}:
 {{{
 [0:v]fps=29,trim=start=0:end=9.6,setpts=PTS-STARTPTS[vstart];
 [0:a]atrim=start=0:end=9.6,asetpts=PTS-STARTPTS[astart];
 [0:v]fps=29,trim=start=9.6:end=16.5,setpts=PTS-STARTPTS[vbackDrop];
 [0:a]atrim=start=9.6:end=16.5,asetpts=PTS-STARTPTS[abackDrop];
 [1:v]fps=29,trim=start=53.1:end=60,setpts=PTS-
 STARTPTS,scale=608x1080,setsar=1:1,fade=in:st=0:d=5:alpha=1[vref];
 [1:a]atrim=start=53.1:end=60,asetpts=PTS-
 STARTPTS,afade=in:st=0:d=5,volume=0.5[aref];
 [vbackDrop][vref]overlay=(W-w)/2:(H-h)/2,setpts=PTS-STARTPTS[vlead];
 [abackDrop][aref]amix[alead];
 [0:v]fps=29,trim=start=16.5:end=257,setpts=PTS-STARTPTS[vrest];
 [0:a]atrim=start=16.5:end=257,asetpts=PTS-STARTPTS[arest];
 [vstart][astart][vlead][alead][vrest][arest]concat=v=1:a=1:n=3[video][audio]
 }}}

 === FFMPEG command executed
 {{{
 $ ffmpeg -i if-conditionals.mkv -i programming-basics.mkv \
   -filter_complex_script 02-conditionals.filter_complex \
   -map_metadata -1 -map [video] -map [audio] \
   -c:v h264 -pix_fmt yuv420p -crf 28 -metadata:s:v language=en \
   -c:a aac -metadata:s:a language=en \
   -y 02-conditionals.mkv
 }}}

 Full output attached as ffmpeg-20240212-120354.log.
 Resources used in this were too large to attach, so they are available
 here:

 https://markizano.net/misc/02-if-conditions.tgz

 SHA1: {{{b583e9883ec62393df47efcdf00a5abd9f6af227}}}
 SHA256:
 {{{47633c840fede1e39ecc59981ae6e15745dd0c521683849e3980573f856eda40}}}

 Resources have been signed with [https://markizano.net/key.asc
 C5EAC623531280A9A4067E705419010671E96AA3]

 https://markizano.net/misc/02-if-conditions.tgz.asc

 Signature is available as well.

 Contents of tarball:
 {{{
 $ tree -h 02-if-conditions
 [ 108]  02-if-conditions
 ├── [  44]  build
 │   └── [ 748]  02-conditionals.filter_complex
 ├── [1.1M]  ffmpeg-20240212-120354.log
 ├── [ 970]  readme.md
 ├── [  63]  resources
 │   ├── [ 88M]  if-conditionals.mkv
 │   └── [ 40M]  programming-basics.mkv
 └── [ 325]  run-ffmpeg.sh

 3 directories, 6 files
 }}}

 Hope these details help!

--
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/10858#comment:1>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
_______________________________________________
FFmpeg-trac mailing list
FFmpeg-trac@avcodec.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-trac

To unsubscribe, visit link above, or email
ffmpeg-trac-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to