[FFmpeg-trac] #6682(undetermined:new): hstack repeats input frames
FFmpeg
trac at avcodec.org
Thu Sep 21 18:39:22 EEST 2017
#6682: hstack repeats input frames
-------------------------------------+-------------------------------------
Reporter: damonmaria | Type: defect
Status: new | Priority: important
Component: | Version: git-
undetermined | master
Keywords: hstack | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Using the hstack filter in code I was having a strange problem where after
pushing a single frame into each input buffer I would sometimes get 2
frames out of the buffersink. Also, in the resulting video, some parts
would 'pause' between frames as tho the same image was used across 2
frames for one of the hstack inputs, but not the other.
I then switched to command line to try hstack and get the same result. I
dumped the output to individual image files so I could make sure it wasn't
an issue with my viewer.
How to reproduce:
{{{
$ ffmpeg -i 2017-08-31T220000-1.mp4 -i 2017-08-31T220000-2.mp4
-filter_complex "[0:v][1:v]hstack=inputs=2[v]" -map "[v]" -t 10
filename%03d.jpg
ffmpeg version git-2017-09-21-6f15f1c Copyright (c) 2000-2017 the FFmpeg
developers
built with Apple LLVM version 9.0.0 (clang-900.0.37)
configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD-6f15f1c --enable-
shared --enable-pthreads --enable-gpl --enable-version3 --enable-
hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-
ldflags= --enable-libass --enable-libfdk-aac --enable-libfreetype
--enable-libmp3lame --enable-libvorbis --enable-libvpx --enable-libx264
--enable-libx265 --enable-libxvid --enable-opencl --enable-videotoolbox
--disable-lzma --enable-nonfree
libavutil 55. 76.100 / 55. 76.100
libavcodec 57.106.101 / 57.106.101
libavformat 57. 82.101 / 57. 82.101
libavdevice 57. 8.101 / 57. 8.101
libavfilter 6.105.100 / 6.105.100
libavresample 3. 6. 0 / 3. 6. 0
libswscale 4. 7.103 / 4. 7.103
libswresample 2. 8.100 / 2. 8.100
libpostproc 54. 6.100 / 54. 6.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '2017-08-31T220000-1.mp4':
Metadata:
major_brand : isml
minor_version : 512
compatible_brands: piff
title : rtsp://root:root@192.168.14.104/axis-
media/media.amp?camera=1
encoder : Lavf57.71.100
comment : rtsp-server
Duration: 00:59:59.79, start: 0.000000, bitrate: 263 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuvj420p(pc,
bt709), 800x600 [SAR 1:1 DAR 4:3], 263 kb/s, 4 fps, 4 tbr, 10000k tbn,
20000k tbc (default)
Metadata:
handler_name : VideoHandler
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '2017-08-31T220000-2.mp4':
Metadata:
major_brand : isml
minor_version : 512
compatible_brands: piff
title : rtsp://root:root@192.168.14.104/axis-
media/media.amp?camera=2
encoder : Lavf57.71.100
comment : rtsp-server
Duration: 00:59:59.79, start: 0.000000, bitrate: 222 kb/s
Stream #1:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuvj420p(pc,
bt709), 800x600 [SAR 1:1 DAR 4:3], 222 kb/s, 4 fps, 4 tbr, 10000k tbn,
20000k tbc (default)
Metadata:
handler_name : VideoHandler
Stream mapping:
Stream #0:0 (h264) -> hstack:input0
Stream #1:0 (h264) -> hstack:input1
hstack -> Stream #0:0 (mjpeg)
Press [q] to stop, [?] for help
Output #0, image2, to '/Users/damon/Downloads/cmd-line-
hstack-2/filename%03d.jpg':
Metadata:
major_brand : isml
minor_version : 512
compatible_brands: piff
title : rtsp://root:root@192.168.14.104/axis-
media/media.amp?camera=1
comment : rtsp-server
encoder : Lavf57.82.101
Stream #0:0: Video: mjpeg, yuvj420p(pc), 1600x600 [SAR 1:1 DAR 8:3],
q=2-31, 200 kb/s, 4 fps, 4 tbn, 4 tbc (default)
Metadata:
encoder : Lavc57.106.101 mjpeg
Side data:
cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1
Past duration 0.999992 too large
frame= 40 fps=0.0 q=24.8 Lsize=N/A time=00:00:10.00 bitrate=N/A dup=0
drop=27 speed= 35x
video:2406kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: unknown
}}}
As I flick through the resulting images sections of the frames
(corresponding the inputs to the hstack) clearly remain the same between
frames sometimes.
Other points that show that I think this is a real problem:
- I get the same result in code and on the command line
- Using the -t 10 option to only dump 10 seconds (the input videos are an
hour long) the 40th image output (the videos are only 4 FPS) is from an
earlier time in the video for the hstack output than if I dump one of the
individual videos to files in the same way (without hstack). Which would
happen if images are being duplicated.
- If I run with the null muxer then it outputs errors that (to my
uneducated eye) seem to indicate exactly this problem is happening:
{{{
$ ffmpeg -i "rtsp://root:root@192.168.13.104/axis-
media/media.amp?camera=1" -i "rtsp://root:root@192.168.13.104/axis-
media/media.amp?camera=2" -i "rtsp://root:root@192.168.13.104/axis-
media/media.amp?camera=3" -filter_complex
"[0:v][1:v][2:v]hstack=inputs=3[v]" -map "[v]" -t 60 -f null -
...
[null @ 0xbe19849b80] Application provided invalid, non monotonically
increasing dts to muxer in stream 0: 155 >= 155
[null @ 0xbe19849b80] Application provided invalid, non monotonically
increasing dts to muxer in stream 0: 156 >= 156
[null @ 0xbe19849b80] Application provided invalid, non monotonically
increasing dts to muxer in stream 0: 157 >= 157
Last message repeated 1 times
[null @ 0xbe19849b80] Application provided invalid, non monotonically
increasing dts to muxer in stream 0: 158 >= 158
Last message repeated 1 times
[null @ 0xbe19849b80] Application provided invalid, non monotonically
increasing dts to muxer in stream 0: 159 >= 159
Last message repeated 1 times
...
}}}
- I've tried with both files and RTSP streams as input (my intention is to
use RTSP in the end)
--
Ticket URL: <https://trac.ffmpeg.org/ticket/6682>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list