We are operating with semantic versioning <http://semver.org/>. However,
we are using v0.x.y as our heavy development period, and will increment x
to signal a major change (i.e. backwards incompatibilities) and increment
y as a minor change (i.e. backwards compatible features).
Major:
CodecContexthas taken over encoding/decoding, and can work in isolation of streams/containers.Stream.encodereturns a list of packets, instead of a single packet.AudioFifoandAudioResamplerwill raiseValueErrorif input frames inconsistantpts.time_baseuse has been revisited across the codebase, and may not be converted bettweenStream.time_baseandCodecContext.time_baseat the same times in the transociding pipeline.CodecContext.ratehas been removed, but proxied toVideoCodecContext.framerateandAudioCodecContext.sample_rate. The definition is effectively inverted from the old one (i.e. for 24fps it used to be1/24and is now24/1).- Fractions (e.g.
time_base,rate) will beNoneif they are invalid. InputContainer.seekandStream.seekwill raise TypeError if given a float, when previously they converted it from seconds.
Minor:
- Added
Packet.is_keyframeandPacket.is_corrupt. (#226.) - Many more
time_base,ptsand other attributes are writeable. Optionexposes much more of the API (but not get/set). (#243).
Fixes:
- Build doesn't fail if you don't have git installed. (#184.)
Fixes:
- Fix segfault due to buffer overflow in handling of stream options. (#163 and #169.)
- Fix segfault due to seek not properly checking if codecs were open before using avcodec_flush_buffers. (#201.)
Minor:
- Expose basics of avfilter via
Filter. - Add
Packet.time_base. - Add
AudioFrame.to_nd_arrayto match same onVideoFrame. - Update Windows build process.
Fixes:
- Further improvements to the logging system, continued from #128.
Minor:
av.logging.set_log_after_shutdownrenamed toset_print_after_shutdown- Repeating log messages will be skipped, much like ffmpeg's does by default
Fixes:
- Fix memory leak in logging system when under heavy logging loads while threading (#128 with help from @mkassner and @ksze)
Major:
- Python IO can write
- Improve build system to use Python's C compiler for function detection; build system is much more robust
- MSVC support (#115 by @vidartf)
- Continuous integration on Windows via AppVeyor (by @vidartf)
Minor:
- Add
Packet.decode_one()to skip packet flushing for codecs that would otherwise error StreamContainerfor easier selection of streams- Add buffer protocol support to Packet
Fixes:
- Fix bug when using Python IO on files larger than 2GB (#109 by @xxr3376)
- Fix usage of changed Pillow API
Known Issues:
- VideoFrame is suspected to leak memory in narrow cases on Linux (#128)
- fix library search path for current Libav/Ubuntu 14.04 (#97)
- explicitly include all sources to combat 0.2.3 release problem (#100)
Warning
There was an issue with the PyPI distribution in which it required Cython to be installed.
Major:
- Python IO.
- Agressively releases GIL
- Add experimental Windows build (#84)
Minor:
- Several new Stream/Packet/Frame attributes
Fixes:
- Fix segfault in audio handling (#86 and #93)
- Fix use of PIL/Pillow API (#85)
- Fix bad assumptions about plane counts (#76)
- Cythonization in setup.py; mostly a development issue.
- Fix for av.InputContainer.size over 2**31.
- Python 3 compatibility!
- Build process fails if missing libraries.
- Fix linking of libavdevices.
Warning
This version has an issue linking in libavdevices, and very likely will not work for you.
It sure has been a long time since this was released, and there was a lot of arbitrary changes that come with us wrapping an API as we are discovering it. Changes include, but are not limited to:
- Audio encoding.
- Exposing planes and buffers.
- Descriptors for channel layouts, video and audio formats, etc..
- Seeking.
- Many many more properties on all of the objects.
- Device support (e.g. webcams).
- FIRST PUBLIC RELEASE!
- Container/video/audio formats.
- Audio layouts.
- Decoding video/audio/subtitles.
- Encoding video.
- Audio FIFOs and resampling.