Skip to content

Instantly share code, notes, and snippets.

@manti-by
Last active April 19, 2023 14:16
Show Gist options
  • Save manti-by/f16d4aa38e9fa1caabc0cba3a1f1f3c8 to your computer and use it in GitHub Desktop.
Save manti-by/f16d4aa38e9fa1caabc0cba3a1f1f3c8 to your computer and use it in GitHub Desktop.

Compile ffmpeg with basic CPU support

sudo apt install -y yasm libtheora-dev libvorbis-dev libx264-dev libx265-dev \
    libopus-dev libaom-dev libwebp-dev libmp3lame-dev libfdk-aac-dev

git clone https://git.ffmpeg.org/ffmpeg.git && cd ffmpeg/

./configure --enable-gpl --enable-nonfree \
    --enable-libfdk-aac --enable-libmp3lame --enable-libopus \
    --enable-libtheora --enable-libvorbis --enable-libwebp \
    --enable-libx264 --enable-libx265 --enable-libaom
make -j4 && sudo make install

Install FFmpeg with GPU/CUDA support

sudo apt install -y gcc yasm libmp3lame-dev libfdk-aac-dev libtheora-dev libvorbis-dev \
     libopus-dev libaom-dev libwebp-dev libx264-dev libx265-dev

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.debsudo 
dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda

git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers/ 
make -j8 && sudo make install

git clone https://git.ffmpeg.org/ffmpeg.git
cd ffmpeg/

./configure --extra-cflags=-I/usr/local/cuda/include \
    --extra-cflags=-I/usr/local/include/ffnvcodec \
    --enable-gpl --enable-nonfree \
    --enable-libfdk-aac --enable-libmp3lame --enable-libopus \
    --enable-libtheora --enable-libvorbis --enable-libwebp \
    --enable-libx264 --enable-libx265 --enable-libaom \
    --enable-cuda --enable-cuvid --enable-nvenc

make -j8 && make install

AAC to MP3 conversion table

AAC bitrate MP3 bitrate
96 128
128 160
160 192
192 320

Usable examples

Convert FLAC to MP3 320k

ffmpeg -i in.flac -ab 320k -map_metadata 0 -id3v2_version 3 out.mp3

Convert MKV to MP4 720p

ffmpeg -i in.mkv -c:v libh264c -vf "scale_npp=1280:-1, scale_npp=1280:trunc(iw/2)*2" \
  -b:v 2500k -profile:v high -level 4.1 -preset medium -c:a libmp3lame -b:a 192k -cutoff 18000 out.mp4

Convert MKV to MKV 720p with CUDA encoder

ffmpeg -y -vsync 0 -hwaccel cuda -i in.mkv \
    -c:v h264_nvenc -b:v 5000k -profile:v high -level 4.1 -preset slow -crf 22 \
    -c:a libfdk_aac -b:a 128k -cutoff 18000 out.mkv

Extract audio from MP4

ffmpeg -i in.mp4 -c:a copy out.mp3

Cut audio from 30s to 100s

ffmpeg -ss 30 -t 100 -i in.mp3 -c:a copy out.mp3

Create MP3 preview

ffmpeg -i in.mp3 -acodec libmp3lame -t 1800 -ac 1 -ab 96k -ar 44100 \
    -af "afade=t=out:st=1770:d=30" out.mp3

Combine video and audio

ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a copy output.mp4

Rotate video 180 degree

ffmpeg -i in.mp4 -vf "transpose=2,transpose=2" -c:a copy out.mp4

Convert any video file to MP4

ffmpeg -i in.MTS -c:a copy -c:v copy out.mp4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment