mirror of
https://github.com/jellyfin/jellyfin-ffmpeg.git
synced 2026-09-03 05:09:58 +03:00
e0f403dfdb5b30a378ac5d5c28a6748d16cd8d72
only_first_vframe originally waited for the first decoded frame from every video stream. That breaks on files with multiple video streams where one target stream never reaches "first frame seen" in this path. For example, a Matroska file with one real HEVC video stream and two attached-picture streams (PNG and JPEG). With -threads 1, all three streams were marked finished quickly. With -threads 0, the attached PNG stream was opened with auto threading, its only packet was consumed, but avcodec_receive_frame() returned EAGAIN and no frame was emitted. Since that stream had no second packet, it never became finished. ffprobe then kept demuxing the rest of the file while waiting for all target video streams to finish, which could read essentially to EOF and appear to consume unbounded memory. Fix this in two ways: - exclude attached-picture streams from the only_first_vframe target set, so the mode only waits for real video streams - change the safety fallback from counting packets for unresolved target streams to counting overall scanned packets, so even unknown future cases still terminate instead of scanning forever This preserves the intended "first real video frame" behavior while making the mode safe for problematic multi-stream inputs.
FFmpeg README
FFmpeg is a collection of libraries and tools to process multimedia content such as audio, video, subtitles and related metadata.
Libraries
libavcodecprovides implementation of a wider range of codecs.libavformatimplements streaming protocols, container formats and basic I/O access.libavutilincludes hashers, decompressors and miscellaneous utility functions.libavfilterprovides means to alter decoded audio and video through a directed graph of connected filters.libavdeviceprovides an abstraction to access capture and playback devices.libswresampleimplements audio mixing and resampling routines.libswscaleimplements color conversion and scaling routines.
Tools
- ffmpeg is a command line toolbox to manipulate, convert and stream multimedia content.
- ffplay is a minimalistic multimedia player.
- ffprobe is a simple analysis tool to inspect multimedia content.
- Additional small tools such as
aviocat,ismindexandqt-faststart.
Documentation
The offline documentation is available in the doc/ directory.
The online documentation is available in the main website and in the wiki.
Examples
Coding examples are available in the doc/examples directory.
License
FFmpeg codebase is mainly LGPL-licensed with optional components licensed under GPL. Please refer to the LICENSE file for detailed information.
Contributing
Patches should be submitted to the ffmpeg-devel mailing list using
git format-patch or git send-email. Github pull requests should be
avoided because they are not part of our review process and will be ignored.
Languages
C
89.2%
Assembly
8.2%
Makefile
1.3%
Shell
0.5%
C++
0.3%
Other
0.4%