Користувальницькі налаштування

Налаштування сайту


video-editing

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Порівняння попередніх версійПопередня ревізія
Наступна ревізія
Попередня ревізія
video-editing [2013/05/15 04:34] – [Кодирование видео] wombatvideo-editing [2026/02/04 09:30] (поточний) – Накладання тексту wombat
Рядок 175: Рядок 175:
  
  
-===== Аудиофильтры ===== 
  
 +==== Пришвидшення / сповільнення ====
  
 +Щоб пришвидшити відео разом з аудіодоріжкою у вісім разів, можна скористатися такими фільтрами:
 +    ffmpeg -i input_video.mp4 -vf "setpts=0.125*PTS" -af "atempo=8.0" output_video_x8speed.mp4
  
 +Тут число ''0.125 = 1/8'' показує, у скільки разів повинна зменшитись тривалість відео.
  
 +[[https://trac.ffmpeg.org/wiki/How%20to%20speed%20up%20/%20slow%20down%20a%20video|FFmpeg: Speeding up/slowing down video]]
  
 +
 +==== Пропалювання субтитрів ====
 +
 +Якщо в нас є відеофайл, в якому субтитри збережено окремою доріжкою (так звані «м'які» субтитри), а нам потрібно «пропалити» їх у зображення кадрів, то це можна зробити наступним чином:
 +
 +  ffmpeg -i video.mkv -vf subtitles=video.mkv out.avi
 +
 +У більш складному випадку, коли потрібно вирізати шматок з відеофайлу, а також коли в ньому є декілька доріжок субтитрів та декілька аудіодоріжок, команда може виглядати так:
 +
 +  ffmpeg -ss 1:09:51 -to 1:10:03 -copyts -i video.mkv -vf subtitles=video.mkv:si=2 -map 0:0 -map 0:3 -c:v libx264 -crf 23 -c:a aac -b:a 160k out.mp4
 +
 +Тут параметр ''si=2'' фільтра ''subtitles'' означає вибір третьої доріжки субтитрів, а параметри ''-map 0:0 -map 0:3'' вказують, що з початкового відеофайлу потрібно взяти перший та четвертий потоки (це можуть бути відео- та аудіопотоки, наприклад). Нумерація аудіо-, відео- та доріжок субтитрів починається з нуля.
 +
 +
 +
 +==== Накладання тексту ====
 +
 +Додати текстовий напис поверх відео можна за допомогою відеофільтра «''drawtext''»((https://ffmpeg.org/ffmpeg-filters.html#drawtext-1)). Розглянемо приклад:
 +
 +  ffmpeg -i input_video.mp4 -vf "drawtext=fontfile=monofonto.ttf: fontsize=24: box=1: boxcolor=black@0.5: boxborderw=5: fontcolor=white: x=10: y=10: text='Some text'" -c:v libx264 -crf 23 video_with_some_text.mp4
 +
 +В цьому прикладі параметри фільтра «''drawtext''» значать наступне:
 +  * ''fontfile=monofonto.ttf'' -- вказує файл зі шрифтом TrueType, яким потрібно написати текст;
 +  * ''fontsize=24'' -- розмір шрифту;
 +  * ''box=1'' -- означає, що на тлі тексту потрібно намалювати прямокутник;
 +  * ''boxcolor=black@0.5'' -- означає, що прямокутник повинен бути чорного кольору з прозорістю 0.5;
 +  * ''boxborderw=5'' -- ширина полів прямокутника навколо тексту;
 +  * ''fontcolor=white'' -- колір тексту повинен бути білий;
 +  * ''x=10: y=10'' -- координати від лівого верхнього кута відео;
 +  * ''text='Some text''' -- означає, що потрібно написати слова «Some text».
 +
 +Якщо ми хочемо, щоб напис був показаний лише у проміжку між 5-ю та 10-ю секундами, то можна додати параметр "''enable='between(t,5,10)'''":
 +
 +  ffmpeg -i input_video.mp4 -vf "drawtext=fontfile=LiberationSerif-Bold.ttf: fontsize=124: box=1: boxcolor=black@0.5: boxborderw=5: fontcolor=red: x=10: y=10: text='Some Text':enable='between(t,5,10)'" -c:v libx264 -crf 23 -an -sn some_text_between_5s_and_10s.mp4
 +
 +
 +Також можна накладати різні написи в різні моменти часу:
 +
 +  ffmpeg -i input_video.mp4 -vf "drawtext=fontfile=LiberationSerif-Bold.ttf: fontsize=124: box=1: boxcolor=black@0.5: boxborderw=5: fontcolor=red: x=10: y=10: text='Old →':enable='between(t,0,23)', drawtext=fontfile=LiberationSerif-Bold.ttf: fontsize=124: box=1: boxcolor=black@0.5: boxborderw=5: fontcolor=#00FF00: x=10: y=10: text='New →':enable='between(t,30,500)'" -c:v libx264 -crf 23 -an -sn compare_old_vs_new.mp4
 +
 +
 +Замість статичного тексту можна накласти поточну дату у вказаному форматі:
 +
 +  ffmpeg -i input_video.mp4 -vf "drawtext=fontfile=monofonto.ttf: fontsize=24: box=1: boxcolor=black@0.5: boxborderw=5: fontcolor=white: x=10: y=10: text='%{localtime\:%d.%m.%Y %H\\\\\:%M\\\\\:%S}'" -c:v libx264 -crf 23 video_with_local_time.mp4
 +
 +
 +
 +
 +
 +===== Аудіофільтри =====
 +
 +==== Підсилення звуку ====
 +
 +Спочатку необхідно дізнатися, який максимальний рівень гучності у файлі:
 +
 +  ffmpeg -i videofile.mp4 -af "volumedetect" -vn -f null /dev/null
 +
 +Ця команда видасть на екран наступні рядки:
 +
 +  mean_volume: -28.4 dB
 +  max_volume: -12.3 dB
 +
 +Це означає, що середній рівень гучності у файлі складає ''-28.4 dB'', а максимальний -- ''-12.3 dB''. Отже, можна підсилити на ''<=12.3 dB'', і це не призведе до перевантаження.
 +
 +Потім необхідно перерахувати коефіцієнт підсилення з децибел у амплітудні значення для рівня напруги за формулою:
 +
 +  volume = 10^(volumedB/20)
 +
 +Наприклад, для ''12.3dB'' коефіцієнт підсилення амплітуди складе ''4.12''
 +
 +Далі застосовуємо потрібний коефіцієнт підсилення до файлу:
 +
 +  ffmpeg -i videofile.mp4 -af "volume=4.12" -vcodec copy -acodec aac -b:a 160k videofile_12dB.mp4
 +
 +Згідно з документацією FFMPEG((https://trac.ffmpeg.org/wiki/AudioVolume)), можна також вказувати коефіцієнт підсилення в децибелах:
 +  ffmpeg -i videofile.mp4 -af "volume=12dB" -vcodec copy -acodec aac -b:a 160k videofile_12dB.mp4
 +
 +Від'ємні значення коефіцієнта приведуть до зменшення гучності.
 ====== Полезные ссылки ====== ====== Полезные ссылки ======
  
 https://libav.org/avconv.html#libx264 https://libav.org/avconv.html#libx264
 https://sites.google.com/site/linuxencoding/x264-ffmpeg-mapping https://sites.google.com/site/linuxencoding/x264-ffmpeg-mapping
video-editing.1368592469.txt.gz · Востаннє змінено: повз wombat