Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
ffmpeg [2018/10/30 13:39] – [add png to audio - you need to know the length of audio] erreur32 | ffmpeg [2022/11/08 16:43] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== FFMPEG ====== | ||
+ | FFMPEG exemple script visual | ||
+ | |||
+ | Original article : https:// | ||
+ | |||
+ | |||
+ | Often one wants to share audio online, but it seems like video as a format has many more options: mastodon, twitter, facebook, youtube, all allow to upload video, but not only audio. Here are some ffmpeg tricks, how to add interesting video to your audio file, often autogenerated visuals. All the code is supposed to be used as one line without line-breaks.< | ||
+ | |||
+ | ====== Audio Vector Scope ====== | ||
+ | |||
+ | <code csharp [enable_line_numbers=" | ||
+ | ffmpeg -i INPUT_AUDIO.wav -filter_complex | ||
+ | " | ||
+ | | ||
+ | -map " | ||
+ | -b:v 700k -b:a 360k | ||
+ | OUTPUT_VIDEO.mp4 | ||
+ | </ | ||
+ | |||
+ | The code above creates a mp4 video file with a vectorscope nicely centered inside a 854×480 (480p) video. If you need a 1:1 video, just exclude the pad part: | ||
+ | |||
+ | <code csharp [enable_line_numbers=" | ||
+ | ffmpeg -i INPUT_AUDIO.wav -filter_complex | ||
+ | " | ||
+ | -map " | ||
+ | -b:v 700k -b:a 360k | ||
+ | OUTPUT_VIDEO.mp4 | ||
+ | </ | ||
+ | | ||
+ | |||
+ | Documentation on ‘avectorscope’ filter is here: https:// | ||
+ | |||
+ | ====== Show waves ====== | ||
+ | |||
+ | <code csharp [enable_line_numbers=" | ||
+ | ffmpeg -i INPUT.wav -filter_complex | ||
+ | " | ||
+ | -map " | ||
+ | -b:a 360k -r:a 44100 OUTPUT.mp4 | ||
+ | </ | ||
+ | |||
+ | more options: http:// | ||
+ | |||
+ | ====== | ||
+ | |||
+ | v | ||
+ | ffmpeg -i INPUT.wav | ||
+ | " | ||
+ | -map " | ||
+ | -b:v 700k -b:a 360k OUTPUT.mp4 | ||
+ | </ | ||
+ | |||
+ | Above code will create almost completely desaturated spectrum of the audio sliding from right to left. Again, there are various options to tweak, see here: https:// | ||
+ | |||
+ | |||
+ | ====== | ||
+ | |||
+ | |||
+ | |||
+ | <code csharp [enable_line_numbers=" | ||
+ | ffmpeg -i INPUT.wav -filter_complex | ||
+ | " | ||
+ | -map " | ||
+ | -b:a 360k OUTPUT.mp4 | ||
+ | </ | ||
+ | more options: http:// | ||
+ | |||
+ | | ||
+ | | ||
+ | Sometimes you want to just create a static image. | ||
+ | |||
+ | ## create a spectrogram as a single frame | ||
+ | <code csharp [enable_line_numbers=" | ||
+ | ffmpeg -i INPUT.wav -lavfi | ||
+ | showspectrumpic=s=hd480: | ||
+ | SPECTROGRAM.png | ||
+ | </ | ||
+ | ## add png to audio - you need to know the length of audio | ||
+ | <code csharp [enable_line_numbers=" | ||
+ | ffmpeg -loop 1 -i SPECTROGRAM.png -i INPUT.wav | ||
+ | -s hd480 -t 00:01:00 -pix_fmt yuv420p | ||
+ | -b:a 360k -r:a 44100 OUTPUT.mp4 | ||
+ | </ | ||
+ | |||
+ | ## create a spectrogram as a single frame | ||
+ | <code csharp [enable_line_numbers=" | ||
+ | ffmpeg -i INPUT.wav -lavfi | ||
+ | showspectrumpic=s=hd480: | ||
+ | SPECTROGRAM.png | ||
+ | </ | ||
+ | ## add png to audio - you need to know the length of audio | ||
+ | <code csharp [enable_line_numbers=" | ||
+ | ffmpeg -loop 1 -i SPECTROGRAM.png -i INPUT.wav | ||
+ | -s hd480 -t 00:01:00 -pix_fmt yuv420p | ||
+ | -b:a 360k -r:a 44100 OUTPUT.mp4 | ||
+ | </ | ||
+ | |||
+ | Above one is in two steps. More info here: http:// | ||
+ | | ||
+ | ====== text overlays ====== | ||
+ | |||
+ | <code csharp [enable_line_numbers=" | ||
+ | ffmpeg -i video1.mp4 -i video2.mp4 \ | ||
+ | -filter_complex " | ||
+ | [v]drawtext=text=' | ||
+ | -map " | ||
+ | -vcodec libx264 -pix_fmt yuv420p -preset $QUAL -r $FPS -g $(($FPS * 2)) -b:v $VBR \ | ||
+ | -acodec libmp3lame -ar 44100 -threads 6 -qscale 3 -b:a 712000 -bufsize 512k \ | ||
+ | -f flv " | ||
+ | </ | ||
+ | | ||
+ | # Print file metadata etc. | ||
+ | | ||
+ | |||
+ | # Convert all m4a files to mp3 | ||
+ | for f in *.m4a; do ffmpeg -i " | ||
+ | |||
+ | # Convert video from .foo to .bar | ||
+ | -g : GOP, for searchability | ||
+ | |||
+ | <code csharp [enable_line_numbers=" | ||
+ | ffmpeg -i input.foo -vcodec bar -acodec baz -b:v 21000k -b:a 320k -g 150 -threads 4 output.bar | ||
+ | </ | ||
+ | |||
+ | # Convert image sequence to video | ||
+ | <code csharp [enable_line_numbers=" | ||
+ | </ | ||
+ | |||
+ | # Combine video and audio into 1 file | ||
+ | <code csharp [enable_line_numbers=" | ||
+ | </ | ||
+ | |||
+ | # Listen to 10 seconds of audio from a video file | ||
+ | -ss : start time / | ||
+ | |||
+ | <code csharp [enable_line_numbers=" | ||
+ | ffmpeg -ss 00:34:24.85 -t 10 -i path/ | ||
+ | </ | ||
+ | |||
+ | ------- | ||
+ | | ||
+ | # Common switches | ||
+ | ```bash | ||
+ | -codecs | ||
+ | -c:v # video codec (-vcodec) - ' | ||
+ | -c:a # audio codec (-acodec) | ||
+ | -fs SIZE # limit file size (bytes) | ||
+ | ``` | ||
+ | |||
+ | # Bitrate | ||
+ | |||
+ | ```bash | ||
+ | -b:v 1M # video bitrate (1M = 1Mbit/s) | ||
+ | -b:a 1M # audio bitrate | ||
+ | ``` | ||
+ | |||
+ | # Video | ||
+ | |||
+ | ```bash | ||
+ | -aspect RATIO # aspect ratio (4:3, 16:9, or 1.25) | ||
+ | -r RATE # frame rate per sec | ||
+ | -s WIDTHxHEIGHT | ||
+ | -vn # no video | ||
+ | ``` | ||
+ | |||
+ | # Audio | ||
+ | |||
+ | ```bash | ||
+ | -aq QUALITY | ||
+ | -ar 44100 # audio sample rate (hz) | ||
+ | -ac 1 # audio channels (1=mono, 2=stereo) | ||
+ | -an # no audio | ||
+ | -vol N # volume (256=normal) | ||
+ | ``` | ||
+ | |||
+ | ## Example | ||
+ | ### Ringtone conversion using ffmpeg | ||
+ | |||
+ | ```bash | ||
+ | ffmpeg -i foo.mp3 -ac 1 -ab 128000 -f mp4 -acodec libfaac -y target.m4r | ||
+ | ``` | ||
+ | |||
+ | ### To web | ||
+ | |||
+ | # no audio | ||
+ | <code csharp [enable_line_numbers=" | ||
+ | ffmpeg -i input.mov -vcodec h264 -an -strict -2 output.mp4 | ||
+ | ffmpeg -i input.mov -vcodec libvpx -an output.webm | ||
+ | </ | ||
+ | |||
+ | <code csharp [enable_line_numbers=" | ||
+ | ffmpeg -i input.mov -vcodec h264 -acodec aac -strict -2 output.mp4 | ||
+ | ffmpeg -i input.mov -vcodec libvpx -acodec libvorbis output.webm | ||
+ | </ | ||
+ | |||
+ | ```html | ||
+ | <video width=" | ||
+ | <source src=" | ||
+ | <source src=" | ||
+ | </ | ||
+ | ``` | ||
+ | | ||
+ | | ||
+ | #ffmpeg generate overlay complex filter for audio with background image | ||
+ | <code csharp [enable_line_numbers=" | ||
+ | ffmpeg -y -i input.mp3 -loop 1 -i background.png \ | ||
+ | -filter_complex " | ||
+ | -map " | ||
+ | </ | ||
+ | |||
+ | [https:// | ||
+ | <code csharp [enable_line_numbers=" | ||
+ | ffmpeg -y -i audio.mp3 -loop 1 -i image.jpg \ | ||
+ | -filter_complex " | ||
+ | -map " | ||
+ | </ | ||
+ | | ||
+ | [https:// | ||
+ | <code csharp [enable_line_numbers=" | ||
+ | ffmpeg -y -i audio.mp3 -loop 1 -i image.jpg \ | ||
+ | -filter_complex " | ||
+ | -map " | ||
+ | </ | ||
+ | [https:// | ||
+ | |||
+ | |||
+ | <code csharp [enable_line_numbers=" | ||
+ | ffmpeg -y -i audio.mp3 -loop 1 -i image.jpg \ | ||
+ | -filter_complex " | ||
+ | -map " | ||
+ | -map 0:a -c:v libx264 -c:a copy -shortest output12.mp4 | ||
+ | </ |