
FFmpeg 4.3 - mfilion
http://ffmpeg.org/download.html#release_4.3
======
anderspitman
In case you didn't know, you can use FFmpeg to convert Audible aax files to
DRM-free MP3/AAC/whatever [0] (scroll down for FFmpeg instructions).

This is useful if for some reason you want to archive them or play them in an
app that doesn't constantly change its UI and bombard you with ads.

[0]: [https://www.kylepiira.com/2019/05/12/how-to-break-audible-
dr...](https://www.kylepiira.com/2019/05/12/how-to-break-audible-drm/)

~~~
TheAceOfHearts
If you're converting .aax files you should consider using .m4b as the output,
since it preserves chapters and remembers your last listened timestamp [0]:

> Audiobook and podcast files, which also contain metadata including chapter
> markers, images, and hyperlinks, can use the extension .m4a, but more
> commonly use the .m4b extension. An .m4a audio file cannot "bookmark"
> (remember the last listening spot), whereas .m4b extension files can.

The cool thing is that once you rip your activation bytes, it works for all
your audiobooks. Would definitely recommend it.

[0]
[https://en.wikipedia.org/wiki/MPEG-4_Part_14](https://en.wikipedia.org/wiki/MPEG-4_Part_14)

~~~
Youden
I don't think that's quite accurate.

There's no functional difference between a .m4b file and a .m4a file. Both use
the MP4 container so adhere to the same specification, so support all the same
features (including bookmarks). FFmpeg even uses the same muxer and demuxer
for both "formats".

The only difference is a non-standard convention used by certain software
(like iTunes) to write autiobook-related metadata only to MP4 files that use
the .m4b file extension.

You'll get exactly the same result if you just change the file extension after
remuxing/transcoding.

~~~
apetresc
Wait, so an m4b stores playback position in the file itself? As in, the
checksum will change and file syncers like Syncthing will re-upload every time
I hit pause?

~~~
encom
No, that's entirely player-specific and has nothing to do with the MP4 format
at all.

------
tbran
I wanted to create a slideshow a couple weeks ago and came across this article
[0] on creating a Ken Burns Effect Slideshow. Very cool and is a great demo of
some of ffmpeg's functionality.

However, the final command is a little crazy:

    
    
      ffmpeg -i 1.jpg -i 2.jpg -i 3.jpg 
      -filter_complex "color=c=black:r=60:size=1280x800:d=10[black];[0:v]format=pix_fmts=yuva420p,crop=w=2*floor(iw/2):h=2*floor(ih/2),zoompan=z='if(eq(on,1),1,zoom+0.000417)':x='0':y='ih-ih/zoom':fps=60:d=60*4:s=1280x800,crop=w=1280:h=800:x='(iw-ow)/2':y='(ih-oh)/2',fade=t=in:st=0:d=1:alpha=0,fade=t=out:st=3:d=1:alpha=1,setpts=PTS-STARTPTS[v0];[1:v]format=pix_fmts=yuva420p,crop=w=2*floor(iw/2):h=2*floor(ih/2),pad=w=9600:h=6000:x='(ow-iw)/2':y='(oh-ih)/2',zoompan=z='if(eq(on,1),1,zoom+0.000417)':x='0':y='0':fps=60:d=60*4:s=1280x800,fade=t=in:st=0:d=1:alpha=1,fade=t=out:st=3:d=1:alpha=1,setpts=PTS-STARTPTS+1*3/TB[v1];[2:v]format=pix_fmts=yuva420p,crop=w=2*floor(iw/2):h=2*floor(ih/2),zoompan=z='if(eq(on,1),1,zoom+0.000417)':x='0':y='0':fps=60:d=60*4:s=1600x800,crop=w=1280:h=800:x='(iw-ow)/2':y='(ih-oh)/2',fade=t=in:st=0:d=1:alpha=1,fade=t=out:st=3:d=1:alpha=0,setpts=PTS-STARTPTS+2*3/TB[v2];[black][v0]overlay[ov0];[ov0][v1]overlay[ov1];[ov1][v2]overlay=format=yuv420"
      -c:v libx264 out.mp4
    

[0] [https://el-tramo.be/blog/ken-burns-ffmpeg/](https://el-tramo.be/blog/ken-
burns-ffmpeg/)

~~~
crispyambulance
FFmpeg is _infamous_ for absurdly complex command options. It's really too
much for a "one-liner" CLI.

When I use it, I just look for "pre-baked recipes" otherwise it's a really
unpleasant rabbit hole to get into.

~~~
danudey
If you look at it as more of a "composable" interface (as the sibling poster
suggested), it makes a lot more sense.

No one is going to type out this one-liner from scratch, or have an easy time
understanding what it means by reading it, but as it's made up of a series of
smaller, more easily understood commands, in a shell or Python script it could
be vastly more legible and, dare I say it, usable.

This is also the reason why there are so many frontends to ffmpeg, to simplify
various specific tasks. I can't count how many one-off apps I've seen that do
one thing and do it well, and just ship a full copy of ffmpeg to do that one
thing. Making an actual GUI for all of this would be just... insane, really,
but it's so versatile and flexible that you can basically do anything with it.

~~~
rezonant
> Making an actual GUI for all of this would be just... insane, really, but
> it's so versatile and flexible that you can basically do anything with it.

Challenge accepted! (No seriously, that's what I'm working on)

------
ChrisMarshallNY
I have used ffmpeg. It's a damn good project, and under current development
and support.

It also appears to be the only game in town. Many commercial offerings are
really just veneers over custom ffmpeg implementations.

Tuning it is also pretty crazy. Some folks can make entire careers out of just
tuning ffmpeg.

I think the biggest issue with video software (besides it being difficult and
performance-intensive), is the prevalence of a lot of old, highly-enforceable
patents.

Video has been around a while, and companies like Ampex patented a heck of a
lot of stuff that can easily be applied to current video.

ffmpeg actually has a couple of build configs that are designed to remove
coercive-licensed components.

I'm not so happy about that, but it's the world we live in.

I do have a project that I was playing around with (and will get back to,
sooner or later), where I made a simple MacOS wrapper for ffmpeg:

[https://github.com/RiftValleySoftware/RVS_MediaServer](https://github.com/RiftValleySoftware/RVS_MediaServer)

I wrote about that, here:

[https://littlegreenviper.com/series/streaming/](https://littlegreenviper.com/series/streaming/)

~~~
unilynx
It's not the only game in town, the other major open source project for
audio/video coding is gstreamer.
[https://gstreamer.freedesktop.org](https://gstreamer.freedesktop.org)

~~~
Budabellly
It is worth mentioning that it's fairly common to use FFmpeg via gstreamer in
the form of plugin.

[https://packages.debian.org/stretch/gstreamer1.0-libav](https://packages.debian.org/stretch/gstreamer1.0-libav)

------
0x402DF854
I use FFMPEG as a thermostat to keep my apartment nice and warm :) I encode
all of my videos (phone, DSLR, dash cameras) to h265 on my Ryzen workstation
when it's not use. I have a primitive "PID-controller" script pulling
temperatures from influxdb (data collected using a few esp8266 with ds18b20
sensors) and adjusting -threads parameter accordingly. It automatically
adjusts presets (slow, veryslow, placebo, etc) depending on number of videos
in the queue, so it never runs out of material to encode :) It saves me from
using stinky baseboard heaters and reduces my HDD bills!

~~~
collinmanderson
This is amazing. If your alternative is a non-heatpump electric heater, then
why not? :)

------
MisterPea
Can someone explain to me how FFmpeg seems to be the only open-source software
to do even just basic functionality with audio.

I was looking at getting the sound wave graph for a piece of audio a while
ago, and not only was FFmpeg the only option I found to be able to do it, it
was amazingly fast and also free.

~~~
klodolph
SoX is _amazing._ [http://sox.sourceforge.net/](http://sox.sourceforge.net/)

It’s not perfect but it’s way easier to use for audio stuff than FFmpeg is. I
have a bunch of scripts I reuse that do basic stuff like high-pass, normalize,
automatically trim audio files, add fade-in or fade-out, downmix to mono, and
then resample / dither to the right depth and size.

It also will spit out spectrograms.

Generally when I need to record a ton of sound clips, I chop the audio up and
rename it in a GUI editor similar to Audacity, and then do all the processing
in SoX. I might also do a bunch of work in a DAW beforehand.

~~~
hiram112
I hadn't even thought about SOX 'till your comment in about 10 years. And
looking at the page, there hasn't been a new release since 2015.

From what I recall, it only worked on wav files back in the day, but now it
supports OGG. But a lot has changed in even 5 years - does it even support
MP3, as patents expired since then?

~~~
JNRowe
> From what I recall, it only worked on wav files back in the day

It depends on your build, but on my system it supports: 8svx aif aifc aiff
aiffc al amb amr-nb amr-wb anb au avr awb caf cdda cdr cvs cvsd cvu dat dvms
f32 f4 f64 f8 fap flac fssd gsm gsrt hcom htk ima ircam la lpc lpc10 lu mat
mat4 mat5 maud mp2 mp3 nist ogg paf prc pvf raw s1 s16 s2 s24 s3 s32 s4 s8 sb
sd2 sds sf sl sln smp snd sndfile sndr sndt sou sox sph sw txw u1 u16 u2 u24
u3 u32 u4 u8 ub ul uw vms voc vorbis vox w64 wav wavpcm wv wve xa xi. You can
check your own with `sox --help`.

On Debian mp3 support requires `libsox-fmt-mp3`.

------
umaar
As a little side project, I've been trying to automate creation of those "1
second everyday" style videos [1], and used FFmpeg to achieve this.

For things like trimming and concatenating videos, one thing that surprised me
was that it was slower than using a tool like ScreenFlow. Note, we're talking
about hundreds of gigabytes worth of 4K videos.

slower = When I say slower, I mean, if I manually performed the same operation
in a professional video editing tool like ScreenFlow, the time it took
ScreenFlow to export a video was quicker than the time it took FFmpeg to
finish executing the command.

Interestingly, there seems to be a fast and a slow way to do things in FFmpeg
[2]. The slow way is free of quirks, whereas the fast way introduces something
unexpected to the video, like a half a second of a black screen with audio
continue playing like normal.

I'm still curious as to how a tool like ScreenFlow can achieve faster
trimming/concatenation/subtitle overlaying, than FFmpeg. I suspect if I read
their documentation and do some more research, I'll discover a more optimal
way of ordering the various flags on the command line which can speed up the
execution, while preserving accuracy.

[1] [https://github.com/umaar/video-everyday](https://github.com/umaar/video-
everyday)

[2] [https://superuser.com/questions/499380/accurate-cutting-
of-v...](https://superuser.com/questions/499380/accurate-cutting-of-video-
audio-with-ffmpeg)

~~~
vanderZwan
> _" 1 second everyday" style videos_

Tangent: you reminded me of one of the coolest auditory experiences I've ever
had. Roughly one-and-a-half decades ago I attended a public lecture by Olivier
Nijs, a sound design guy from my region[0], about how he built an automated
set-up from an old desktop to record one second of 7:00 in the morning every
day. Then he manually cut together one whole year. The amazing thing about it
was that after a few seconds the long-term trends really started to become
noticeable. The changing sounds of birds, people and other living things. How
rains in spring were somehow just a little different than the rains in summer
or autumn. It was really, really amazing.

(the artist himself wasn't that impressed with his own work - perhaps he saw
someone else do it before and didn't feel like showing off with something
unoriginal or something?)

[0] [https://www.oliviernijs.nl/](https://www.oliviernijs.nl/)

~~~
nneonneo
Not being able to read Dutch, do you happen to have a direct link to the
lecture or the recording he made?

~~~
Cactus2018
i'm thinking it's audio only. Maybe it's hiding here?

[https://soundcloud.com/oliviernijs](https://soundcloud.com/oliviernijs)

~~~
chewzerita
My guess is this one:
[https://soundcloud.com/oliviernijs/perdag1900](https://soundcloud.com/oliviernijs/perdag1900)

~~~
vanderZwan
That's seven in the afternoon, I guess I misremembered! Thank you so much for
finding it! :)

EDIT: This is six in the morning, maybe I heard that version
[https://soundcloud.com/oliviernijs/perdag600](https://soundcloud.com/oliviernijs/perdag600)

------
tambourine_man
ffmpeg is amazing, but it’s like tar on steroids: I can never remember the
right incantation. Google is required for even the simplest of things.

I don’t know if it’s their goal, but I’d love a more user friendly set of
command line arguments.

~~~
crazygringo
This is where GUI's shine, as opposed to command-line.

Perhaps this is slightly off-topic, but my dream is an interface that combines
the best of both worlds.

Kind of an automated GUI-builder for command-line tools, that analyzes the
combinations of options used most, breaks them down into workflows with
options (that can be manually named), and you can thus execute one-off
commands easily and quickly without having to hunt through man pages, but
still export the command as a command-line incantation for reuse, to use in a
script, etc.

~~~
darzu
This sounds great! Expanding on this a little:

Seems like you'd need a universal CLI tool usage traverser and parser to
figure out what's possible. Likely this would produce a decision tree of sorts
with different modes and options excluding or including new options. We'd need
a way to show all this, maybe nested tabs for modes and check boxes and other
inputs at each appropriate level.

Layer on this a way to optimize for the most common cases like you said.
Further, if this becomes popular, CLI tools could emit some sort of standard
description language that would optionally customize the GUI. The GUI's output
should be both the text command it constructed and the ability to run that
command directly.

More future steps would be a way to reason about multiple commands, pipes, and
other combinators.

Adding this to my side projects backlog. Thanks for the idea!

~~~
iib
In the emacs world, there are textual interfaces like magit's [0] or dired's
[1] interface, that tick many, perhaps most, boxes that you mention. Magit is
basically that interface, but tailored to `git`, that also constructs the
actual git command, should you want to see it. Dired is like that for ls, rm,
cp, mv and other file utils. So, as a general design, they _may_ be of useful
interest.

A tool to automatically parse `man` pages or help prompts from tools would be
a dream come true, basically.

Apart from the possible commands, it may be useful for the GUI to also show
some kind of state, for example filesize (akin to invoking `ls` before
`ffmpeg`, as you would normally do on the CLI).

Done with the right abstractions, command combinations should come almost for
free.

[0] [https://magit.vc/](https://magit.vc/) [1]
[https://en.wikipedia.org/wiki/Dired](https://en.wikipedia.org/wiki/Dired)

------
oliwarner
I love ffmpeg but those release notes suck.

If all you can say is how much time there's been, why isn't this just 4.2.4?

I suspect there _are_ major features and improvements buried in the 30 pages
of commits.

[https://git.ffmpeg.org/gitweb/ffmpeg.git/blob/refs/heads/rel...](https://git.ffmpeg.org/gitweb/ffmpeg.git/blob/refs/heads/release/4.3:/RELEASE_NOTES)

~~~
apocalyptic0n3
There is an actual changelog, but it's just as sparse on details. At the very
least tell me whether those filters are new, removed, fixed, etc.

[https://git.ffmpeg.org/gitweb/ffmpeg.git/blob/HEAD:/Changelo...](https://git.ffmpeg.org/gitweb/ffmpeg.git/blob/HEAD:/Changelog)

~~~
erk__
Now this sounds interesting

    
    
       - LEGO Racers ALP (.tun & .pcm) demuxer
    

I think I will dig through to figure out what that actually means later.

~~~
Denvercoder9
ffmpeg can now extract data from the .tun & .pcm file formats (but it might
not be able to decode it yet, depending on the encoding used in such files).

~~~
vs49688
It can, that's what the "High Voltage Software ADPCM decoder"'s for.

------
sorenjan
With so much video processing research using neural networks now I hope ffmpeg
gets better support for it. They have some filters that use them, like sr[0]
for super resolution and dnn_processing for general processing, but the user
experience isn't great. They need a model file that's not included, and you
need to train one yourself since there doesn't seem to be any included.
Hopefully they add better support in the future, together with more dnn
filters.

[0] [https://ffmpeg.org/ffmpeg-filters.html#sr](https://ffmpeg.org/ffmpeg-
filters.html#sr)

------
minimaxir
Changelog:
[https://github.com/FFmpeg/FFmpeg/blob/master/Changelog](https://github.com/FFmpeg/FFmpeg/blob/master/Changelog)

Seems like the big feature is Vulkan support?

~~~
mfilion
Excellent summary of changes here: [https://9to5linux.com/ffmpeg-4-3-released-
with-vulkan-suppor...](https://9to5linux.com/ffmpeg-4-3-released-with-vulkan-
support-amd-amf-encoder-and-avisynth/)

~~~
saagarjha
TIL there’s a 9to5Linux. Is it new/affiliated with the other 9to5 properties?

~~~
pfranz
Looking at their respective About pages they seem unrelated:

[https://9to5mac.com/about/](https://9to5mac.com/about/)

[https://9to5linux.com/about-us](https://9to5linux.com/about-us)

------
cerberusss
ffmpeg is fantastic. I'm an iOS dev and when I put something on Github, I
first record the iOS simulator with QuickTime. Then I convert the resulting
.mov file with ffmpeg:

    
    
        ffmpeg -i example.mov -r 15 example.gif
    

Voilà, an animated gif. Quality is atrocious but it gets the message across,
plus the filesize is not too big.

~~~
izacus
If you're prepared to run ffmpeg twice (allowing it to analyze the GIF), the
quality will be significantly better:
[https://cassidy.codes/blog/2017/04/25/ffmpeg-frames-to-
gif-o...](https://cassidy.codes/blog/2017/04/25/ffmpeg-frames-to-gif-
optimization/)

~~~
_Gyan_
No need to run it twice.

Basic syntax is

    
    
        ffmpeg -i video -filter_complex "[0]split[vid][pal];[pal]palettegen[pal];[vid][pal]paletteuse" out.gif
    

ffmpeg 4.0 and later will automatically insert fifo buffers for the main video
while one copy is analyzed to generate the palette.

------
cooper12
FFmpeg is hands down one of the most powerful and feature-packed tools I've
used out there.[0] The associated complexity is also daunting, but thankfully
there's a lot of documentation out there and it reflects the low level nuances
of audiovisual formats.

I highly recommend anyone struggling to utilize it to write wrapper scripts
around it so you only need to figure out things once. Here are some things
I've done with it by that approach:

* Extracting any embedded subtitle files from MKVs. Nice if I want to search them or make changes.

* Back when GIFs were more popular, I converted any that were over 3MB to video to save space. If the output wasn't small enough, it would do a second pass with different settings to get it more compact. Not needed that much these days.

* "Barcodes" for videos, that is, it takes every second converted to a vertical sliver and combined you get an overview of how the average color of the film changes through its duration.

* A tool for creating video excerpts that lets me specify a start time and end time in more flexible timestamp formatting, and other things like a simple parameter for the output width.[1] It also allowed specifying a target filesize and did the math so the right bitrate would be chosen. I even include metadata so I know which original file it was made from and the parameters specified.

* Thumbnail previews. A lot of file sharing sites will include a file that includes some timestamped screenshots in a grid with encoding information at the top. This is good for movies so you see a high-level overview. The best part about doing this myself is that I could make it highly configurable, like choosing exactly how many images I want, the interval, whether I want timestamps, etc.

Note, for some of these, I also needed ImageMagick.

Also, when compiled with the right flags and libraries, FFmpeg has some really
neat features: things like embedding subtitles, stabilizing video, hiding
logos, etc. I recommend looking into the filters.

Thank you for all the manpower that goes into the project!

[0]: Two other ones that are also powerful are ImageMagick and Pandoc.

[1]: I initially wrote this in Bash, but later converted the code to Python to
better handle command line arguments and allow things like using config files.

------
whoisjohnkid
ffmpeg is absolutely phenomenal. I recently used it to combine multiple
separate audio tracks from a webrtc session into a single file.

For anyone that hates compiling ffmpeg from source, John Van Sickle does an
amazing job of doing the work for you by making binaries publicly available
for each version:
[https://johnvansickle.com/ffmpeg/](https://johnvansickle.com/ffmpeg/)

~~~
StanAngeloff
I rely on those static builds and they are a lifesaver. Careful with linking
to this website from automation scripts, etc. as the downloads are regularly
swapped and only certain versions (IIRC latest in a point release) are kept
available. E.g., 4.3.0 will be taken down once 4.3.1 is available, however
4.3.1 might be permanently moved to the archive if it shall be the last 4.3.?
release before 4.4.0.

~~~
whoisjohnkid
great point. What I've done in the past is have a jenkins job that points at
the latest release and trigger job manually when you know you want to upgrade
to the latest version.

~~~
StanAngeloff
I don't usually rely on a specific version and am fine running a release (or
five) behind. If you don't need the latest and greatest pointing to an
archived old release may save you some hassle.

------
bsenftner
If anyone is compiling their own version for use with IP video streams, here
is a modification that adds to the av_read_frame() function a call to the
avformat interrupt callback.

[https://gist.github.com/bsenftner/ba3d493fa36b0b201ffd995e8c...](https://gist.github.com/bsenftner/ba3d493fa36b0b201ffd995e8c2c60a2)

This effectively adds the ability to monitor the IP stream for unexpected
termination.

The current implementation of av_read_frame() will hang if, for example, a
human trips over a camera's cables and the stream abruptly terminates. Without
modification to the API, this change to av_read_frame() calls the avformat
interrupt callback each loop through av_read_frame()'s reading of packets. All
the callback needs to do is look at the time, and signal error if the time
between callbacks exceeds something reasonable.

I am not sure why, but this change was not accepted by the ffmpeg developers.
I find it essential for working with IP video and IP video cameras.

------
jeffnappi
I've been an ffmpeg user for something like 15 years now. The project never
ceases to amaze :heart:

I remember using it to encode MPEG-2 DV footage to FLV (yes, flash video) to
live-stream footage captured over firewire from early prosumer HD cameras :)
It's always been a solid video swiss-army knife!

------
soygul
FFmpeg is one of the prime examples of open-source software, but a lot depends
on the 3rd party libraries it uses. I tried using my Android phone to convert
my videos from H.264 to HEVC (H.265) for storage, but it was ~3.5 times slower
in comparison to x86 CPUs, in terms of frames encoded per second per watts of
power consumed (FPS/Watt): [https://quanticdev.com/articles/h265-encoding-on-
arm-cpus](https://quanticdev.com/articles/h265-encoding-on-arm-cpus)

Though still, I can't even imagine attempting this test without FFmpeg in the
first place. It is available directly in Termux on Android.

------
oskarahl
FFmpeg started out as frustrating for me but the more I use it the more I love
it. The ability to split videos into smaller segments and applying different
filters to each segment and finally combining the segments is just great.

I've been working on a web-based video editor for app features:
[https://glitter.now.sh/](https://glitter.now.sh/) and i've had tons of fun
tweaking FFmpeg.

My only wish would be that the documentation would include video samples for
the example commands (I'd love to help with this).

------
loser777
I use ffmpeg to run a fun twitch stream VOD to highlight reel pipeline.
Example with explicit language:
[https://www.youtube.com/watch?v=ETR3IXyGgEo](https://www.youtube.com/watch?v=ETR3IXyGgEo).
ffmpeg handles everything from frame-extraction (to feed a deep learning
model), audio spectrogram calculation (also features for the model), video
trimming (to cut the interesting clips), video concatenation (to join the
clips), and the text overlay

~~~
memexy
What is the deep learning model and what does it do?

~~~
loser777
It's just a standard vision convnet like ResNet-18, or ResNet-50. It gets fed
facecam with an audio spectrogram concatenated to it (pretty hacky, but seems
to help). All it does is binary prediction of {interesting, not interesting},
and I use some heuristics to pick regions of video based on how many frames
were "interesting" to the model.

Feel free to take a look at the (research quality at best) code:
[https://github.com/eqy/autotosis](https://github.com/eqy/autotosis)

~~~
memexy
Thanks.

------
yboris
Huge thank you to FFmpeg for making my _Video Hub App_ possible: extracting
screenshots from all videos in your video collection to create an easy to
browse/search library.

[https://github.com/whyboris/Video-Hub-App](https://github.com/whyboris/Video-
Hub-App)

[https://videohubapp.com/](https://videohubapp.com/)

~~~
yesenadam
That's a great idea, looks awesome.

If I understand the pricing, it's free for up to 50 files in each folder/hub;
for more it's $3.50, which you donate 100% to an anti-malaria charity!

~~~
yboris
Good way to describe it. A "Hub" is all the videos in a folder and all its
subfolders. The demo will be 100% the same as the final app but with a 50
videos per hub restriction.

You can build your own (without 50 videos limitation) with just `npm install`
and `npm run electron:windows` (or `mac`, or `linux`).

If you choose to buy, it's $3.50 minimum - you can pay more. $3.50 of every
purchase goes to _Against Malaria Foundation_

Cheers!

------
ddevault
I was looking at ffmpeg in the Wayback Machine earlier today:

[https://web.archive.org/web/20010218084709/http://ffmpeg.sou...](https://web.archive.org/web/20010218084709/http://ffmpeg.sourceforge.net/)

Fascinating to see such an important and sophisticated product come from these
modest beginnings.

------
anderspitman
From [https://9to5linux.com/ffmpeg-4-3-released-with-vulkan-
suppor...](https://9to5linux.com/ffmpeg-4-3-released-with-vulkan-support-amd-
amf-encoder-and-avisynth/):

> support for the ZeroMQ Message Transport Protocol (ZMTP)

This is fascinating. I've never heard of zmq being exposed in a public API.
Cool idea.

------
devwastaken
Does anyone have a better documentation source for modern ffmpeg? Usually when
I use it I get all sorts of different answers with different 'methods', and
the official docs only confuse it more.

Also I hope to see pure GPU transcoding sometime. H264 to h265 transcodes in
pure GPU space are Uber fast, but so far only done by other software.

~~~
Youden
> Also I hope to see pure GPU transcoding sometime. H264 to h265 transcodes in
> pure GPU space are Uber fast, but so far only done by other software.

FFmpeg has had pure GPU transcoding for quite some time. See
[https://trac.ffmpeg.org/wiki/HWAccelIntro](https://trac.ffmpeg.org/wiki/HWAccelIntro)

It even has a GPU-based scaler for NVIDIA.

~~~
devwastaken
It doesn't work pure GPU for transcoding between formats. You can do h264 to
h264, but not h264 to h265, which can be done with other software if the
hardware supports it.

------
suhail
Exciting improvements I am glad to see: Intel QSV-accelerated VP9 decoding,
Support AMD AMF encoder on Linux (via Vulkan)

------
timonoko
What is wrong with these people? Why the "libvidstab" is always disabled? Are
they trying to save valuable disk space? -- Libvidstab works quite good and
better than anything else readily available in Linux.

~~~
bsenftner
First I've heard of this library. The github page is pretty informative. I
looks quite worthwhile, thanks for informing me.

------
doctorOb
My favorite memory of FFmpeg involved wowing a friend with the "magic of
computer hacking" by slicing a subsection of a youtube video, cutting the
source audio, and replacing it with audio from a song he had discovered "fit
perfectly". Never mind that the entire process took about 20 minutes of
googling and trial/error with the Linux Subsystem for Windows. It was better
than the native windows alternative :P

[https://www.youtube.com/watch?v=3tr8JVZdHfc](https://www.youtube.com/watch?v=3tr8JVZdHfc)

~~~
smhmd
I thought that was Mad Rush for a second.

------
d136o
nice, I’ve been toying with it recently because I wanted to get some video on
the Apple TV I’ve got connected to my TV.

In the process I was reminded of how important Intellectual Property is in our
field.

I dowloaded a video from youtube [0] and learned that the video is in a WEBM
container for certain types of video compression formats (VP8/9 + another one)
as well as vorbis/opus audio. It turns out that to get the best quality on the
Apple TV, I should encode to HEVC (H265) video and I guess aac audio.

There’s some sort of history behind this divide. A pain in the neck for people
who want to toy around with video, but huge decisions for these companies in
choosing the formats they use to move these bits around.

So I can use ffmpeg to re-encode into the new format, and I can play it on my
apple devices if the file is local, but I can’t shoot it via UDP to the TV.
When VLC (app on apple tv) is listening on a port for UDP I only get choppy
audio:

Doing this on the sending side doesn’t seem to work:

    
    
      ffmpeg \
          -re -i video_stream_ready.mp4 \
          -c:v copy -c:a copy \
          -f mpegts udp:$APPLETVIP:2300
    

has anyone toyed around with shooting pre-generated (or even real time
generated) video at their TV this way?

Being stuck at home makes me want to make something artsy that could be fun to
look at through the day.

[0] [https://youtu.be/wPXSFVruIHI](https://youtu.be/wPXSFVruIHI)

------
mattnguyen
We recently started building a video player for go-flutter-desktop using
FFmpeg. It's been immensely frustrating as the audio and video is slightly out
of sync and requires a bit of tuning.

If anyone has experience with FFmpeg, I'd greatly appreciate if you could take
a look!
[https://github.com/telefuel/video_player_testbed/issues/1](https://github.com/telefuel/video_player_testbed/issues/1)

------
abrowne
I use it with fd to convert audio files in parallel, such as FLAC to MP3 or
Opus (or ALAC to FLAC when someone let me … sample a few albums). Found the
tip on the Arch wiki:
[https://wiki.archlinux.org/index.php/Convert_FLAC_to_MP3#Par...](https://wiki.archlinux.org/index.php/Convert_FLAC_to_MP3#Parallel_with_recursion)

------
stevievee
I agree with the shared sentiment that FFmpeg is awesome.

It's the only way I can get mkv converted for playback in browsers. I believe
that browsers don't support mkv/aac natively because of licensing but I would
be interested if anyone has a different solution for browser playback.

------
gattr
And here's my incantation for screen recording under X Window (also used one
like it under MS Windows, but I don't have it on hand):

    
    
      ffmpeg -rtbufsize 2147M -f x11grab -video_size 1920x1080 -i :0.0 -r 30 -preset ultrafast -vcodec h264 output.mp4

~~~
algorithm314
nice but it doesn't record audio and doesn't use hardware acceleration.

~~~
yesenadam
So if that's possible, please tell us how!

------
rurban
Breaks chromium, at least on arch. Beware.

[https://bugs.archlinux.org/task/67020?project=1&string=chrom...](https://bugs.archlinux.org/task/67020?project=1&string=chromium)

------
platz
I wish FFmpeg still had NDI support

NDI is super useful for low-latency local network streaming

~~~
jbk
[https://code.videolan.org/jbk/libndi/](https://code.videolan.org/jbk/libndi/)

------
purplezooey
Love me some ffmpeg, but would be nice to have some bullet point summaries of
updates in the release notes instead of pointing to the changelog dump. I know
there is some information loss, yadda yadda

------
ctrager
I've been feeling stupid these past few days because I've been using ffmpeg
for the first time. I've been trying to take an rtsp stream from a security
camera and transcode it, restream it, to something that can be viewed in an
html video tag. It works, with poor quality, in Firefox, but in Chrome just a
green screen. (I also tried using vlc/cvlc's streaming). I've been feeling
stupid because of all the copy/pasting from the web into the command line
without understanding what I was doing.

------
jokoon
I wonder how hard it would be to build a video editing suite with FFMPEG

Avidemux is nice, but currently I only see vinci as an alternative to
premiere.

------
coronadisaster
I just used ffmpeg to extract audio from a video and audacity to remove audio
noise... love those open source tools

------
jeffnappi
I've been an ffmpeg user for something like 15 years now. The project never
ceases to amaze :heart:

------
colpabar
does anyone have a good installation guide, which includes all the stuff that
isn't supported in the default installation? ffmpeg is great, but a lot of
times I go to use it and find a feature isn't supported because I didn't
compile it with a flag set.

~~~
nkatsaros
If you're on Windows or macOS there are good premade builds available at
[https://ffmpeg.zeranoe.com/builds/](https://ffmpeg.zeranoe.com/builds/). If
you want to build it yourself look at [https://github.com/rdp/ffmpeg-windows-
build-helpers](https://github.com/rdp/ffmpeg-windows-build-helpers) (this
supports more than just Windows).

------
jitendrac
ffmpeg is great tool, Once I needed to do some basic video editing stuffs like
cuts, fixed logo and some sound background on low resource computer, I quickly
downloaded ffmpeg and work finished with few google searches and 10 minutes
without any load on system.

------
memexy
Somewhat related. Anyone have a good utility for downloading youtube videos?

~~~
snazz
[https://ytdl-org.github.io/youtube-dl/index.html](https://ytdl-
org.github.io/youtube-dl/index.html) is the gold standard.

~~~
yesenadam
I'm a recent convert to youtube-dl. I use some bash scripts[0] to make
youtube-dl even easier. I have a Mac but these should work elsewhere.

Copy the video page URL to your clipboard and just type

yd - download the video. Works on most popular sites with video.

yda - download just audio, best available

ypl - makes a subfolder with the whole playlist in it (Copy the playlist URL)

yc - downloads every video on the channel (Copy the channel URL)

    
    
        yd () { youtube-dl "$(pbpaste)" ; }
        yda () { youtube-dl -f bestaudio "$(pbpaste)" ; }
        ypl () { youtube-dl -i -o '%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s' "$(pbpaste)" ; }
        yc () { youtube-dl -i -o '%(channel)s/%(title)s.%(ext)s' "$(pbpaste)" ; }
    

I use especially yd and ypl constantly. Sites where youtube-dl doesn't work,
this usually does: Get the master m3u8 or an mp4 link from the page using
Developer tools->Network[1], copy link to clipboard, and

vd _myfile_ \- downloads the video as myfile.mp4

    
    
        vd () { youtube-dl -o "$1.mp4" "$(pbpaste)" ;  }
    

[0] Save them in your .bash_profile or equivalent on your machine.

[1] i.e. with Network tab open, refresh page and start video playing.

~~~
memexy
Nice. Thanks for the aliases. I just started using it myself for downloading
and transcribing some videos. It works pretty well.

------
praveen9920
Is it me or their mobile version of website has lot of issues

