Ffmpeg image & video processing

1 ответ

Примерно так должно работать с соответствующими параметрами для каждого случая:

Примечание. Исходный ответ был опубликован по этой ссылке: Как обрезать видео с помощью ffmpeg? который первоначально был размещен мной и отредактирован несколько раз, чтобы обновить его до новейших опций в самых последних версиях ffmpeg. Большое спасибо Слхк, Джонатан. Антон Рудешко, LordNeckbeard и будущие сопровождающие.

В последних версиях FFmpeg используйте фильтр:

Где варианты следующие:

  • ширина выходного прямоугольника
  • высота выходного прямоугольника
  • а также указать верхний левый угол выходного прямоугольника

Пример 1

Чтобы обрезать секцию 80×60, начиная с позиции (200, 100):

В этом примере аудио копируется потоком, поэтому повторного кодирования избегают.

Пример 2

Чтобы обрезать нижнюю правую четверть:

Это так же, как:

Который так же, как:

Вы можете обратиться к входному размеру изображения с in_w а также in_h как показано в этом первом примере. Ширина и высота вывода также могут быть использованы с out_w а также out_h,

Пример 3

Обрежьте 20 пикселей сверху и 20 снизу:

Фильтр будет автоматически центрировать урожай, если x а также y опущены, как в этом примере.

Предварительный просмотр

Вы можете взять урожай (хе-хе) и просмотреть его в прямом эфире с :

Таким образом, вы можете экспериментировать и настраивать кадрирование без необходимости кодировать, просматривать, повторять.

Заметки

  • фильтрация документации

  • Кодировщик по умолчанию для MP4 (Видео H.264) или (Видео MPEG-4 часть 2) в зависимости от вашего строить. См. FFmpeg Wiki: Руководство по кодированию видео H.264 для получения дополнительной информации.

  • Вместо обрезки и перекодирования рассмотрите обрезку при воспроизведении. Это возможно с любым игроком, который стоит использовать.

  • древний сборки использовали , , , варианты вместо фильтр. Если это так, то получите современную , Развитие очень активно и нет оснований использовать антиквариат.

19

2015-06-20 04:14

Полезные команды ffmpeg

Как я уже сказал, утилита ffmpeg поддерживает большинство аудио и видео форматов. Чтобы проверить какие форматы поддерживаются вы можете выполнить:

Если вы новичок в использовании этого инструмента, то вот некоторые команды, которые могут вам очень сильно помочь. Дальше вы узнаете как пользоваться ffmpeg.

1. Получить информацию о видео

Чтобы получить доступную информацию о видео, достаточно просто указать файл источника. Выполните такую команду:

Опция -hide_banner указывает программе, что не нужно показывать информацию о себе, опции сборки и так далее. Вы можете выполнить команду без этой опции, тогда получите всю информацию, в том числе и об ffmpeg:

2. Разбить видео на кадры

Чтобы разбить видео на изображения подойдет такая команда:

Утилита сгенерирует изображения с именами image1.jpg, image2.jpg, image3.jpg и так далее. После завершения вы найдете очень большое количество изображений в папке с видео.

3. Собрать видео из изображений

Вы можете взять полученный набор картинок и собрать все обратно в видео. Для этого выполните:

Опция -f задает формат входного файла, вы можете использовать jpeg, png, jpg и другие картинки. И вы уже знаете как посмотреть поддерживаемые форматы ffmpeg.

4. Вытянуть звук из видео

Чтобы конвертировать видео в mp3 выполните команду:

Вот описание новых опций:

  • -vn — не обрабатывать видео, вся видео информация будет отброшена;
  • -ar — частота дискретизации, измеряется в герцах, чем больше, тем лучше качество звука;
  • -ab — устанавливает битрейт аудио;
  • -ac — устанавливает количество каналов;
  • -f — указывает формат полученного файла.

6. Преобразовать видео в gif

Таким же самым образом можно переделать видео в анимированную gif картинку:

Мы не указываем кодеки ffmpeg и формат, потому что программа может их сама определить по расширению.

Чтобы конвертировать видео mpg в flv выполните:

Здесь мы уже задали битрейт и формат.

8. Преобразовать avi в mpeg

Для этого выполните команду:

Использованные опции:

  • -target pal-dvd — формат исходящего файла;
  • -ps 2000000000 — максимальный размер полученного файла;
  • -aspect 16:9 — соотношение сторон экрана.

9. Конвертировать видео в CD или DVD формат

Чтобы выполнить конвертирование ffmpeg видео в формат DVD, нужно задать ваш формат с помощью опции -target. Доступны такие форматы: vcd, svcd, dvd, dv, pal-vcd или ntsc-svcd. Чтобы создать VCD выполните:

11. Увеличить/уменьшить скорость видео

Чтобы увеличить скорость воспроизведения видео мы будем использовать фильтры, с помощью опции -vf. За скорость отвечает фильтр setpts. Например:

А так можно уменьшить скорость:

12. Вырезать прямоугольник из видео

Для того чтобы вырезать определенный участок кадра из видео тоже используются фильтры. На этот раз фильтр crop:

  • out_w — ширина нужного прямоугольника;
  • out_h — высота нужного прямоугольника;
  • x,y — задают координаты прямоугольника от начала видео.

Например, обрежем прямоугольник размером 80х60 от позиции 100х200:

Кроме этих опций, здесь можно задавать кодеки ffmpeg и форматы, чтобы параллельно выполнить кодирование ffmpeg.

13. Обрезать видео

Тут уже фильтры нам не помогут, но зато мы можем указать опциями из какого момента нужно начать и где завершить, например:

Начинаем от минуты и пишем еще минуту:

  • -ss задает время на видео, из которого стоит начать запись;
  • -t задает время когда запись нужно завершить относительно ss;
  • задает кодеки для аудио и видео, в нашем случае просто копировать файлы, ничего не перекодируя.

15. Проиграть видео

Вы можете быстро проиграть видео, чтобы оценить его качество, для этого есть команда:

Программа открывает и видео, и аудио.

16. Фото-баннер для аудио

Вы можете добавить фото баннер к вашей аудио записи с помощью следующей команды:

Рассмотрим опции:

  • -loop — задает, что нужно всегда повторять оду и ту же картинку;
  • -i — задают входящие файлы, картинку и аудиофайл;
  • -с:v — задает видеокодек, эквивалентно -vc;
  • -c:a — задает аудиокодек, эквивалентно -ac;
  • -b:a — задает битрейт аудио, эквивалентно -ab;
  • -strict experimental — кодек aac для ffmpeg экспериментальный, поэтому чтобы его использовать нужна эта опция.

17. Добавить субтитры к видео

Если у вас есть отдельный файл субтитров, например с именем subtutle.srt, вы можете использовать такую команду, чтобы добавить его к видео:

CPU usage / File size

In general, the more CPU you use to compress, the better the output image will be, or the smaller of a file the output will be for the same quality.

Basically, the easiest way to save cpu is to decrease the input frame rate/size, or decrease the output frame rate/size.

Also you could (if capturing from live source), instruct the live source to feed a «smaller stream» (ex: webcam stream 640×480 instead of 1024×1280), or you could set a lower output «output quality» setting (q level), or specify a lower output desired bitrate (see Encode/H.264 for a background). Or try a different output codec, or specify new parameters to your codec (for instance, a different profile or preset for libx264). Specifying $ -threads 0 instructs the encoder to use all available cpu cores, which is the default. You could also resize the input first, before transcoding it, so it’s not as large. Applying a smoothing filter like hqdn3d before encoding might help it compress better, yielding smaller files.

You can also set a lower output frame rate to of course decrease cpu usage.

If you’re able to live capture in a pixel format that matches your output format (ex: yuv420p output from a webcam, instead of mjpeg), that might help with cpu usage, since it avoids an extra conversion. Using 64-bit instead of 32-bit executables (for those that have that choice) can result in a slight speedup. If you’re able to use -vcodec copy that, of course, uses the least cpu of all options since it just sends the frames verbatim to the output.

Sometimes you can change the «pixel formats» somehow, like using rgb16 instead of rgb24, to save time/space (or yuv420 instead of yuv444 or the like, since 420 stores less information it may compress better and use less bandwidth). This may not affect latency.

cropdetect and ffplay — 2020

bogotobogo.com site search:

cropdetect

cropdetec can auto-detect crop size.

It calculate necessary cropping parameters and prints the recommended parameters through the logging system. The detected dimensions correspond to the non-black area of the input video.

	
cropdetect=limit:round:reset

The crop filter accepts the following options (see ):

  1. limit
    Set higher black value threshold, which can be optionally specified from nothing (0) to everything (255). An intensity value greater to the set value is considered non-black. Default value is 24.
  2. round
    Set the value for which the width/height should be divisible by. The offset is automatically adjusted to center the video. Use 2 to get only even dimensions (needed for 4:2:2 video). 16 is best when encoding to most video codecs. Default value is 16.
  3. reset_count, reset
    Set the counter that determines after how many frames cropdetect will reset the previously detected largest video area and start over to detect the current optimal crop area. Default value is .
    This can be useful when channel logos distort the video area. 0 indicates never reset and return the largest area encountered during playback.

Sample

We’re going to use a movie clip (The Good, the Bad and the Ugly) as a sample.

If we run the clip using a media player, we can see the black letter box both top and bottom:

If we run ffmpeg to see what it tells us about the crop:

	
$ ffmpeg -i TheGoodTheBadAndTheUgly.mp4 -vf cropdetect=24:16:0 dummy.mp4
...
 x1:0 x2:639 y1:43 y2:317  pts:181320 t:181.320000 crop=640:272:0:46
...

It lets us know the area to crop.

So, we now can crop the movie clip to make a new cropped clip:

ffmpeg -i TheGoodTheBadAndTheUgly.mp4 -vf  cropped_TheGoodTheBadAndTheUgly.mp4

The crop filter takes four arguments:

crop=out_width:out_height:x:y

where:

  1. out_width:output_height — the cropped output width and height of the video.
  2. x:y — the start coordinate from the top left corner.

As we can see from the picture below, the new cropped movie clip (cropped_TheGoodTheBadAndTheUgly.mp4) do not have the black letter box any more:

ffplay

We can also use ffplay to get the information about the crop:

$ ffplay -i TheGoodTheBadAndTheUgly.mp4 -vf cropdetect=24:16:0
...
 x1:0 x2:639 y1:43 y2:317 w:640 h:272 x:0 y:46 pts:11440 t:11.440000 crop=640:272:0:46
...

As we can see, ffplay also gives us the same information about the cropping.

Способ 3: Собственноручная регистрация ffmpeg.dll в ОС

Вариант с повторной регистрацией ffmpeg.dll в системе не является самым эффективным, однако из-за простоты применения он и был поставлен на это место. От вас потребуется лишь запустить стандартную консоль и вписать две простые команды, чтобы убедиться в том, действительно ли ffmpeg.dll во время установки софта был зарегистрирован, и повторить инсталляцию в случае необходимости. Вся процедура умещается в трех шагах и выглядит так:

  1. Раскройте меню «Пуск». Там через поиск отыщите классическое приложение «Командная строка» и обязательно запустите его от имени администратора.

В появившемся окне впишите команду regsvr32 /u ffmpeg.dll и активируйте ее, нажав на клавишу Enter. Это отменит уже существующую регистрацию файла.

Закройте появившееся уведомление, а затем используйте похожую команду regsvr32 /i ffmpeg.dll для повторной регистрации.

По завершении данных действий можно сразу же продолжить попытки запуска проблемного ПО, чтобы убедиться в том, что они сработали. Если все прошло успешно, значит ошибка больше никогда не появится. В противном случае придется задействовать другие методы исправления.

Склеиваем файлы в один

Мы видим новый флаг . Он указывает ffmpeg какие дорожки хотим получить в итоговом файле. Если в наших исходных видео файлах гарантировано одна видео и аудио дорожка, и столько же мы хотим получить на выходе, то флаг map не нужен. Другие примеры использования Map можно посмотреть на сайте ffmpeg.

Выполним ту же операцию другим методом:

В FFmpeg есть элементы, которые читают или записывают медиа в определенных форматах. Они называются демультиплексор и мультиплексор.  — это демультиплексор, который принимает текстовый файл, со списком медиа файлов и склеивает их в один. Посмотреть другие элементы можно командой .

Содержимое list.txt:

Такой метод удобен, если у нас много файлов и надо склеить их друг за другом. Он не перекодирует видео и работает быстрее первого метода.

Но первый метод применяется чаще. Во-первых, он может принять на вход видео с разными кодеками. Во-вторых, дает большую гибкость. Например, если нужна только часть первого видео, мы можем воспользоваться флагами и

Обратите внимание, эти флаги действуют только на первый файл

Filter Metadata

Filters may write metadata entries that can be used for debugging their functionality, or extracting additional information from the input file. For a general description, see .

Metadata keys are defined by the respective filters, and there is no globally accessible list. Some of them are mentioned in the filter documentation itself.

Here are some important metadata keys, all starting with , where is the name of the filter itself.

Filter Key Description
Duration of the freeze period
End of the freeze period
Start of the freeze period
Duration of the silence period
End of the silence period
Start of the silence period

Обрезка видео

Чтобы обрезать видео, нужно знать время начала и окончания нужного фрагмента. Для этого воспользуйтесь любым видеоплеером, чтобы посмотреть исходное видео, и запишите тайм коды начала и конца желаемого участка в формате ЧЧ:ММ:СС.

Откройте Командную стоку в папке с видеофайлами и исполняемым файлом FFmpeg. Для этого кликните по области навигации Проводника Windows, чтобы появился курсор, наберите «cmd» и нажмите клавишу Enter.

В открывшемся окне Командной строки наберите следующую команду:

ffmpeg -ss 00:00:00 -i source.mp4 -to 00:00:30 -c copy output.mp4

где:

  • -ss 00:00:00 – время начала видео (укажите своё время начала);
  • -i source.mp4 – имя исходного видеофайла;
  • -to 00:00:30 – время окончания видео (укажите своё время окончания);
  • -c copy – параметр, означающий копирование видеопотока с сохранением исходного качества;
  • output.mp4 – имя конечного видеофайла (укажите желаемое имя).

Конечный видеофайл «output.mp4» будет обрезан в соответствии с указанными временными метками.

Необязательно, чтобы видео было в формате MP4, FFmpeg поддерживает много других форматов.

Setting

Here is what another person once did for broadcast:

ffmpeg -f dshow -i video="Virtual-Camera" -preset ultrafast -vcodec libx264 -tune zerolatency -b 900k -f mpegts udp://10.1.0.102:1234

And here is what another person ​did:

ffmpeg -f dshow -i video="screen-capture-recorder":audio="Stereo Mix (IDT High Definition" \
-vcodec libx264 -preset ultrafast -tune zerolatency -r 10 -async 1 -acodec libmp3lame -ab 24k -ar 22050 -bsf:v h264_mp4toannexb \
-maxrate 750k -bufsize 3000k -f mpegts udp://192.168.5.215:48550

NB that they also (for directshow devices) had to adjust the rtbufsize in that example.

You can see a description of what some of these means, (for example bufsize, bitrate settings) in the Encode/H.264.

Here’s how one guy broadcast a live stream (in this instance a Capture/Desktop#Windows screen capture device):

$ ffmpeg -y -loglevel warning -f dshow -i video="screen-capture-recorder" -vf crop=690:388:136:0 -r 30 -s 962x388 -threads 2 -vcodec libx264 -vpre baseline -vpre my_ffpreset -f flv rtmp:///live/myStream.sdp

with a custom FFmpeg preset (libx264-my_ffpreset.ffpreset) in this case:

coder=1
flags2=+wpred+dct8x8
level=31
maxrate=1200000
bufsize=200000
wpredp=0
g=60
refs=1
subq=3
trellis=0
bf=0
rc_lookahead=0

Here is how you stream to twitch.tv or similar services (rtmp protocol), using ffmpeg 1.0 or ffmpeg-git (tested on 2012-11-12), this is also for pulseaudio users:
Example 1, no sound:

ffmpeg -f x11grab -s 1920x1200 -framerate 15 -i :0.0 -c:v libx264 -preset fast -pix_fmt yuv420p -s 1280x800 -threads 0 -f flv "rtmp://live.twitch.tv/app/live_********_******************************"

Example 2, first screen (on dual screen setup, or if on a single screen):

ffmpeg -f x11grab -s 1920x1200 -framerate 15 -i :0.0 -f pulse -ac 2 -i default -c:v libx264 -preset fast -pix_fmt yuv420p -s 1280x800 -c:a aac -b:a 160k -ar 44100 -threads 0 -f flv "rtmp://live.twitch.tv/app/live_********_******************************"

Example 3, second screen (on dual screen setup):

ffmpeg -f x11grab -s 1920x1200 -framerate 15 -i :0.0+1920,0 -f pulse -ac 2 -i default -c:v libx264 -preset fast -pix_fmt yuv420p -s 1280x800 -c:a aac -b:a 160k -ar 44100 -threads 0 -f flv "rtmp://live.twitch.tv/app/live_********_******************************"

История FFmpeg

В 2000 году программист с ником Gerard Lantau выложил для всеобщего использования исходники проекта FFmpeg. За годы концепция осталась прежней:

  • Деление на программы FFmpeg для кодирования видео и FFserver для организации потокового вещания.
  • Максимально быстрое кодирование звука и видео.

В то время 500 мегагерц в компьютере считались нормой, требовалась максимальная оптимизация, поэтому в FFmpeg своя реализация видеокодеков, оптимизированная для скорости. Это нужно и сейчас, особенно на серверах видеохостингов, где идёт постоянная борьба за снижение энергопотребления, чтобы процессоры не грелись.

FFmpeg прочно стоит на ногах — почти каждый день вносятся правки в исходный код. Добавляются новые компоненты. Например, плеер FFplay и утилита для получения информации FFprobe.

Установка ffmpeg в Ubuntu и других Linux

Установка ffmpeg — это простой процесс. Это популярное приложение, которое доступно в большинстве дистрибутивов Linux через менеджер пакетов.

Установите ffmpeg в Ubuntu

В Ubuntu ffmpeg доступен в хранилище юниверсов, поэтому обязательно включите хранилище юниверсов. а затем обновите список пакетов и установите ffmpeg. Вы можете сделать все это, используя следующие команды в терминале:

 sudo add-apt-репозиторий юниверс

обновление sudo apt

sudo apt установить ffmpeg

Так и должно быть! Вы можете проверить установку, просто набрав:

 FFmpeg 

Это должно отобразить некоторый текст, описывающий вашу конфигурацию ffmpeg (включая версию ).

Как видно из скриншота выше, установлена ​​версия 3.4.4 . Однако последняя версия ffmpeg на момент написания этой статьи — 4.1 . Чтобы установить любую версию 4.x, вы должны будете использовать ffmpeg ppa . Нажмите, чтобы развернуть следующий раздел, чтобы увидеть подробности установки ffmpeg через PPA.

Существует неофициальный PPA, который вы можете использовать для установки последней версии ffmpeg. Просто используйте эти команды:

 sudo add-apt-repository ppa: jonathonf / ffmpeg-4

обновление sudo apt

sudo apt установить ffmpeg -y

Чтобы установить ffmpeg в дистрибутивах на основе Arch, используйте следующую команду:

 sudo pacman -S ffmpeg 

Установите ffmpeg в дистрибутивы на основе Fedora

Чтобы установить ffmpeg в дистрибутивы Linux на основе Fedora, вы можете использовать эту команду:

 sudo dnf установить ffmpeg 

Что такое ffmpeg?

ffmpeg — это один из лучших мультимедийных фреймворков, который содержит различные инструменты, для решения разных задач. Например, ffplay — портативный медиа плеер, утилита ffmpeg может использоваться для обработки и инвертирования файлов, ffserver — для потоковой передачи данных, а ffprobe может анализировать мультимедийный поток.

В набор ffmpeg, кроме утилит, входят такие библиотеки: libavutil libavcodec libavformat libavdevice libavfilter libavresample libswscale libswresample libpostproc. Из-за своей архитектуры, этот набор инструментов очень безопасный, и с помощью него вы можете сделать почти все что угодно с видео или аудио. В этой статье мы будем рассматривать в основном утилиту ffmpeg. Давайте рассмотрим ее синтаксис:

$ ffmpeg -i

  • Опции источника — указывают параметры чтения файла, настройки и так далее;
  • Источник — опция -i задает источник, откуда будет читаться файл, источников может быть несколько и это может быть не только файл, но и устройство;
  • Основные опции — задают параметры работы всей утилиты;
  • Кодеки — кодек, который будет использоваться для сохранения видео и аудио;
  • Преемник — файл или устройство, куда будут записаны данные.

Сейчас мы не будем подробно рассматривать опции, рассмотрим их потом, уже в самих командах.

Водяной знак

Последний пример, который мы рассмотрим — это наложение водяного знака. Фильтр принимает на вход координаты расположения водяного знака на итоговом видео.

Расположим водяной знак по центру. Зная размер исходного видео и png картинки, можно вычислить координаты самим. Например при видео 1280×720 и водяном знаке 200×200, положение по горизонтали и по вертикали . Соответственно значение фильтра . Однако удобнее написать универсальную команду, чтобы ffmpeg посчитал все за нас. Размер видео получим из параметров и , а водяного знака из  и . Далее ту формулу, по которой мы вычисляли координаты запишем в значение фильтра . Готово, мы получили команду для наложения водяного знака по центру:

FFmpeg — мощный инструмент для работы с видео. Решение других задач с его помощью можно посмотреть в статье 19 команд ffmpeg для всех нужд.

Examples

Scaling

Starting with something simple. Resize a 640×480 input to a 320×240 output.

ffmpeg -i input -vf scale=iw/2:-1 output

is input width. In this example the input width is 640. 640/2 = 320. The tells the scale filter to preserve the aspect ratio of the output, so in this example the scale filter will choose a value of 240. See the for additional information.

Multiple input overlay in 2×2 grid

Here four inputs are filtered together using the option. In this case all of the inputs are the (the ) but could be other inputs.

Within the filtergraph the first input is unchanged, and the other three inputs are individually filtered using , , and . The and filters are then used to stack each video into the desired location.

ffmpeg -f lavfi -i testsrc -f lavfi -i testsrc -f lavfi -i testsrc -f lavfi -i testsrc -filter_complex \
"negate; \
 hflip; \
 edgedetect; \
 hstack=inputs=2; \
 hstack=inputs=2; \
 vstack=inputs=2" -map "" -c:v ffv1 -t 5 multiple_input_grid.avi

This next example is the same as above, but uses the and filters instead. The pad filter is used to make an appropriate sized background, and overlay is used to place each video into the correct location. This method is slower than using hstack + vstack as shown above.

ffmpeg -f lavfi -i testsrc -f lavfi -i testsrc -f lavfi -i testsrc -f lavfi -i testsrc -filter_complex \
"pad=iw*2:ih*2; \
 negate; \
 hflip; \
 edgedetect; \
 overlay=w; \
 overlay=0:h; \
 overlay=w:h" -map "" -c:v ffv1 -t 5 multiple_input_grid.avi

Be aware that frames are taken from each input video in timestamp order, so it is a good idea to pass all overlay inputs through a filter to have them begin in the same zero timestamp, such as .

Burnt in Timecode

Using the video filter.

PAL 25 fps non drop frame:

ffmpeg -i in.mp4 -vf "drawtext=fontfile=/usr/share/fonts/truetype/DroidSans.ttf: timecode='09\:57\:00\:00': r=25: \
x=(w-tw)/2: y=h-(2*lh): fontcolor=white: box=1: boxcolor=0x00000000@1" -an -y out.mp4

NTSC 30 fps drop frame

(change the : to a ; before the frame count)_________________________________________________________
                                                                                                     \
ffmpeg -i in.mp4 -vf "drawtext=fontfile=/usr/share/fonts/truetype/DroidSans.ttf: timecode='09\:57\:00\;00': r=30: \
x=(w-tw)/2: y=h-(2*lh): fontcolor=white: box=1: boxcolor=0x00000000@1" -an -y out.mp4

Synthetic Input

The generates a test video pattern showing a color pattern, a scrolling gradient, and a timestamp. This is useful for testing purposes.

This example will create a 10 second output, 30 fps (300 frames total), with a frame size of 1280×720:

ffmpeg -f lavfi -i testsrc=duration=10:size=1280x720:rate=30 output.mpg

can also be used to view the resulting filtergraph:

ffplay -f lavfi -i "testsrc=duration=10:size=1280x720:rate=30"

You can also specify testsrc as a filter:

ffmpeg -filter_complex testsrc OUTPUT

Another type of testsrc is using the :

ffmpeg -f lavfi -i "smptebars=duration=5:size=1280x720:rate=30" output.mp4

Or a color

./ffmpeg -f lavfi -i color=c=red:size=100x100

There are other options for generating synthetic video input, see ​here and ​here («generic equation» filter).

Other Filter Examples

  • Fancy Filtering Examples – Examples for various psychedelic effects and other weird filtering.
  • Null describes the nullsink filter.
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: