Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » FFmpeg

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98

Открыть новую тему     Написать ответ в эту тему

guru431

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору


FFmpeg — набор свободных библиотек с открытым исходным кодом, которые позволяют записывать, конвертировать и передавать цифровые аудио- и видеозаписи в различных форматах, а также консольная утилита ffmpeg.exe, представляющая из себя универсальный видеоконвертер.
 

Ссылки на русском:
  • Документация по FFmpeg
  • Статья «19 команд FFmpeg для любых нужд»
  • Статья «20 команд FFmpeg для начинающих»
     
    Примеры использования:
  • Преобразовать в MKV
  • Захвата с экрана, со звуком
  • Кодирование с помощью технологии Nvidia NVENC
  • Поддержка вывода Юникода в консоль Windows
  • Подготовка качественных GIF-файлов из видео при помощи FFmpeg
     
    Поддержка Windows XP
    Последний официальный билд под Windows XP от Zeranoe ffmpeg-20150525-git-8ce564e был в мае 2015. Тема (нужен TOR), посвященная сборкам ffmpeg/ffprobe, работающих под Windows XP.
    Готовые сборки, зеркало версии от 2019, 2020, 2021 года.
    Static builds by Kyle Schwarz (последний для WinXP ffmpeg-3.0-win32-static.7z).
    GUI под WinXP (ffqueue, WinFF, Video converter).
     
    Список различных сборок.
     
    По общим вопросам написания командных файлов есть отдельная тема "Командная строка, батники, сценарии - bat, cmd".

  • Всего записей: 66 | Зарегистр. 28-02-2007 | Отправлено: 17:23 21-11-2012 | Исправлено: V0lt, 16:51 27-01-2024
    Ivan_Vishin

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Имеется рабочая цепочка:
    -filter_complex "[1:v][0:v]scale2ref=1/1*oh:ih/17[v1][bk1];[bk1][v1]overlay=197:75"
     
    Есть вторая цепочка:
    -filter_complex "[1:v]scale=1280:720,setsar=sar=1[lo];[0:v]setsar=sar=1,format=rgba[bg];[bg][lo] blend=all_mode=addition:all_opacity=0.5, format=yuva422p10le"
     
    Помогите пожалуйста вставить нужный код из второй цепочки в первую , чтобы логотип стал на половину прозрачнее...
     
    {P.S. Я ещё совсем "зелёный" в этом, так что сильно не ругайтесь))) постепенно всё изучаю}

    Всего записей: 3 | Зарегистр. 18-09-2020 | Отправлено: 13:23 18-09-2020
    eddiezato



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Сборки для Windows переехали на https://www.gyan.dev/ffmpeg/builds/

    Всего записей: 1644 | Зарегистр. 26-02-2011 | Отправлено: 15:08 18-09-2020
    Ajaja

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ivan_Vishin

    Цитата:
    чтобы логотип стал на половину прозрачнее

    Попробуйте так, например:

    Код:
     
    -filter_complex "[1:v][0:v]scale2ref=1/1*oh:ih/17[l1][v];[l1]format=yuva422p10le,colorchannelmixer=aa=0.5[l2];[v][l2]overlay=197:75"
     

    Всего записей: 1032 | Зарегистр. 17-06-2004 | Отправлено: 19:51 18-09-2020
    Asilus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Сборки для Windows переехали на https://www.gyan.dev/ffmpeg/builds/

    Кто знает, где теперь взять аналоги сборок "shared" что можно было скачать у Zeranoe?  
     

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

    Ваш опонент конечно же это сможеть сделать, он один из давних разработчиков плееров MPC и MPC-BE. А вот для 99% прочих людей это не трагедия... просто катастрофа. К счастью уже появился ресурс заменивший Zeranoe, по крайней мере частично.

    Всего записей: 605 | Зарегистр. 16-10-2007 | Отправлено: 17:02 19-09-2020 | Исправлено: Asilus, 17:07 19-09-2020
    Ivan_Vishin

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ajaja

    Цитата:
    -filter_complex "[1:v][0:v]scale2ref=1/1*oh:ih/17[l1][v];[l1]format=yuva422p10le,colorchannelmixer=aa=0.5[l2];[v][l2]overlay=197:75"

    СПАСИБО!!! ВСЁ РАБОТАЕТ))

    Всего записей: 3 | Зарегистр. 18-09-2020 | Отправлено: 17:19 21-09-2020
    RomanStrel

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте.
    Подскажите, пожалуйста решение проблемы.
    Вот беру любое видео и сохраняю его кусочек в VirtualDub без сжатия.
    Затем кодирую этот полученный файл через FFMPEG вот такой простой командой:
     
    ffmpeg -i 000.avi -c:v libx264 -preset veryslow 111.mp4 -y
     
    В результате получаю видео с мешаниной цветов.
     
    Кадр видео до кодирования
    MediaInfo видео до кодирования
     
    Кадр видео после кодирования
    MediaInfo видео после кодирования
     
    И так с любым видео после VirtualDub - всегда такой результат.
    Какой параметр нужно добавить в команду FFMPEG, чтобы видео кодировалось нормально?
     
    По ошибке сначала отправил сообщение в другую тему, и там был ответ, что видео начинается не с ключевого кадра. Но ведь в несжатом видео после VirtualDub все кадры становятся ключевыми - просто набор полных кадров без промежуточных? Или надо и в этом случае как-то подготавливать сначала несжатое видео?

    Всего записей: 9 | Зарегистр. 06-01-2016 | Отправлено: 01:56 22-09-2020 | Исправлено: RomanStrel, 07:05 22-09-2020
    notinthewoods



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RomanStrel
    Попробуйте добавить

    Цитата:
    -pix_fmt yuv420p

    перед 111.mp4
    PS. Правда, так и не удалось увидеть скрин с "мешаниной цветов" - картинка не загружается((

    Всего записей: 488 | Зарегистр. 31-01-2015 | Отправлено: 03:08 22-09-2020 | Исправлено: notinthewoods, 03:11 22-09-2020
    RomanStrel

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Перезалил скриншот с мешаниной цветов.
     
    notinthewoods
    Вы - мой герой!
     
    -pix_fmt yuv420p
     
    С этим параметром теперь кодируется отлично.
    Спасибо!

    Всего записей: 9 | Зарегистр. 06-01-2016 | Отправлено: 07:17 22-09-2020
    los

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RomanStrel

    Цитата:
    Вот беру любое видео и сохраняю его кусочек в VirtualDub без сжатия.  
    Затем кодирую этот полученный файл через FFMPEG вот такой простой командой:

    а в чем смысл этих операций? Зачем многократное перекодирование и использование
    строгих программ для получения "кусочка" видео?

    Всего записей: 7334 | Зарегистр. 08-09-2001 | Отправлено: 09:10 22-09-2020
    RomanStrel

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    los
    Ну, я собираю эпизоды из фильмов по своим интересам. Поэтому приходится иметь дело с самыми разными исходниками (всевозможные рипы, dvd, youtube, blu-ray и т.п.) и вырезать маленькие кусочки с покадровой точностью, иногда их еще склеивать между собой, добавлять затемнение на переходах, иногда субтитры, ну и по мелочи: обрезать, изменить размер, убрать интерлейс и всё такое.
    Я всё это делать умею только в VirtualDub. Раньше там же и кодировал в xvid, а хотелось бы в x264 через FFMPEG с максимальным качеством, вот и столкнулся с этой проблемой.

    Всего записей: 9 | Зарегистр. 06-01-2016 | Отправлено: 10:57 22-09-2020
    V0lt



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RomanStrel
    Есть же VirtualDub2, в составе которого имеется x264 и вывод в MKV или MP4.

    Всего записей: 10492 | Зарегистр. 05-02-2003 | Отправлено: 11:30 22-09-2020
    notinthewoods



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RomanStrel

    Цитата:
    ffmpeg -i 000.avi -c:v libx264 -preset veryslow 111.mp4 -y  

    Вы одновременно указываете сумасшедший по качеству пресет (соответственно, очень долгое кодирование по времени) и при этом не указываете фактор качества (Constant Rate Factor - crf).
    ffmpeg в этом случае применит по умолчанию crf=23.0 - добротное, среднее качество для абсолютного большинства видео. Но совмещать crf=23.0 и preset veryslow - абсурд. Это как микроскопом разбивать орехи. Если пресет не указывать, ffmpeg применит preset medium - опять же оптимальный вариант для обычного домашнего использования.
    Пресет Верислоу (и при этом crf в районе 14-15-16) используют всякие релизеры для супер-пупер качественных рипов.
     
    Когда я познакомился с ffmpeg и освоил наиболее популярные операции, то забросил всякие там VirtualDub и прочие))
    ffmpeg умеет делать с видео то, что Виртулдабу и не снилось.
     
    Если вы качаете, например с Youtube (обычно там mp4 и mkv), то можно сразу применить такой простой способ перекодирования. Например, скачали mkv 1920x1080 с видео в формате VP9, аудио в формате Opus.

    Цитата:
    ffmpeg -i input.mkv output.mp4

    По умолчанию для видео будут применены кодек libx264 (AVC), crf=23.0, preset medium. Для аудио - кодек aac, битрейт 128 kbps, количество каналов и частота дискретизации - как в исходнике.
    Если хотите указать основные параметры кодирования конкретно, вот пример:

    Цитата:
    ffmpeg -ss 00:00:30 -to 00:00:50 -i input.mkv -c:v libx264 -crf 21.0 -preset faster -r 25 -s 1280x720 -c:a aac -b:a 160K -ac 2 -ar 48000 output.mp4

    Здесь производится кодирование куска видео длительностью 20 сек (с 30-й по 50-ю) кодеком AVC с достаточно хорошим качеством 21, на пресете faster (раз в 8-10 быстрее, чем на veryslow), с частотой кадров 25fps, с ресайзом в 1280x720. Аудио будет закодировано кодеком AAC с битрейтом 160 kbps, стерео (2 канала), 48 kHz
     
    Тайминг можно указать с точностью до миллисекунд, например: -ss 00:00:30.120 -to 00:00:50.680
     
    Если все нужные ролики будут перекодированы по одному шаблону, то и склеить их в ffmpeg не проблема.
     
    PS. Для покадровой точности, как вариант, можно перекодировать mkv в mp4 с небольшим запасом по длительности в обе стороны и затем точно отрезать в SolveigMM Video Splitter.
    Если исходник - mp4, то сразу его можно отправить в SolveigMM Video Splitter.
    Имхо удобнее, чем переводить видео в несжатый формат.
    Для справки. SolveigMM Video Splitter может резать видео с любого кадра, ключевой он или нет, без разницы. Видео сохраняется в исходном качестве (без перекодирования). Только если резка идет с неключевого кадра - именно этот кадр становится ключевым.

    Всего записей: 488 | Зарегистр. 31-01-2015 | Отправлено: 15:53 22-09-2020 | Исправлено: notinthewoods, 17:06 22-09-2020
    RomanStrel

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    notinthewoods
    спасибо вам за подробный комментарий.
     
    Мои ролики обычно очень короткие, в среднем около трех минут. Поэтому время кодирования особой роли не играет.
    Зато качество мне хочется сохранить наиболее высокое, как можно ближе к источнику, чтобы было как можно меньше потерь при кодировании. Потому что иногда бывает очень сложно находить нужные фильмы в хоть каком-то качестве.
    Я бы хранил ролики в несжатом формате, но уж очень они много весят. А хранить весь фильм в исходном видеофайле ради трехминутного эпизода - ну, не хочется.
    Поэтому я хочу кодировать видео в максимальном качестве, но с малым весом.
    Такая вот битва жадности и перфекционизма.
     
    Про CRF я не знал, буду теперь его использовать. Только подскажите, пожалуйста, чем меньшее его значение я выберу, тем больше будет размер файла на выходе? То есть, на каком значении лучше остановиться, чтобы не получилось, что выходной файл почти не отличается по размеру от исходного несжатого?
    Например, на crf=15 - уже не будет заметно невооруженным глазом?
     
    Я пробовал резать средствами FFMPEG, как и вы показали, но слишком уж часто меня не устраивал результат - то аудио съезжает, то лишние кадры остаются, то нужное отрезается.
    А в VirtualDub мне удобно - отметил начало-конец и ровненько вырезал. Да и прочие манипуляции в нем же научился делать. В общем, я привык, мне комфортно. Только вот кодирование в xvid меня смущало, а с x264 как-то сразу не задалось.
     

    Всего записей: 9 | Зарегистр. 06-01-2016 | Отправлено: 19:58 22-09-2020
    notinthewoods



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RomanStrel

    Цитата:
    Я пробовал резать средствами FFMPEG, как и вы показали, но слишком уж часто меня не устраивал результат - то аудио съезжает, то лишние кадры остаются, то нужное отрезается.

    А где я это показывал? Речь шла о кодировании с указанием тайминга. Естественно, резка, т.е. сохранение без перекодирования будет происходить по ближайшему ключевому кадру. По умолчанию интервал между ключевыми кадрами keyint=250 (MediaInfo  - Настройки программы). Это означает, что при частоте кадров 25fps -> 250/25=10сек - будет промежуток времени между ключевыми кадрами, если нет резкой смены изображения в кадре. Поэтому максимальный промах при резке окажется примерно +/- 5 сек.
    Кстати, можно при кодировании задать параметр:

    Цитата:
    -g 25

    В результате даже на спокойном, статичном видео интервал между ключевыми кадрами станет 25 кадров, т.е. всего 1 секунда. Правда, это приведет к повышению битрейта.
     
    Ну, хорошо, если уж так нравится VirtualDub, предлагаю провести эксперимент. Выберите начало-конец нужного фрагмента и вставьте числовые значения таймингов с точностью до миллисекунд в -ss и -to в параметры кодирования кодеком AVC. Вот сразу и получите нужный ролик с точностью до кадра. Пропускается абсолютно лишний шаг с получением предварительного несжатого видео.
    *******
    Теперь, что касается качества кодирования видео. Уж не знаю, на какой многометровой панели вы там смотрите ваши произведения, но если речь идет об обычном 24 дюймовом мониторе, то значения параметров, напрямую влияющих на битрейт:

    Цитата:
    -crf 21.0 -preset faster

    вполне хватит. Вряд ли кто-то в этом случае увидит разницу между исходником и результатом.
    Если речь идет о более солидных экранах, то crf соответственно меньше - 20, 19, 18...
    -preset medium ... slow ... slower
    Всё это нарабатывается многократным тестированием и определяется зачастую визуально.
     
    На битрейт и, как следствие, на объем файла влияют разные факторы. Например, для зернистого или зашумленного видео битрейта требуется существенно больше, чем при таком же crf для чистого, "гладкого" видео. Аналогично, если речь идет о динамичном видео (драка, погоня и т.п.) по сравнению с вялотекущим (в кадре разговор сидящих людей). Подобная ситуация, если сравнить яркие, насыщенные цвета, много мелких элементов - с одной стороны и мутная, размытая, серая однообразная картинка - с другой.
     
    Пока не набрались опыта, можно приблизительно ориентироваться на такой показатель - Бит/(Пиксели*Кадры). Это есть в MediaInfo. Повторяю, очень приблизительно.
    0.060 - 0.100 - "ширпотреб"
    0.100 - 0.200 - вполне качественное видео
    0.200 - 0.300 и выше - высококачественные рипы с блюреев и т.п.
    Например, Midway.2019.US.BDRip.1080p.seleZen.mkv имеет аж 0.473

    Всего записей: 488 | Зарегистр. 31-01-2015 | Отправлено: 22:56 22-09-2020
    RomanStrel

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    notinthewoods
    спасибо снова.
     

    Цитата:
    Речь шла о кодировании с указанием тайминга.

    А ведь и правда, я пробовал именно резать без перекодирования - тогда все эти огрехи и вылезали. Про указание таймингов для кодирования, которые можно взять из VirtualDub, я как-то даже не подумал. Обязательно попробую.
     

    Цитата:
    Уж не знаю, на какой многометровой панели

    Нет-нет, никаких огромных экранов. Даже сами ролики у меня в большинстве своём 720p и ниже.
    Про наилучшее качество я имел в виду, чтобы в выходном файле не появлялись заметные глазу артефакты кодирования, вроде квадратиков или типа того.
    То есть, чтобы не было ощущения "ой, стало хуже".
     

    Цитата:
    -crf 21.0 -preset faster
    вполне хватит. Вряд ли кто-то в этом случае увидит разницу между исходником и результатом.

    Вот это я и хотел выяснить - буду ставить такие параметры.
     

    Цитата:
    в кадре разговор сидящих людей

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

    Всего записей: 9 | Зарегистр. 06-01-2016 | Отправлено: 01:15 23-09-2020
    los

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RomanStrel,
    если у вас windows посмотрите myFFmpeg, возможно, она заменит вам VirtualDub.

    Всего записей: 7334 | Зарегистр. 08-09-2001 | Отправлено: 10:34 23-09-2020
    ebe

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Люди! Подскажите пожалуйста. Нужно собрать видео из файлов png. Файлы начинаются например с имени 083684.png и далее.
    Что только не пробовал, не видит ffmpeg файлы в директории и вываливает ошибку  Could find no file with path '2/%006d.png' and index in the range 0-4
    2/%006d.png: No such file or directory.
     
    Файлы лежат в директории "2" на диске.
    Вот с такими командами пробую собрать:
    ffmpeg -framerate 25 -i 2/%006d.png -c:v huffyuv 1.mkv

    Всего записей: 509 | Зарегистр. 19-02-2002 | Отправлено: 16:56 23-09-2020 | Исправлено: ebe, 17:38 23-09-2020
    Ajaja

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ebe
     
    ffmpeg -framerate 25 -start_number 083684 -i 2/%006d.png -c:v huffyuv 1.mkv

    Всего записей: 1032 | Зарегистр. 17-06-2004 | Отправлено: 20:43 23-09-2020 | Исправлено: Ajaja, 20:44 23-09-2020
    notinthewoods



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В myFFmpeg (графический интерфейс для ffmpeg) очень слабое окно превью:

    Для точного позиционирования по кадрам малопригодно.
    Вопрос, собственно, в следующем. Подскажите прогу с хорошим окном предпросмотра для любых типов видеофайлов. Чтобы, как в VirtualDub была удобная навигация по кадрам, в том числе по горячим клавишам. Индикатор времени с точностью до миллисекунд. VirtualDub устарел, напр. файл с высоким разрешением с видео VP9 в нем жестко тормозит (хотя в любом плейере играется без проблем).
    Интересует только функциональность окна превью, остальные функции мне не важны, т.к. кодирую во ffmpeg в командной строке.

    Всего записей: 488 | Зарегистр. 31-01-2015 | Отправлено: 23:21 26-09-2020
    Ajaja

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    notinthewoods
    Avidemux, например.

    Всего записей: 1032 | Зарегистр. 17-06-2004 | Отправлено: 00:00 27-09-2020
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98

    Компьютерный форум Ru.Board » Компьютеры » Программы » FFmpeg


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru