вирішуємо проблем-задачі за допомогою ffmpeg

нотатка про те, як ffmpeg дозволяє легко-швидко вирішувати ряд задач на лінуксі

1. зберегти аудіодоріжку з відео

ffmpeg -i input_video.mp4 -vn -acodec libmp3lame -ab 192k output_audio.mp3

2. вирізати з mp3 мета-дані (зображення та текстові мета-теги), залишивши лише mp3, без перекодування

ffmpeg -i input.mp3 -map 0:a -c copy -map_metadata -1 output.mp3

3. стиснути + ресайзити відео, щоб відео менше місця на диску займало

ffmpeg -i input_video.mp4 -vcodec libx264 -crf 28 -s 1280x720 output_video.mp4

тут:
-crf 28 встановлює рівень стиснення
-s 1280x720 встановлює розширення відео

.

SD = Standard-definition television
Pixel aspect ratio ; 480i, 4:3 · 720 × 480 (full frame)

ffmpeg -i "video.mp4" -vcodec libx264 -crf 28 -s 720x480 "video_.mp4"

4. обрізати початок відео (зберегти від часової мітки), без перекодування

ffmpeg -i input_video.mp4 -ss 00:03:48.200 -c copy output_video.mp4

5. обрізати закінчення відео (зберегти до часової мітки), без перекодування

ffmpeg -i input_video.mp4 -t 00:05:33.700 -c copy output_video.mp4

6. об'єднати вирізані частини відео в один файл, без перекодування

ffmpeg -f concat -i list.txt -c copy output.mp4

list.txt

file 'part1.mp4'
file 'part2.mp4'

7. витягнути метатеги з відео в txt файл

ffprobe -v quiet -print_format default -show_format -show_streams input.mp4 > metadata.txt

або

ffmpeg -i input.mp4 -f ffmetadata metadata.txt

8. конвертування avi -> mp4

ffmpeg -i input.avi -c:v libx264 -crf 28 -c:a aac -b:a 192k output.mp4

9. crop відео зверху та знизу

ffmpeg -i input.mp4 -vf cropdetect -f null - 2>&1 | awk '/crop/ { print $NF }' | tail -1

ffmpeg -i input.mp4 -vf "crop=960:540:0:90" -c:a copy output.mp4

-vf "crop=960:540:0:90" фільтр, який виконує обрізання (чорної смуги зверху та знизу); формат crop=ширина:висота:x:y
960:540 бажаний розмір вихідного відео (16:9)
0:90 координати верхнього лівого кута області, яку ми залишаємо
В даному випадку, ми починаємо з лівого краю (0) та відступаємо 90 пікселів від верхнього краю, щоб пропустити чорну смугу
-c:a copy копіює аудіодоріжку без перекодування, що значно прискорює процес та зберігає якість звуку

.

Щоб отримати відео 960 * 540, вам потрібно видалити загалом 180 пікселів по висоті (720 - 540 = 180).
Якщо припустити, що смуги рівномірні, то зверху та знизу потрібно обрізати по 90 пікселів

ffmpeg -i input.mp4 -vf "crop=960:ih-180:0:90" -c:a copy output.mp4

10. програвання mp3

# тричі відтворити mp3 та закрити вікно
ffplay -loop 3 -autoexit frogs.mp3

# тричі відтворити та завершити програму, без відривання вікна
ffplay -loop 3 -autoexit -nodisp frogs.mp3

# програвати на фоні зациклено
ffplay -loop 0 -nodisp frogs.mp3

-nodisp відтворює лише звук без відкриття графічного вікна - фонове програвання музики
-autoexit не працює з -loop 0 , корисно для скінченого циклу (наприклад, -loop 3),
щоб програма автоматично завершилась після завершення всіх повторів, у режимі нескінченного циклу цей прапорець не має ефекту

поки що, це все :)

Посилання

todo