mirror of
https://github.com/foo-dogsquared/wiki.git
synced 2025-01-31 07:57:57 +00:00
b088086b06
Now, it's all under the notebook umbrella. Seems to be appropriate as it is just my notes after all. I also updated some notes from there. I didn't keep track of what it is this time. Something about more learning notes extracted from my "Learning how to learn" course notes and then some. Lack of time and hurriness just makes it difficult to track but it should be under version control already.
93 lines
2.2 KiB
Org Mode
93 lines
2.2 KiB
Org Mode
:PROPERTIES:
|
|
:ID: 9484532c-16c8-4b3c-8ca4-109396bbf2ef
|
|
:END:
|
|
#+title: Command line: FFmpeg
|
|
#+date: "2021-05-09 16:40:50 +08:00"
|
|
#+date_modified: "2021-07-20 23:30:49 +08:00"
|
|
#+language: en
|
|
#+property: header-args :eval no
|
|
|
|
|
|
The swiss army knife for interacting with multimedia files (except images because ImageMagick).
|
|
|
|
|
|
|
|
|
|
* Options
|
|
|
|
The FFmpeg command line interface is mostly picky because of order.
|
|
Whatever options are given will be processed with those options in order.
|
|
|
|
- =-hide_banner= - hide the annoying banner
|
|
- =-loglevel [level] | -v [level]= - set the verbosity level
|
|
- =-codecs= - list all codecs
|
|
- =-devices= - list all devices
|
|
- =-i [file]= - the input file
|
|
- =c [codec]= - set the codec
|
|
- =-b [rate]= - set the bitrate
|
|
- =-o [file]= - set the output
|
|
|
|
Certain options have the option of specifying whether you're interacting with the audio or video track.
|
|
For example, =-codec:audio= (=-c:a=) to set the audio codec.
|
|
|
|
|
|
|
|
|
|
* Examples
|
|
|
|
FFmpeg is comprehensive and so needs some specific examples to fill my monkey brain.
|
|
|
|
|
|
** Convert an MP3 to OGG
|
|
|
|
#+begin_src shell
|
|
ffmpeg -i $INPUT.mp3 -o $OUTPUT.ogg
|
|
#+end_src
|
|
|
|
By default, FFmpeg will guess if certain things are missing.
|
|
In this case, it guessed the input file is an MP3 and wants to convert OGG.
|
|
Sometimes, it will also use default options for converting between two formats such as the default bitrate and codec.
|
|
|
|
|
|
** Transrate an audio file
|
|
|
|
#+begin_src shell
|
|
ffmpeg -i $INPUT -c $CODE -b:a $BITRATE $OUTPUT
|
|
#+end_src
|
|
|
|
|
|
** List all available options
|
|
|
|
FFmpeg has compile options, heaps of them.
|
|
You may want to know what codecs are available.
|
|
|
|
#+begin_src shell :results silent
|
|
ffmpeg -codecs
|
|
#+end_src
|
|
|
|
It tends to be a large list so prepare to send it through a pager.
|
|
|
|
You should also know FFmpeg can print out devices.
|
|
|
|
#+begin_src shell :results silent
|
|
ffmpeg -devices
|
|
#+end_src
|
|
|
|
|
|
** Capture video device
|
|
|
|
#+begin_src shell
|
|
# Assuming /dev/video0 is your webcam.
|
|
ffmpeg -f video4linux2 -i /dev/video0 cringe-at-yourself.mpg
|
|
#+end_src
|
|
|
|
|
|
** Extract a segment from a file
|
|
|
|
The timestamps are essentially seeking to a file.
|
|
For more information, see [[https://trac.ffmpeg.org/wiki/Seeking][FFmpeg documentation]].
|
|
|
|
#+begin_src shell
|
|
ffmpeg -nostdin -i $INPUT -ss 00:05:22 -to 00:22:43 $OUTPUT
|
|
#+end_src
|