вирішуємо проблем-задачі за допомогою 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),
щоб програма автоматично завершилась після завершення всіх повторів, у режимі нескінченного циклу цей прапорець не має ефекту
поки що, це все :)