
FFmpeg 4.2 - _Gyan_
http://ffmpeg.org/index.html#pr4.2
======
yboris
Massive "thank you" to FFmpeg for being an amazing tool.

My app pivotally depends on FFmpeg extracting screenshots of videos for users
to browse through: [https://github.com/whyboris/Video-Hub-
App](https://github.com/whyboris/Video-Hub-App)

~~~
benbristow
If you're making money from it, why not donate for future development?
[http://ffmpeg.org/donations.html](http://ffmpeg.org/donations.html)

~~~
davidweatherall
This software is available for $3.50 through videohubapp.com $3.50 of every
sale goes to the cost-effective charity Against Malaria Foundation.

Appears to donate 100% straight to Charity by the looks of it.

~~~
eXpl0it3r
The text is rather confusing. Why not directly mention that the money is fully
donated?

It's great that the author likes supporting a charity/foundation, but as a
customer, I would expect my money to be used to maintain and further develop
the software I pay for. Having all the money directly getting donated, makes
me slightly worry about longevity/maintenance of a product...

~~~
yboris
Author here. I need to clarify my messaging on the website: $3.50 gets donated
with every purchase (even though after fees a $3.50 purchase results in about
$3.00 going to my account). The people who choose to pay more (there are
many!) cover the fees -- huge "thank you" to them.

I'm releasing version 2 in the next 2 months: anyone who ever bought the
software (700+ people) will get the download link in their email.

I keep a log of all the donations:
[https://videohubapp.com/blog.html](https://videohubapp.com/blog.html) \-- you
can click to see the charity website log as well:
[https://www.againstmalaria.com/VideoHubApp](https://www.againstmalaria.com/VideoHubApp)

Happy to answer any questions :)

------
antoineMoPa
In case anyone is confused with FFmpeg, ffmpeg, libav. etc., follow [0]:

[0] [https://stackoverflow.com/questions/9477115/what-are-the-
dif...](https://stackoverflow.com/questions/9477115/what-are-the-differences-
and-similarities-between-ffmpeg-libav-and-avconv/9477756#9477756)

~~~
Jaepa
So what is the difference? This comment looks to be adhomenum remarks on
forks.

If it’s clear and I’m just missing it, sorry i have a temp of 102.3 so I’m a
little hazy.

~~~
kuschku
Most of the core contributors had a fight with the project lead, so many of
them left the project and forked into libav.

So the community and the projects both split, and both fought about being the
real one. And at first, ffmpeg focused only on features, regardless of code
quality, while libav focused on clean code, even if that meant compromising on
features.

Obviously, people who aligned with the project lead, and people wondering why
stuff suddenly didn’t work anymore, were fed up with libav. Even though it was
a situation where libavs codebase was, compared to ffmpeg, much cleaner,
similar to openssl vs libressl, but sacrificed a huge amount of functionality
for that goal.

EDIT: Rephrasing for accuracy

~~~
jorvi
If you check this link[0] you can see most of your statement about FFmpeg
merging everything and Libav being all about clean code is just completely
false. Apparently lots of hardcoding and weird NIH on the Libav side, and a
biased Ubuntu package maintainer to boot.

[0] [http://blog.pkh.me/p/13-the-ffmpeg-libav-
situation.html](http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html)

~~~
devy
That linked article is from 2012, still relevant? In other words, has some of
the things mentioned changed?

~~~
cwyers
The big change since then is that Debian switched back to ffmpeg:

[https://lwn.net/Articles/650816/](https://lwn.net/Articles/650816/)

------
saghul
> AV1 decoding support through libdav1d

Nice to see progress in the AV1 front!

------
minimaxir
What exactly is the "GIF parser"? I thought FFmpeg already did GIF I/O.

~~~
sp332
Looking at comments on [https://stackoverflow.com/questions/53460876/process-
gif-usi...](https://stackoverflow.com/questions/53460876/process-gif-using-
ffmpeg-libraries-cant-find-parser-at-av-parser-init) there was only a demuxer,
no parser. I'm not sure why you'd need a parser but according to
[https://superuser.com/a/787073](https://superuser.com/a/787073) ffmpeg always
treated GIFs as movies, so maybe this is a way to tell which GIFs are single
images?

~~~
astrange
IIRC parsers let it reconstruct metadata from files that aren't muxed, or
inaccurately muxed. For instance, you'd need one to read raw .h264 files
properly into .mp4.

Not sure how that would apply to GIF.

~~~
_Gyan_
Parsers typically are used to correctly demarcate packet boundaries in (coded)
bitstreams e.g. H.264 bitstream is partitioned into NAL units and the parser
assembles all relevant units for a single frame/slice so that the decoder gets
everything it needs to decode that sample, nothing more, nothing less.

~~~
astrange
Well I should hope it does more by now because that's not enough information
to mux an H.264 stream. You need to recover PTS/DTS offsets, keyframe types,
SPS, etc.

~~~
_Gyan_
> not enough information to mux an H.264 stream.

The parser is inserted after _demux_ and before _decode_.

Yes, xPS are also located and decoded. My comment wasn't meant to be an
enumeration. Specific tasks depend on the complexity of the bitstream syntax.

------
rolltiide
remember the dark ages when we had to actually care about codecs and which
ones were installed at any given point in time?

~~~
dguaraglia
Bwahaha, I still remember getting those 'codepacs' for Windows that'd install
like 20 codecs at the same time, including one that was a thin wrapper around
libav/ffmpeg. 99% sure half of those violated all kinds of EULAs and copyright
issues.

~~~
rolltiide
> 99% sure half of those violated all kinds of EULAs and copyright issues.

by the time you got there you were way past that point.

------
thwythwy
Does this play nice with Python youtube-dl? [1] [2]. I want to run a python
script on my computer that captures youtube audio of certain government
meetings without first having to dl the entire video and convert it (while
doing a bunch of other stuff before and after automatically, all without me
touching anything).

[1] [https://stackoverflow.com/questions/27473526/download-
only-a...](https://stackoverflow.com/questions/27473526/download-only-audio-
from-youtube-video-using-youtube-dl-in-python-script)

[2] [https://stackoverflow.com/questions/39665160/youtube-dl-
pyth...](https://stackoverflow.com/questions/39665160/youtube-dl-python-
script-postprocessing-error-ffmpeg-codecs-arent-being-recogn)

~~~
icebraining
Unless you need to convert the audio format, I don't think you need ffmpeg at
all - youtube-dl can just download the audio stream and save it to a file.
Just list the available formats from a video and choose an audio-only format.

~~~
Nullabillity
Also, IIRC youtube-dl will automatically re-encode it using ffmpeg if you pick
an unavailable format!

------
danabrams
Can't say I blame them for the removal of libndi-newtek, given the situation,
but I wish FFMpeg (and gstreamer) had ndi support.

Would love to see an open source NDI, but I know newtek will never allow it.

~~~
jsight
That is actually really sad. I wonder what are the chances of someone
reimplementing NDI support as FOSS?

~~~
danabrams
I don’t think it’s just an implementation problem. I think there are patent
issues preventing this.

Newtek should really bite the bullet and just open source, and make their
money on the hardware.

~~~
huslage
I don’t think it has anything to do with patents. Anyone can use the library
for free. NewTek just doesn’t want to open source the library.

~~~
seandougall
Even though they don’t charge for the library, they have a lot riding on the
perception of the quality of their protocol. If they allow third party
implementations and some of them suck, it might tarnish NDI’s image (and
indirectly hurt them via the money they make on hardware).

Edit: I’m certainly not arguing that any particular implementation does suck,
just saying that I can see why they might want to protect IP they don’t make
money from directly.

------
KuhlMensch
Is there anything in the new release that would allow an encoder to be
"motion-aware"?

e.g. if the video is static, don't store any information. But if there is
movement in the video, start storing frames etc

WHY? I find myself recording lots of videos of me talking through code in an
IDE. The screen mostly static, with some occasional the screen scrolling. The
regular tradeoff-space afforded by CRF doesn't seem to get me the size results
I believe are possible.

~~~
hackcasual
This might be helpful: [https://video.stackexchange.com/questions/24680/what-
is-keyi...](https://video.stackexchange.com/questions/24680/what-is-keyint-
and-min-keyint-and-no-scenecut)

If you're storing video only for offline viewing with minimal seeking, you can
increase the iframe seperation, but if you're streaming this video, you'll
need to pay the cost of including iframes to allow clients to seek or recover
from dropped packets.

~~~
nullwasamistake
This guy is totally right. When there's no change on screen a huge percentage
of bandwidth is from iframes, essentially start over points for fast forward
and network corruption.

There's a tradeoff between skip/fast forward fidelity, streaming delay, and
iframes. If you're not live streaming and don't care how easy it is to skip
around the video increase the iframes inverval as much as you want and watch
the bitrate melt away

------
LAMike
Is there any higher level libraries for JS that wrap FFmpeg commands cleaner?

I'm building some software on using it is kind of cumbersome

~~~
evangow
I haven't used it, but I believe JIMP might work for you if you're looking for
a JS solution to image manipulation

[https://github.com/oliver-moran/jimp](https://github.com/oliver-moran/jimp)

~~~
h1d
For images, you'd want to use a more performant 'sharp'.

[https://github.com/lovell/sharp](https://github.com/lovell/sharp)

Benchmark

[https://sharp.pixelplumbing.com/en/stable/performance/](https://sharp.pixelplumbing.com/en/stable/performance/)

------
citrusui
A little confused on what they mean by PCM-DVD encoder. Wasn't ffmpeg always
able to do this?

~~~
_Gyan_
PCM-DVD has a specific way in how the channels are interleaved. For bit depths
higher than 16, each sample is split so that the lowest byte is stored
following the high bytes of all channels. There's also a 3-byte metadata which
has to be prefixed to each packet. All of these steps could have been done via
a bitstream filter but since the codec_id is different, this has to be done at
the encoding stage.

~~~
citrusui
Thanks for the info! Is there any resource online that I can look into to
learn more? I'm not certain I know how audio interleaving works.

~~~
_Gyan_
See
[https://wiki.multimedia.cx/index.php/PCM#DVD_PCM](https://wiki.multimedia.cx/index.php/PCM#DVD_PCM)

------
josteink
Nice to see improved HEVC 4:4:4 support in Linux.

