This is a fork of ffmpeg, packaged for Zig. Unnecessary
files have been deleted, and the build system has been replaced with
build.zig.
There are no system dependencies; the only thing required to build this package is Zig.
Zig API bindings are also provided via the "av" module. See doc/examples for
API usage examples.
- Only a single static library is produced. There is no option to create a dynamic library.
- The ffmpeg command line tool is not provided. Perhaps this could be added if desired.
- Documentation, tests, and tools are not provided.
- This package enables everything supported by the target; it does not expose configuration options to choose the set of supported codecs and formats.
- The set of external library integrations is fixed.
- libmp3lame
- libvorbis
- libogg
More can be added as desired.
These are the instructions to update this package when a new FFmpeg version is released upstream.
- Merge the new tag into main and resolve all conflicts by replacing the conflicting files with the files from upstream.
find libavcodec/ libavdevice/ libavfilter/ libavformat libavutil/ libswscale/ libswresample/ -type f -name "*.asm" -o -name "*.c" -o -name "*.S"- Edit to omit files ending in
_template.cor_tablegen.c - Sort the list
- Update the
all_sourceslist inbuild.zig.
- Edit to omit files ending in
- Inspect the git diff to keep some of the source files commented out like
they were before. Some handy filtering rules apply:
/Lprefix means Linux-only/Wprefix means Windows-only
- Run
./configure --prefix=$HOME/local/ffmpeg --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-programs --enable-libmp3lame --enable-libvorbis --disable-shared --enable-staticagainst upstream and diff the generatedconfig.hfile to the one generated by this build script. Apply appropriate changes tobuild.zig. - Update these files which are generated by the upstream configure script:
config_components.hlibavfilter/filter_list.clibavcodec/codec_list.clibavcodec/parser_list.clibavcodec/bsf_list.clibavformat/demuxer_list.clibavformat/muxer_list.clibavdevice/indev_list.clibavdevice/outdev_list.clibavformat/protocol_list.c
- Update the
headerslist inbuild.zigbased on what files are present in$HOME/local/ffmpeg/include.