The doding of packets of a video stream does not yield all the frames.
Created by: g-kartik
IMPORTANT: Be sure to replace all template sections {{ like this }} or your issue may be discarded.
Overview
{{ The number of frames decoded from the packets of a video stream is one less than total number of actual frames }}
Expected behavior
{{ Decoding of video stream packets should yield all frames and should not miss any }}
Actual behavior
{{ One frame is missing while decoding frames of the video stream }}
Traceback:
{{ Include complete tracebacks if there are any exceptions. }}
Investigation
{{ What you did to isolate the problem. }}
Reproduction
{{ `container = av.open('any_video.mp4, mode='r')
frame_count = 0 for packet in container.demux(video=0): for frame in packet.decode(): frame_count += 1
original_frame_count = container.streams.video[0].frames
assert original_frame_count == frame_count + 1 ` }}
Versions
- OS: {{ e.g. manjaro 21.2.6 }}
- PyAV runtime: 9.2.0
{{ PyAV v9.2.0
library configuration: --disable-static --enable-shared --libdir=/tmp/vendor/lib --prefix=/tmp/vendor --disable-alsa --disable-doc --disable-mediafoundation --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-lzma --enable-version3 --enable-zlib
library license: GPL version 3 or later
libavcodec 58.134.100
libavdevice 58. 13.100
libavfilter 7.110.100
libavformat 58. 76.100
libavutil 56. 70.100
libswresample 3. 9.100
libswscale 5. 9.100
}}
- PyAV build:
{{ Complete output of `python setup.py config --verbose`. }}
- FFmpeg:
{{ ffmpeg version n5.0 Copyright (c) 2000-2022 the FFmpeg developers
built with gcc 11.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-libsvtav1 --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 57. 17.100 / 57. 17.100
libavcodec 59. 18.100 / 59. 18.100
libavformat 59. 16.100 / 59. 16.100
libavdevice 59. 4.100 / 59. 4.100
libavfilter 8. 24.100 / 8. 24.100
libswscale 6. 4.100 / 6. 4.100
libswresample 4. 3.100 / 4. 3.100
libpostproc 56. 3.100 / 56. 3.100 }}
Research
I have done the following:
-
Checked the PyAV documentation -
Searched on Google -
Searched on Stack Overflow -
Looked through old GitHub issues -
Asked on PyAV Gitter -
... and waited 72 hours for a response.
Additional context
{{ Add any other context about the problem here. }}