[FFmpeg-trac] #9485(undetermined:new): Video frame drops when composing video from multiple generative video filters
FFmpeg
trac at avcodec.org
Fri Oct 29 09:22:07 EEST 2021
#9485: Video frame drops when composing video from multiple generative video
filters
-------------------------------------+-------------------------------------
Reporter: megpoid | Owner: (none)
Type: defect | Status: new
Priority: normal | Component:
| undetermined
Version: git-master | Resolution:
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Description changed by megpoid:
Old description:
> Summary of the bug:
> When trying to use multiple audio visualizer filters and compose them
> together to a single video stream, some filters will fail to output at
> the requested frame rate and some images coming from the filter will be
> duplicated.
>
> How to reproduce:
> {{{
> % ffmpeg -v verbose -i input.mp3 -filter_complex
> "[0:a]avectorscope=s=256x824:r=30[a];
> [0:a]showcqt=s=1664x1080:text=0:r=30[b];
> [0:a]showwaves=s=256x256:mode=line:draw=full:r=30[c]; [a][c]vstack[d];
> [b][d]hstack[out]" -map "[out]" -map 0:a -c:a libopus -vcodec libx264
> -preset ultrafast -pix_fmt yuv444p10le -t 60 -crf 23 -r 30 out0.mkv
> 2>log0.txt
>
> }}}
> When watching the output video, between timestamps 00:00.307 and
> 00:00:340, or timestamps 00:03:407 and 00:03.440, you can see that
> showcqt filter's output on the left has duplicate frames. Between
> timestamps 00:03.874 and 00:03.907, the showwaves filter's output in the
> bottom-right corner also froze for a frame.
> ffmpeg version N-104443-gdd7a61f62f-g783935de18+1
> built on 2021 October 29th
>
> Pastebin of the error log file: https://pastebin.com/raw/4VdUPrD3
>
>
> Known workaround
> This issue can be worked around by first encoding each individual filter
> into a PNG image sequence, then composing them in a second run, then
> converting to the desired format in a third run, like so:
>
> {{{
> ffmpeg -i input.mp3 -filter_complex
> "[0:a]avectorscope=s=256x824:r=30[out]" -map "[out]" -t 60 -r 30
> a_%05d.png
>
> ffmpeg -i input.mp3 -filter_complex
> "[0:a]showcqt=s=1664x1080:text=0:r=30[out]" -map "[out]" -t 60 -r 30
> b_%05d.png
>
> ffmpeg -i input.mp3 -filter_complex
> "[0:a]showwaves=s=256x256:mode=line:draw=full:r=30[out]" -map "[out]" -t
> 60 -r 30 c_%05d.png
>
> ffmpeg -r 30 -i a_%05d.png -r 30 -i b_%05d.png -r 30 -i c_%05d.png
> -filter_complex "[0:v][2:v]vstack[a]; [1:v][a]hstack[out]" -map "[out]"
> -t 60 -r 30 d_%05d.png
>
> ffmpeg -r 30 -i d_%05d.png -i input.mp3 -acodec libopus -vcodec libx264
> -preset ultrafast -pix_fmt yuv444p10le -t 60 -crf 23 -r 30 output.mkv
> }}}
>
>
>
> I have permission in writing to redistribute the attached audio file as
> long as credit is given: https://soundcloud.com/polyak
New description:
Summary of the bug:
When trying to use multiple audio visualizer filters and compose them
together to a single video stream, some filters will fail to output at the
requested frame rate and some images coming from the filter will be
duplicated.
How to reproduce:
{{{
% ffmpeg -v verbose -i input.mp3 -filter_complex
"[0:a]avectorscope=s=256x824:r=30[a];
[0:a]showcqt=s=1664x1080:text=0:r=30[b];
[0:a]showwaves=s=256x256:mode=line:draw=full:r=30[c]; [a][c]vstack[d];
[b][d]hstack[out]" -map "[out]" -map 0:a -c:a libopus -vcodec libx264
-preset ultrafast -pix_fmt yuv444p10le -t 60 -crf 23 -r 30 out0.mkv
2>log0.txt
}}}
When watching the output video, between timestamps 00:00.307 and
00:00:340, or timestamps 00:03:407 and 00:03.440, you can see that showcqt
filter's output on the left has duplicate frames. Between timestamps
00:03.874 and 00:03.907, the showwaves filter's output in the bottom-right
corner also froze for a frame.
ffmpeg version N-104443-gdd7a61f62f-g783935de18+1
built on 2021 October 29th
Pastebin of the error log file: https://pastebin.com/5RRWFjzm or
https://crypt.is-
by.us/?5e76d7f27a7e50a7#Eqmqrdaj2Q5hNuCOMnycs6jYx1KnYm5FniNE3B5OA1o=
I have uploaded a file named ticket9485out01.10mb.mkv that demonstrates
the issues described above.
Known workaround
This issue can be worked around by first encoding each individual filter
into a PNG image sequence, then composing them in a second run, then
converting to the desired format in a third run, like so:
{{{
ffmpeg -i input.mp3 -filter_complex
"[0:a]avectorscope=s=256x824:r=30[out]" -map "[out]" -t 60 -r 30
a_%05d.png
ffmpeg -i input.mp3 -filter_complex
"[0:a]showcqt=s=1664x1080:text=0:r=30[out]" -map "[out]" -t 60 -r 30
b_%05d.png
ffmpeg -i input.mp3 -filter_complex
"[0:a]showwaves=s=256x256:mode=line:draw=full:r=30[out]" -map "[out]" -t
60 -r 30 c_%05d.png
ffmpeg -r 30 -i a_%05d.png -r 30 -i b_%05d.png -r 30 -i c_%05d.png
-filter_complex "[0:v][2:v]vstack[a]; [1:v][a]hstack[out]" -map "[out]" -t
60 -r 30 d_%05d.png
ffmpeg -r 30 -i d_%05d.png -i input.mp3 -acodec libopus -vcodec libx264
-preset ultrafast -pix_fmt yuv444p10le -t 60 -crf 23 -r 30 output.mkv
}}}
I have permission in writing to redistribute the attached audio file as
long as credit is given: https://soundcloud.com/polyak
--
--
Ticket URL: <https://trac.ffmpeg.org/ticket/9485#comment:1>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list