FFmpeg git repo
Go to file
Andreas Rheinhardt 6b1968e939 avformat/matroskaenc: Avoid seeks when writing EBML header
Using start/end_ebml_master() to write an EBML Master element
uses seeks under the hood. This does not work if the output is
unseekable with the AVIOContext's buffer being very small
(the size of the currently written Matroska EBML header is 40)
or with the AVIOContext being in direct mode, because then
this seek can't be performed in the AVIOContext's buffer.
So using an approach that does not rely on seeking at all
is preferable; this is achieved by switching to EbmlWriter.

Also factor writing the EBML header out into a function of its own.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-01-19 11:40:56 +01:00
compat
doc lavc/qsvenc_hevc: add -pic_timing_sei option 2022-01-18 16:25:33 +08:00
ffbuild Makefile: Redo duplicating object files in shared builds 2022-01-04 05:01:04 +01:00
fftools fftools/cmdutils: Fix undefined 1 << 31 2022-01-11 00:20:35 +01:00
libavcodec lavc/qsvenc_hevc: add -pic_timing_sei option 2022-01-18 16:25:33 +08:00
libavdevice avdevice/iec61883: #if unused code away, fix -O0 compilation 2022-01-08 18:15:18 +01:00
libavfilter avfilter/tonemap_vaapi: set va parameters filters and numbers 2022-01-17 16:32:17 +08:00
libavformat avformat/matroskaenc: Avoid seeks when writing EBML header 2022-01-19 11:40:56 +01:00
libavutil avutil/parseutils: use quadhd for Quad HD 2022-01-12 13:42:26 +08:00
libpostproc lib*/version.h: Bump Versions after release/5.0 branch 2022-01-04 14:29:06 +01:00
libswresample lib*/version.h: Bump Versions after release/5.0 branch 2022-01-04 14:29:06 +01:00
libswscale swscale/x86/input.asm: add x86-optimized planer rgb2yuv functions 2022-01-11 16:34:33 -03:00
presets
tests avformat/matroskaenc: Don't waste bytes on AttachedFiles' length fields 2022-01-19 11:37:39 +01:00
tools tools/target_dec_fuzzer: Adjust threshold for prores 2021-12-16 21:06:47 +01:00
.gitattributes
.gitignore build: detect Metal.framework and build .metal files 2021-12-18 11:55:47 -08:00
.mailmap
.travis.yml
CONTRIBUTING.md
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
Changelog Changelog: Add new <next> line after 5.0 2022-01-05 08:37:55 -03:00
INSTALL.md
LICENSE.md
MAINTAINERS MAINTAINERS: add my gpg fingerprint 2021-12-23 09:25:16 +08:00
Makefile Makefile: Redo duplicating object files in shared builds 2022-01-04 05:01:04 +01:00
README.md
RELEASE
configure avfilter: add overlay vaapi filter 2022-01-17 16:32:17 +08:00

README.md

FFmpeg README

FFmpeg is a collection of libraries and tools to process multimedia content such as audio, video, subtitles and related metadata.

Libraries

  • libavcodec provides implementation of a wider range of codecs.
  • libavformat implements streaming protocols, container formats and basic I/O access.
  • libavutil includes hashers, decompressors and miscellaneous utility functions.
  • libavfilter provides means to alter decoded audio and video through a directed graph of connected filters.
  • libavdevice provides an abstraction to access capture and playback devices.
  • libswresample implements audio mixing and resampling routines.
  • libswscale implements 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, ismindex and qt-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.