По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Решение Cisco для контактных центров UCCX является решением для взаимодействия с клиентом. Основными функциями CCX является обеспечение функционала голосового меню Interactive Voice Response (IVR) и распределение вызова Automatic Call Distribution (ACD). Голосовое меню (IVR) это программный продукт, обеспечивающий клиента возможностью самообслуживания. Обычно, IVR используется для входящих вызовов. При звонке клиенту предлагается нажать одну или несколько кнопок для связи с тем, или иным отделом, предоставляется возможность распознавания речи Automatic Speech Recognition (ASR), автоматически произносится запрашиваемая информация по технологии Text to Speech (TTS). Данное взаимодействие осуществляется по протоколу Media Resource Control Protocol (MRCP), который описан в RFC 4463. Посмотрите структуру взаимодействия UCCX в корпоративном сегменте: Корпоративная сеть с элементом контактного центра на базе решение Cisco Unified Contact Center Express весьма обширна, поэтому, давайте разбираться: Голосовой шлюз - Соединяет Cisco Unified Communications Manager (CUCM) к сегмента телефонной сети общего пользования (ТфОП). Входящие и исходящие транзакции проходят через голосовой шлюз; Кластер серверов CUCM - Обеспечивает функционал телефонии для оконечных устройств (End point), управляет шлюзами по протоколу MGCP, телефонной сигнализацией SIP/SCCP/H.323 и видеоконференцсвязью; UCCX сервер - Обеспечивает функционал многоуровневого голосового меню (IVR) и распределения звонков между операторами; Редактор сценариев IVR (CCX script editor) - Программа, предназначенная для создания, изменения, проверки и отладки сценариев голосового меню, выполненная в виде графического редактора; Ноутбук администратора (Desktop Work Flow Administrator) - Утилита для конфигурации агентов и определения работы агентов; Система отчетности (Cisco Unified Intelligence Center) - Система отчетности. Обеспечивает удобный интерфейс взаимодействия супервизора для просмотра отчетов по работе операторов и производительности контактного центра; Внешние БД - Базы данных, из которых UCCX может получать информацию, например, чтобы предоставлять ее автоматическими средствами TTS звонящему клиенту; ASR/TTS сервер - Сервер, на котором расположены программный продукты для синтеза и распознавания речи; Веб - интерфейс продукта сделан в привычном для Cisco дизайне: Сервер Cisco UCCX, как и любой другой продукт, создан для получения прибыли и, соответственно, имеет лицензионные и пакетные ограничения. В данном описании собраны опции, которые ограничиваются лицензией: Порты IVR (лицензируются поштучно); Проигрывание аудио файлов и обработка цифр по DTMF; Контроль вызова, такой как ответ, отбой, трансфер и так далее; Отказоустойчивость (требуется дополнительная лицензия); Интеграция с корпоративными продуктами через Java DataBase Connectivity (JDBC) интерфейс; Обработка HTTP запросов; Обработка исходящих e-mail; VXML поддержка для голосовых технологий; Интеграция через CTI интерфейс; Обработка XML; Интеграция с сервисами TTS/ASR по протоколу MRCP; Функции автосекретаря; Историческая отчетность и реального времени; Распределение опций по пакетам и соответствующее лицензирование: Опция Cisco Unified CCX Standard Cisco Unified CCX Enhanced Cisco Unified CCX Premium Порты IVR Не ограничено. Определяется производительностью сервера Есть Два IVR порта на одного агента, интеграция по интерфейсу JDBC, исходящие e-mail, VXML для голосовых приложений. Аудио файлы и обработка DTMF Есть Есть Есть Контроль вызова Есть Есть Есть Маршрутизация вызовов, ACD алгоритм и очереди. Есть Есть Есть Контроль агента Контроль вызова, коды отбоя, контроль очереди в реальном времени Автоматические задачи, CTI процессы, запись вызовов по требованию, интегрированный чат Интегрированное место, работа с e-mail и чатами, исходящий обзвон, возможности WFO. Отчетность Есть Дополнительная историческая отчетность реального времени Есть Место «супервизора» Контроль агентов, метрики реального времени для распределения вызовов. Командный чат, мониторинг без ведома агента, запись разговора агента по требованию Есть Функции автосекретаря Есть Есть Есть Интеграция с Cisco IM&P Есть Есть Есть SNMP индикаторы Есть Есть Есть Отказоустойчивость Нет Есть Есть Приоритет в очереди Нет Есть Есть MRCP для TTS/ASR Нет Нет Есть Сервер Cisco UCCX может быть установлен в виртуальной среде VMware, а так же, на следующих аппаратных платформах: Сервера серии MCS-78xx (MCS-7815, MCS-7816, MCS-7835, MCS-7845) Сервера серии HP DL IBM сервера X – серии. Виртуальная машина на Unified Computing System (UCS) B и C серии. Голосовые шлюзы для исходящего обзвона должны иметь прошивку IOS 15.1 (3) T или выше. Поддерживаемые модели 28xx, 29xx, 38xx, 39xx.
img
В этом подробном руководстве показано, как установить ffmpeg в Ubuntu и других дистрибутивах Linux. Он также демонстрирует некоторые полезные команды ffmpeg для практического использования. ffmpeg - это утилита командной строки (CLI) для обработки мультимедийных файлов. Это фреймворк с множеством функций и, благодаря лицензии с открытым исходным кодом, является основой для многих распространенных приложений, таких как VLC, YouTube, iTunes и многих других. Ряд видеоредакторов для Linux используют ffmpeg под GUI. В этом руководстве мы расскажем, как установить ffmpeg, и как использовать его базовые и продвинутые функции. Установка ffmpeg в Linux Установка ffmpeg - это простой процесс. Это популярное приложение, которое доступно в большинстве дистрибутивов Linux через менеджер пакетов. Установка ffmpeg в Ubuntu В Ubuntu ffmpeg доступен в репозитории Universe , поэтому убедитесь, что он включен. а затем обновите список пакетов и установите ffmpeg. Вы можете сделать все это, используя следующие команды в терминале: sudo add-apt-repository universe sudo apt update sudo apt install ffmpeg Готово! Чтобы проверить установку выполните: ffmpeg Вы должны увидеть вывод, описывающий вашу конфигурацию ffmpeg, включая версию. Как вы можете видеть на скриншоте выше, установлена версия 3.4.4. Однако последняя версия ffmpeg на момент написания этой статьи - 4.2. Чтобы установить любую версию 4.x, вы должны установить ffmpeg через PPA (персональный архив пакетов). Существует неофициальный PPA, который вы можете использовать для установки последней версии ffmpeg. Просто используйте эти команды: sudo add-apt-repository ppa:jonathonf/ffmpeg-4 sudo apt update sudo apt install ffmpeg -y Установка ffmpeg в дистрибутивах на основе Arch Чтобы установить ffmpeg в дистрибутивах на основе Arch, используйте следующую команду: sudo pacman -S ffmpeg Установка ffmpeg в дистрибутивах на основе Fedora Чтобы установить ffmpeg в дистрибутивы Linux на основе Fedora, вы можете использовать эту команду: sudo dnf install ffmpeg Установка ffmpeg в CentOS/RHEL FFmpeg недоступен в репозиториях CentOS 8 по умолчанию. Вы можете собрать инструменты ffmpeg из исходного кода или установить его с помощью утилиты dnf из репозитория Negativo17. Репозиторий Negativo17 зависит от репозиториев EPEL (Extra Packages for Enterprise Linux) и PowerTools. Для их включения используйте: sudo dnf install epel-release sudo yum config-manager --set-enabled PowerTools sudo yum-config-manager --add-repo=https://negativo17.org/repos/epel-multimedia.repo После включения этих репозиториев уже можно установить сам ffmpeg: sudo dnf install ffmpeg Установка ffmpeg в Debian Официальные репозитории Debian содержат пакеты FFmpeg, которые можно установить с помощью менеджера пакетов apt. sudo apt install ffmpeg Как использовать ffmpeg: Основы С установленным ffmpeg перейдем к основным командам, чтобы вы начали использовать этот мощный инструмент. Основные строительные блоки ffmpeg: ffmpeg - инструмент командной строки для конвертации мультимедийных файлов между форматами ffplay - простой медиаплеер на основе SDL и библиотек FFmpeg ffprobe - простой мультимедийный анализатор потоков ffmpeg также содержит библиотеки для разработчиков - libavutil, libavcodec, libavformat, libavdevice, libavfilter, libswscale и libswresample. Процесс транскодирования в ffmpeg для может быть описан следующей схемой: 0. Команды ffmpeg Основная форма команды ffmpeg: ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ... Вы должны иметь в виду, что все параметры файла применяются только к файлу, который следует за ними (и вы должны будете записать их снова для следующего файла). Любой файл, которому не предшествует -i, считается выходным файлом. ffmpeg использует столько входов и выходов, сколько вы предоставляете. Вы также можете использовать одно и то же имя как для входного, так и для выходного файла, но вам придется добавить тег -y перед именем выходного файла. Вы не должны смешивать входы и выходы: сначала укажите входные файлы, затем укажите выходные файлы. 1. Получить информацию медиа файла Первое использование ffmpeg - отображение информации о медиафайле. Это можно сделать, не вводя никаких выходных файлов. Просто введите: ffmpeg -i file_name Это работает для аудио и видео файлов: ffmpeg -i video_file.mp4 ffmpeg -i audio_file.mp3 Хотя эта команда полезна, она отображает слишком много информации, которая не относится к вашему файлу (информация о ffmpeg). Чтобы пропустить это, добавьте флаг -hide_banner: ffmpeg -i video_file.mp4 -hide_banner ffmpeg -i audio_file.mp3 -hide_banner Как вы можете видеть, команда теперь выводит только информацию, касающуюся указанного вами медиа-файла (кодировщик, потоки и так далее). 2. Конвертировать медиа файлы Еще один очень полезный способ использования ffmpeg - это беспроблемное преобразование между различными форматами мультимедиа. Вам нужно только указать входные и выходные файлы, так как ffmpeg получит требуемый формат из расширений файлов. Это работает для преобразования видео в видео и аудио в аудио. Вот некоторые примеры: ffmpeg -i video_input.mp4 video_output.avi ffmpeg -i video_input.webm video_output.flv ffmpeg -i audio_input.mp3 audio_output.ogg ffmpeg -i audio_input.wav audio_output.flac Вы даже можете указать больше выходных файлов: ffmpeg -i audio_input.wav audio_output_1.mp3 audio_output_2.ogg Это преобразует входные файлы во все указанные форматы. Чтобы увидеть список всех поддерживаемых форматов, используйте: ffmpeg -formats Опять же, вы можете добавить -hide_banner, чтобы опустить информацию о приложении. Вы можете указать параметр -qscale 0 перед выходным файлом, чтобы сохранить качество видеофайла: ffmpeg -i video_input.wav -qscale 0 video_output.mp4 Кроме того, вы можете указать кодеки, которые вы хотите использовать, добавив -c:a (для аудио) и -c:v (для видео) с последующим названием кодеков, или скопировать, если хотите использовать те же кодеки, что и оригинальный файл: ffmpeg -i video_input.mp4 -c:v copy -c:a libvorbis video_output.avi 3. Извлечение аудио из видео Чтобы извлечь аудио из видеофайла, вы делаете простое преобразование и добавляете флаг -vn: ffmpeg -i video.mp4 -vn audio.mp3 Обратите внимание, что эта команда будет использовать битрейт (скорость передачи) исходного файла. Вы можете установить его вручную, и для этого использовать -ab (audio bit rate): ffmpeg -i video.mp4 -vn -ab 128k audio.mp3 Некоторые распространенные битрейты: 96 КБ, 128 КБ, 192 КБ, 256 КБ, 320 КБ (максимальный битрейт, поддерживаемый mp3). Другими общими параметрами являются -ar (частота звука: 22050, 441000, 48000), -ac (количество аудиоканалов), -f (формат аудио, хотя обычно определяется автоматически). -ab также можно заменить на -b:a. Например: ffmpeg -i video.mov -vn -ar 44100 -ac 2 -b:a 128k -f mp3 audio.mp3 4. Отключение звука в видео Как и в последнем примере, для этого мы добавим простой тег: -an (вместо -vn). ffmpeg -i video_input.mp4 -an -video_output.mp4 Примечание: Тег -an сделает все параметры звука для этого выходного файла бесполезными, поскольку в результате операции не будет звука. 5. Извлечение изображений из видео Допустим, у вас есть серия изображений (например, слайд-шоу), и вы хотите получить все изображения из этого. Просто введите: ffmpeg -i video.mp4 -r 1 -f image2 image-%3d.png -r указывает частоту кадров (сколько кадров извлекается в изображения за одну секунду, по умолчанию: 25), -f указывает формат вывода. Последний параметр (выходной файл) имеет несколько интересное название: в конце он использует %3d. Это просто нумерует ваши изображения с 3 цифрами (000, 001 и так далее). Вы также можете использовать %2d (двухзначный формат) или даже %4d (четырехзначный формат), если хотите. 6. Изменение разрешения видео или соотношения сторон Еще одно простое задание для ffmpeg. Все, что вам нужно сделать, чтобы изменить размер видео, это указать новое разрешение после флага -s: ffmpeg -i video_input.mov -s 1024x576 video_output.mp4 Кроме того, вы можете указать -c:a, чтобы убедиться в правильности аудиокодеков выходного файла: ffmpeg -i video_input.h264 -s 640x480 -c:a video_output.mov Вы также можете изменить соотношение сторон, используя -aspect: ffmpeg -i video_input.mp4 -aspect 4:3 video_output.mp4 7. Добавить изображение обложки в аудио Это отличный способ превратить аудио в видео, используя одну фотографию (например, обложку альбома) для аудио. Это очень полезная функция, когда вы хотите загружать аудиофайлы на сайты, на которых не разрешено ничего, кроме видео и изображений (YouTube и Facebook являются примерами таких сайтов). Вот пример: ffmpeg -loop 1 -i image.jpg -i audio.wav -c:v libx264 -c:a aac -strict experimental -b:a 192k -shortest output.mp4 Просто измените кодеки (-c:v указывает видеокодеки, -c:a указывает аудиокодеки) и имена ваших файлов. Также вам не нужно использовать -strict experimental, если вы используете более новую версию (4.x). 8. Добавить субтитры к видео С ffmpeg просто добавить субтитры к видео. Введите следующее: ffmpeg -i video.mp4 -i subtitles.srt -c:v copy -c:a copy -preset veryfast -c:s mov_text -map 0 -map 1 output.mp4 Конечно, вы можете указать любые кодеки, которые вы хотите (и любые другие дополнительные параметры, связанные с аудио и видео). 9. Сжатие медиа-файлов Сжатие файлов значительно уменьшает размер файла, экономя вам много места. Это может быть важно для передачи файлов. С ffmpeg есть несколько способов уменьшить размер файла. Примечание: Слишком большое сжатие файлов заметно ухудшит качество получаемого файла. Прежде всего, для аудиофайлов просто уменьшите битрейт (используя -b:a или -ab): ffmpeg -i audio_input.mp3 -ab 128k audio_output.mp3 ffmpeg -i audio_input.mp3 -b:a 192k audio_output.mp3 Опять же, некоторые значения битрейта: 96k, 112k, 128k, 160k, 192k, 256k, 320k. Чем выше битрейт, тем выше размер файла и качество. Для видео файлов у вас есть больше вариантов. Один из способов - уменьшить битрейт видео (используя -b:v): ffmpeg -i video_input.mp4 -b:v 1000k -bufsize 1000k video_output.mp4 Вы можете установить флаг -crf (Constant Rate Factor - коэффициент постоянной скорости). Чем ниже CRF, тем выше скорость передачи данных. Также помогает использование libx264 в качестве видеокодека. Вот очень эффективное уменьшение размера с очень небольшим снижением качества: ffmpeg -i video_input.mp4 -c:v libx264 -crf 28 video_output.mp4 CRF от 20 до 30 распространен, но можно выставлять и другие значения. Снижение частоты кадров (фреймрейта) может работать в некоторых случаях (хотя это может очень легко сделать видео медленным): ffmpeg -i video_input.mp4 -r 24 video_output.mp4 -r указывает частоту кадров (в данном случае 24). Вы также можете попробовать уменьшить разрешение видео (смотри выше как это сделать). Дополнительным советом является сжатие звука, делая его стереофоническим и снижая скорость передачи данных. Например: ffmpeg -i video_input.mp4 -c:v libx264 -ac 2 -c:a aac -strict -2 -b:a 128k -crf 28 video_output.mp4 Примечание: -strict -2 и -ac 2 позаботятся о стерео части 10. Обрезать медиа файлы Чтобы обрезать файлы с самого начала, вы должны указать продолжительность, используя -t: ffmpeg -i input_video.mp4 -t 5 output_video.mp4 ffmpeg -i input_audio.wav -t 00:00:05 output_audio.wav Как видите, это работает как для видео, так и для аудио файлов. Обе команды выше делают одно и то же: сохраняют первые 5 секунд входного файла в выходной файл. Можно использовать различные способы ввода длительности, как видно в примере - одно число (количество секунд) и ЧЧ:ММ:СС (часы, минуты, секунды). Вы можете пойти еще дальше, указав время начала с -ss и даже время окончания с -to: ffmpeg -i input_audio.mp3 -ss 00:01:14 output_audio.mp3 ffmpeg -i input_audio.wav -ss 00:00:30 -t 10 output_audio.wav ffmpeg -i input_video.h264 -ss 00:01:30 -to 00:01:40 output_video.h264 ffmpeg -i input_audio.ogg -ss 5 output_audio.ogg Вы можете тут видеть время начала -ss (ЧЧ:ММ:СС), длительность -t в секундах, время окончания -to (ЧЧ:ММ:СС) и время начала -s (начать после указанного времени в секундах). Как использовать ffmpeg: Расширенное использование Теперь мы расскажем о чуть более продвинутых функциях, таких как запись экрана, использование устройств и другие. 1. Обрезка медиа-файлов Чтобы разделить файл на несколько частей, нужно указать несколько разделений (указать время начала, время окончания или продолжительность перед каждым выходным файлом). Посмотрите на этот пример: ffmpeg -i video.mp4 -t 00:00:30 video_1.mp4 -ss 00:00:30 video_2.mp4 Синтаксис довольно прост. Мы указали -t 00:00:30 как продолжительность для первой части (первая часть будет состоять из первых 30 секунд исходного видео). Далее мы указали, что мы хотели бы, чтобы остальные были частью второго видео (начиная с конца последней части, 00:00:30). Это можно сделать для любого количества частей. Имейте в виду, что это работает со звуком тоже. 2. Склейка медиа-файлов ffmpeg также может выполнить противоположный процесс: собрать несколько частей вместе. Для этого вам нужно будет создать новый текстовый файл и начать редактировать его, используя предпочитаемый вами редактор. В примере мы будем использовать touch и >vim. Неважно, как вы называете этот файл. Например, назовем его join.txt и создадим, используя touch: touch videos_to_join.txt Теперь отредактируем его в vim vim videos_to_join.txt Здесь введите полные пути ко всем файлам, которые вы хотите присоединить (они будут объединены в том порядке, в котором вы их здесь пишете), по одному на строку. Убедитесь, что они имеют одинаковое расширение (например, mp4). Вот пример: /home/ubuntu/Desktop/video_1.mp4 /home/ubuntu/Desktop/video_2.mp4 /home/ubuntu/Desktop/video_3.mp4 Сохраните файл, который вы только что отредактировали. Этот метод работает для любых аудио или видео файлов. Теперь введите следующее: ffmpeg -f concat -i join.txt output.mp4 Примечание: наш выходной файл - output.mp4, потому что все наши входные файлы имеют расширение mp4. Это должно объединить все файлы, которые мы записали в join.txt, в один выходной файл. 3. Соедините изображения в видео Таким образом вы можете создать слайдшоу или что-то подобное. Первое, что мы рекомендуем сделать, это убедиться, что фотографии, которые вы хотите собрать, находятся в одном каталоге. Мы поместим наши в папку my_photos. Для картинок рекомендуются расширения .png и .jpg. Какой бы вариант вы ни выбрали, убедитесь, что все изображения имеют одинаковое расширение. Формат -f нашего преобразования должен быть image2pipe. Для ввода необходимо указать дефис -. image2pipe позволяет вам пайпировать (pipe), используя |, результаты команды, такой как cat, в ffmpeg вместо того, чтобы вводить все имена одно за другим. Чтобы это работало, мы также должны упомянуть, что мы хотим, чтобы видеокодеки были скопированы -c:v copy (чтобы правильно использовать изображения): cat my_photos/* | ffmpeg -f image2pipe -i - -c:v copy video.mkv Если вы воспроизводите этот файл, вы можете подумать, что в слайд-шоу были добавлены только некоторые изображения. На самом деле все ваши фотографии были добавлены, но ffmpeg проходит по ним их как можно быстрее. Это означает 1 кадр на фотографию, ffmpeg по умолчанию работает со скоростью около 23 кадров в секунду. Чтобы изменить это, вам нужно указать желаемую частоту кадров -framerate: cat my_photos/* | ffmpeg -framerate 1 -f image2pipe -i - -c:v copy video.mkv В нашем примере мы устанавливаем частоту кадров равную 1, что означает, что каждый кадр (что также означает каждое изображение) появляется в течение 1 секунды. Чтобы добавить аудио, например, фоновую песню, нам нужно указать аудиофайл в качестве входного файла -i audo_file и скопировать аудиокодеки -c: copy. Для кодеков вы можете копировать аудио и видео кодеки одновременно с -c copy. Убедитесь, что вы установили кодеки прямо перед указанием выходного файла. Вы также можете установить частоту кадров, чтобы все ваши изображения синхронизировались с продолжительностью звука, который вы хотите использовать. Чтобы сделать это, разделите количество изображений на продолжительность аудио (в секундах). Для нашего примера у нас есть аудиофайл длиной 22 секунды и 9 изображений. 9 разделить на 22 составляет приблизительно 0,40, поэтому мы будем использовать это для нашей частоты кадров: cat my_photos/* | ffmpeg -framerate 0.40 -f image2pipe -i - -i audio.wav -c copy video.mkv 4. Запись экрана Тут нужно использовать формат -f x11grab. Это запишет ваш XSERVER. В качестве входных данных вы должны будете указать номер вашего экрана (основной экран обычно должен быть 0:0). Но это будет захватывать только верхнюю левую часть экрана. Вы должны добавить размер экрана (или экранов). Наш размер - 1920?1080. Размер экрана должен быть указан перед вводом: ffmpeg -f x11grab -s 1920x1080 -i :0.0 output.mp4 Нажмите q или CTRL + C в любое время, чтобы остановить запись. Вы можете сделать размер выходного файла полноэкранным, введя следующее для размера (вместо 1920?1080 или любого другого установленного разрешения): -s $(xdpyinfo | grep dimensions | awk '{print $2;}') Полная команда: ffmpeg -f x11grab -s $(xdpyinfo | grep dimensions | awk '{print $2;}') -i :0.0 output.mp4 5. Запишите свою веб-камеру Запись ввода с вашей веб-камеры (или другого устройства, такого как USB-камера) еще проще. В Linux устройства хранятся в /dev как /dev/video0, /dev/video1 и так далее: ffmpeg -i /dev/video0 output.mkv И также нажмите q или CTRL + C, чтобы остановить запись. 6. Запишите ваше аудио Linux обрабатывает аудио в основном через ALSA и pulseaudio. ffmpeg может записывать оба, но мы рассмотрим pulseaudio, так как дистрибутивы на основе Debian включают его по умолчанию. Синтаксис немного отличается для двух методов. Для pulseaudio, вы должны использовать force -f alsa и указать устройство ввода по умолчанию как input -i default: ffmpeg -f alsa -i default output.mp3 В настройках звука у дистрибутива убедитесь, что записывающим устройством по умолчанию является то устройство, которое вы хотите записать. Конечно, для любого типа записи вы также можете указать кодеки. Вы можете выбрать конкретную частоту кадров -r. Вы также можете совмещать запись звука с записью с веб-камеры/экрана. ffmpeg -i /dev/video0 -f alsa -i default -c:v libx264 -c:a flac -r 30 output.mkv Вместо записи звука вы можете так же легко добавить аудиофайл в качестве звука поверх для записи экрана или веб-камеры: ffmpeg -f x11grab -s $(xdpyinfo | grep dimensions | awk '{print $2;}') -i :0.0 -i audio.wav -c:a copy output.mp4 Записи в ffmpeg мелкими, поэтому очень маленькая запись может не сохраниться. Мы рекомендуем сделать запись немного дольше и затем обрезать ее (если вам нужно всего несколько секунд), просто чтобы убедиться, что файл действительно будет записан на ваш диск. Основное использование фильтров в ffmpeg Фильтры являются невероятно мощной функцией ffmpeg. Вам доступно огромное количество фильтров, что делает ffmpeg полностью способным обрабатывать любые потребности редактирования. Основная структура для использования фильтра: ffmpeg -i input.mp4 -vf "filter=setting_1=value_1:setting_2=value_2" output.mp4 ffmpeg -i input.wav -af "filter=setting_1=value_1:setting_2=value_2" output.wav Как вы можете видеть, мы указываем видео фильтры -vf, (сокращенно от -filter:v) и аудио фильтры -af, (сокращенно от -filter:a). Фактические фильтры пишутся в двойных кавычках " и могут быть объединены в цепочку через запятую ,. Вы можете указать столько фильтров, сколько хотите. Общая форма фильтра: filter=setting_2=value_2:setting_2=value_2 Различные настройки фильтра и их значения разделены двоеточиями. Вы также можете выполнять математические операции в качестве значений для различных настроек. Более подробное описание различных констант, используемых в выражениях, и различных настроек можно найти в официальной документации фильтра ffmpeg. 1. Масштабирование видео Это очень простой фильтр. Единственными настройками являются ширина w и высота h: ffmpeg -i input.mp4 -vf "scale=w=800:h=600" output.mp4 Как мы уже упоминали, вы можете использовать математические операции для значений: ffmpeg -i input.mkv -vf "scale=w=1/2*in_w:h=1/2*in_h" output.mkv Эта команда устанавливает размер вывода равным половине (1/2) от размера ввода in_w, in_h. 2. Обрезка видео Что касается фильтра масштабирования, настройки - это ширина и высота результирующего файла. При желании вы можете указать координаты для верхнего левого угла разреза (по умолчанию: центр входного видео): ffmpeg -i input.mp4 -vf "crop=w=1280:h=720:x=0:y=0" output.mp4 ffmpeg -i input.mkv -vf "crop=w=400:h=400" output.mkv Как уже отмечалось, вторая обрезка будет вырезать в центре входного файла (так как мы не указали координаты x и y для верхнего левого угла). Первая команда будет вырезать из левого верхнего угла x=0:y=0. Вот пример, который использует математические выражения в качестве значений: ffmpeg -i input.mkv -vf "crop=w=3/4*in_w:h=3/4*in_h" output.mkv Эта команда устанавливает размер вывода на 3/4 от размера ввода (in_w, in_h). 3. Поворот видео Вы также можете повернуть видео по часовой стрелке на определенную величину в радианах. Чтобы упростить задачу, вы можете указать значение в градусах и преобразовать его в радианы, умножив это значение на PI/180: ffmpeg -i input.avi -vf "rotate=90*PI/180" ffmpeg -i input.mp4 -vf "rotate=PI" Первая команда повернет видео по часовой стрелке на 90 градусов. Вторая команда перевернет видео вверх ногами (PI рад = 180 градусов). 4. Преобразование аудиоканала Это может быть полезно, если вы каким-то образом получаете звук только в правом ухе или что-то подобное. Вы можете сделать звук слышимым из обоих ушей (в данном конкретном случае) следующим образом: ffmpeg -i input.mp3 -af "channelmap=1-0|1-1" output.mp3 Это мапит правый 1 аудиоканал на левый 0 и правый 1 аудиоканалы (левое число представляет собой вход, правое число представляет собой выход). 5. Увеличение громкости звука Вы можете умножить громкость звука на любое действительное число. Вам нужно только указать множитель: ffmpeg -i input.wav -af "volume=1.5" output.wav ffmpeg -i input.ogg -af "volume=0.75" output.ogg Первая команда увеличивает громкость в 1,5 раза. Вторая команда делает звук в 1/4 (0,25) раза тише. 6. Настройка скорости воспроизведения Фильтр для видео - setpts (PTS = presentation time stamp). Поскольку мы на самом деле модифицируем PTS, больший коэффициент означает более медленный результат, и наоборот: ffmpeg -i input.mkv -vf "setpts=0.5*PTS" output.mkv ffmpeg -i input.mp4 -vf "setpts=2*PTS" output,mp4 Первая команда удваивает скорость воспроизведения, а вторая команда замедляет видео до 1/2 скорости. Фильтр для аудио - atempo. Есть одно маленькое предостережение: оно может принимать значения только от 0,5 (половина скорости) до 2 (удвоение скорости). Чтобы обойти это, вы можете использовать их один за другим: ffmpeg -i input.wav -af "atempo=0.75" output.wav ffmpeg -i input.mp3 -af "atempo=2.0,atempo=2.0" ouutput.mp3 Первая команда замедляет звук на 1/4 от первоначальной скорости. Вторая команда ускоряет звук в 4 раза (2*2) Чтобы изменить скорость воспроизведения видео и аудио с помощью одной и той же команды, вам нужно использовать filtergraphs 7. Добавить водяной знак Для размещения водяного знака используем фильтр overlay, вместе с координатами его расположения на видео. Например, вотермарк размером 100*100 мы хотим расположить в центре видео с размерами 1280?720. Получим по горизонтали x = (1280 - 100) / 2 = 590 и по вертикали y = (720 - 100) / 2 = 310. Поэтому значение будет overlay=590:310. Но удобнее использовать формулу overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2, где main_w и main_h - высота и ширина видео, а overlay_w и overlay_h - водяного знака. Получим команду: ffmpeg -i source_video.mp4 -i watermark.png -filter_complex "overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" -codec:a copy video_protected.mp4 Завершение В этом руководстве мы рассмотрели установку, базовое использование, расширенное использование и основы фильтров ffmpeg. Мы надеемся, что это может быть полезно для всех, кто хочет попробовать ffmpeg, для кого-то, кто хочет использовать ffmpeg для нескольких задач, или даже просто для того, кто хочет больше узнать о широких возможностях этой удивительной утилиты.
img
Сегментная маршрутизация (Segment Routing, SR) может или не может считаться туннельным решением, в зависимости от конкретной реализации и того, насколько строго вы хотите придерживаться определения туннелей, представленного ранее в статье "Виртуализация сетей". В этой статье будет рассмотрена основная концепция сегментной маршрутизации и две возможные схемы реализации: одна с использованием меток потока IPv6, а другая с использованием меток многопротокольной коммутации по меткам (Multiprotocol Label Switching -MPLS). Каждому устройству в сети с поддержкой SR присваивается уникальная метка. Стек меток, описывающий путь в терминах этих уникальных меток, может быть присоединен к любому пакету, заставляя его принимать определенный указанный путь. Рисунок 5 демонстрирует это. Каждый маршрутизатор на рисунке 5 объявляет IP-адрес в качестве идентификатора вместе с меткой, прикрепленной к этому IP-адресу. В SR метка, прикрепленная к идентификатору маршрутизатора, называется идентификатором сегмента узла (SID узла). Поскольку каждому маршрутизатору в сети присваивается уникальная метка, путь через сеть может быть описан с использованием только этих меток. Например: Если вы хотите перенаправить трафик от A к K по пути [B, E, F, H], вы можете описать этот путь с помощью меток [101,104,105,107]. Если вы хотите перенаправить трафик от A к K по пути [B, D, G, H], вы можете описать этот путь с помощью меток [101,103,106,107]. Набор меток, используемых для описания пути, называется стеком меток. Между D и H есть две связи; как это можно описать? В SR доступно несколько опций, в том числе: Стек меток может включать в себя только идентификаторы SID узла, описывающие путь через сеть в терминах маршрутизаторов, как показано ранее. В этом случае, если бы стек меток включал пару [103,107], D просто перенаправлял бы H в обычном режиме на основе информации локальной маршрутизации, поэтому он будет использовать любой локальный процесс, который он будет использовать для пересылки любого другого пакета, например, распределение нагрузки между двумя каналами для пересылки трафика с меткой SR. Стек меток может включать явную метку для загрузки общего ресурса по любому доступному набору путей, доступных в этой точке сети. H может назначить метку для каждого входящего интерфейса, а также SID узла, привязанный к его локальному идентификатору маршрутизатора. Эти метки будут объявляться так же, как SID узла, но, поскольку они описывают смежность, они называются SID смежности (adjacency). SID смежности уникален локально; он уникален для маршрутизатора, объявляющего сам SID смежности. Третий вид SID, префиксный SID, описывает конкретный достижимый пункт назначения (префикс) в сети. SID узла может быть реализован как SID префикса, привязанный к loopback адресу на каждом маршрутизаторе в сети. Не обязательно, чтобы весь путь описывался стеком меток. Например, стек меток [101,103] будет направлять трафик в B, затем в D, но затем позволит D использовать любой доступный путь для достижения IP-адреса назначения в K. Стек меток [105] обеспечит прохождение трафика через сеть к K будет проходить через F. Не имеет значения, как трафик достиг этой точки в сети и как он был перенаправлен после того, как достигнет F, если он проходит через F, будучи направленным к K. Каждая метка в стеке представляет собой сегмент. Пакеты переносятся от метки к метке через каждый сегмент в сети, чтобы быть транспортированными от головной части пути к хвостовой части пути. Маршрутизация сегментов с многопротокольной коммутацией меток MPLS был изобретен как способ сочетать преимущества асинхронного режима передачи (ATM), который больше не используется широко, с IP-коммутацией. В первые дни сетевой инженерии наборы микросхем, используемые для коммутации пакетов, были более ограничены в своих возможностях, чем сейчас. Многие из используемых наборов микросхем были Field Programmable Gate Arrays (FPGA), а не Application-Specific Integrated Circuits (ASIC), поэтому длина поля, в котором коммутировался пакет, напрямую коррелировала со скоростью, с которой пакет мог коммутироваться. Часто было проще переработать пакет или обработать его дважды, чем включать в заголовок много сложной информации, чтобы пакет можно было обработать один раз. Примечание: повторное использование пакетов по-прежнему часто используется во многих наборах микросхем для поддержки внутренних и внешних заголовков или даже для обработки различных частей более длинного и сложного заголовка пакета. MPLS инкапсулирует исходный пакет в заголовок MPLS, который затем используется для коммутации пакета по сети. На рисунке 6 показан заголовок MPLS. Весь заголовок состоит из 32 бит, метка 20 бит. Устройство пересылки MPLS может выполнять три операции: Текущая метка в заголовке MPLS может быть заменена другой меткой (SWAP). В пакет можно вставить новую метку (PUSH). Текущая метка может быть очищена, а метка под текущей меткой обработана (POP). Операции PUSH и POP переносятся непосредственно в SR: операция SWAP реализована в SR как CONTINUE, что означает, что текущая метка заменяется той же меткой (т. е. заголовок с меткой 100 будет заменен меткой 100), и обработка этого текущего сегмента будет продолжена. Проще всего понять процесс обработки на примере. Рисунок 7 демонстрирует это. На рисунке 7 каждому маршрутизатору присвоена глобально уникальная метка из глобального блока сегментной маршрутизации (Segment Routing Global Block -SRGB). Они объявляются через протокол маршрутизации или другую плоскость управления. Когда A получает пакет, предназначенный для N, он выбирает путь через сеть, используя некоторый локальный механизм. В этот момент: Чтобы начать процесс, A выполнит PUSH серии заголовков MPLS на пакете, которые описывают путь через сеть, [101,103,104,202,105,106,109, 110]. Когда A коммутирует пакет в сторону B, он вставит первую метку в стек, так как нет необходимости отправлять свою собственную метку в заголовке. Стек меток на канале [A,B] будет равен [103,104,202,105,106,109,110]. Когда B получает пакет, он проверяет следующую метку в стеке. Обнаружив, что метка равна 103, он выполнит POP этой метки и перешлет пакет в D. В этом случае стек меток SR выбрал один из двух возможных путей с равной стоимостью через сеть, так что это пример выбора SR конкретного пути. Стек меток на канале [B, D] будет [104,202,105,106,109,110]. Когда D получает пакет, верхняя метка в стеке будет 104. D выполнит POP этой метки и отправит пакет в E. Стек меток на канале [D, E] будет [202,105,106,109,110]. Когда E получает этот пакет, верхняя метка в стеке - 202. Это селектор смежности, поэтому он выбирает конкретный интерфейс, а не конкретного соседа. E выберет правильный интерфейс, нижний из двух интерфейсов на рисунке, и POP этой метки. Верхняя метка теперь представляет собой SID узла для F, который можно удалить, поскольку пакет передается на F. E переработает пакет и также откроет эту POP. Стек меток на канале [E, F] будет [106,109,110]. Когда пакет достигает F, следующей меткой в стеке будет 106. Эта метка указывает, что пакет должен быть передан в G. F выполнит POP метки и передаст ее G. Стек меток на канале [F, G] будет [109,110]. Когда пакет достигает G, следующая метка в стеке - 109, что указывает на то, что пакет должен быть направлен к L. Поскольку G не соединен напрямую с L, он может использовать локальный, свободный от петель (обычно самый короткий) путь к L. В этом случае есть два пути с равной стоимостью к L, поэтому G выполнит POP метки 109 и переадресовывает по одному из этих двух путей к L. В сегменте [G, L] стек меток равен [110]. Предположим, что G решает отправить пакет через K. Когда K получает пакет, он будет иметь стек меток, содержащий [110], который не является ни локальной меткой, ни смежным узлом. В этом случае метка должна оставаться прежней, или сегмент должен иметь CONTINUE. Чтобы реализовать это, K поменяет текущую метку 110 на другую копию той же метки, так что K будет пересылать трафик с той же меткой. На канале [K,L] стек меток будет равен [110]. Когда L принимает пакет, единственной оставшейся меткой будет 110, что указывает на то, что пакет должен быть направлен в M. L будет выполнена POP метки 109, эффективно удалив всю инкапсуляцию MPLS, и перенаправит пакет в M. Когда M получает пакет, он пересылает его, используя обычный IP-адрес, в конечный пункт назначения - N. Концепция стека меток в MPLS реализована в виде серии заголовков MPLS, уложенных друг на друга. Pop метки означает удаление самой верхней метки, push метки означает добавление нового заголовка MPLS в пакет, а continue означает замену метки идентичной меткой. Когда вы работаете со стопкой меток, понятия внутреннего и внешнего часто сбивают с толку, особенно, поскольку многие люди используют идею метки и заголовка как взаимозаменяемые. Возможно, лучший способ уменьшить путаницу - использовать термин "заголовок" для обозначения всего стека меток и исходного заголовка, переносимого внутри MPLS, при этом обращаясь к меткам как к отдельным меткам в стеке. Тогда внутренний заголовок будет исходным заголовком пакета, а внешний заголовок будет стеком меток. Внутренняя метка будет следующей меткой в стеке в любой момент прохождения пакета по сети, а внешняя метка будет меткой, по которой пакет фактически переключается. Хотя в приведенном здесь примере используются IP-пакеты внутри MPLS, протокол MPLS предназначен для передачи практически любого протокола, включая Ethernet. Таким образом, SR MPLS не ограничивается использованием для передачи одного типа трафика, но может также использоваться для передачи кадров Ethernet по сети на основе IP / MPLS. Это означает, что SR можно использовать для поддержки первого варианта использования, обсуждаемого в этой статье, - предоставления услуг Ethernet по IP-сети. MPLS - это туннель? Много написанных и произнесенных слов были пролиты на вопрос о том, является ли MPLS протоколом туннелирования. Здесь туннелирование определяется как действие, а не протокол; это намеренная попытка отделить идею протокола туннелирования от концепции туннелирования как действия, предпринимаемого при передаче трафика через сеть. В случае MPLS это означает, что он может быть, а может и не быть протоколом туннелирования, в зависимости от того, как он используется - как и любой другой протокол. Например, если у вас есть стек меток, помещенных поверх пакета с IP-заголовком, внешняя метка, на которую коммутируется пакет, не является (технически) туннелем. Этот внешний заголовок в сети MPLS фактически является локальным для сегмента, поэтому он либо выталкивается, либо отправляется на каждом маршрутизаторе. Это аналогично заголовку Ethernet для каждого канала. Однако внутренний заголовок переносится в пакете MPLS и, следовательно, технически туннелируется. Внутренняя метка не используется на текущем устройстве для коммутации пакета; он просто переносится как часть пакета. Это определение не идеально. Например, в случае MPLS SWAP или SR CONTINUE, используется ли метка для коммутации пакета или нет? Кроме того, в отличие от заголовка Ethernet в пакете, заголовок MPLS фактически используется при принятии решения о пересылке. Заголовок Ethernet, напротив, просто используется для достижения следующего перехода, а затем отбрасывается. Возможно, более подходящим сравнением было бы следующее: Заголовок MPLS подобен заголовку Ethernet, который используется для достижения перехода за пределы устройства, на которое маршрутизатор в настоящее время передает. Независимо от этих ограничений, этого определения обычно достаточно, чтобы мысленно управлять различием между туннелированием и не туннелированием в MPLS, а также в большинстве других протоколов.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59