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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    los

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

    Цитата:
    но тема еще глубже, на самом деле )

    значительно, т.к. кроме обсуждаемого nclc есть еще gama, chrm...
     
    P.S.
    colr, gama... - названия атомов QuickTime, в других программах эти параметры могут называться по другому.
     
     
    Добавлено:
    Плюс не все плееры поддерживают эти значения или корректно работают с ними.

    Всего записей: 7334 | Зарегистр. 08-09-2001 | Отправлено: 12:26 03-07-2022
    V0lt



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

    Цитата:
    При даунскейле HD>SD надо править колориметрию.

    Для H.264, H.265 и других современных кодеков - не надо. Просто проверьте чтобы у выходного видео потока были правильные параметры (BT709 и прочее).
    Все современные плееры умеют читать эти параметры.
     
    Gideon Vi

    Цитата:
    to convert 720p HD DVD content to regular DVD content

    Врядли UriF собирается делать DVD-Video.

    Всего записей: 10492 | Зарегистр. 05-02-2003 | Отправлено: 13:10 03-07-2022
    artenax

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

    Цитата:
    Все современные плееры умеют читать эти параметры

    Не знаю, пользователи MPC-HC как-то жаловались. У меня только SMPlayer учитывает (если видеодрайвер поддерживает), VLC нет. Там ведь большая цепочка. Декодер или демуксер должны прочитать тип колориметрии, передать рендеру или видеодрайверу и тот уже должен преобразовывать YUV>RGB по правильным коэффициентам (аппаратно).
     

    Цитата:
    Врядли UriF собирается делать DVD-Video

    А не важно. SD есть SD.
    Можно, конечно, и не править. Но опять же, ffmpeg по умолчанию не прописывает колориметрию в контейнер (в отличии от HandBrake). А для SD по умолчанию плееры предполагают 601. Если хотите SD с 709 (нестандарт), то нужно указать для x264:

    Код:
    -x264opts colormatrix=bt709:colorprim=bt709:transfer=bt709:fullrange=off

    это не коррекция, а просто метка, что поток 709.

    Всего записей: 106 | Зарегистр. 11-06-2022 | Отправлено: 16:12 03-07-2022 | Исправлено: artenax, 16:13 03-07-2022
    V0lt



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

    Цитата:
    Не знаю, пользователи MPC-HC как-то жаловались.

    Сейчас там несколько лет LAV Filters на FFmpeg, который все это понимает и передает в рендерер.

    Цитата:
    А для SD по умолчанию плееры предполагают 601.

    Предполагают, если ничего не указано.

    Всего записей: 10492 | Зарегистр. 05-02-2003 | Отправлено: 18:32 03-07-2022
    UriF

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    artenax
    Я сомневаюсь, что исходные видео HD (скачал с веб сайтов путем перехвата стримов, используя ffmpeg или cUrl).  Я не знаю, какой был colormatrix в исходном видео.  И последнее.  Что можно применять для H265?  "-x265opts"?
     
    Я просто заметил, что краски стали блеклыми, причем, на 2-х видео и это не зависело от кодека (H264/H265) и crf.  Моя цель была уменьшить размер видео файла, т.к. у меня 24" монитор и мне 480p более чем достаточно (в основном, видео 720p и парочка 1080p).   Я размер файла действительн радикально уменьшил (особенно, используя H265).  Я еще не готов перекодировать свой зверинец на AV1, т.к. компьютеру 8 лет, и я не знаю, поддерживает ли его мое железо (кроме того, время декодинга, как пишут в дикументации, заоблачное).
     
     
    Добавлено:
    Вот, что я использовал

    Цитата:
    ffmpeg -i $file scale=858:482-c:v libx265 -crf 25 -c:a copy $Outfile

     
    Добавлено:
    los
    Прошу прощения, но у меня Windows, у меня другие установки

    Всего записей: 816 | Зарегистр. 14-06-2004 | Отправлено: 23:31 03-07-2022
    artenax

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    UriF
    Для x265 будет -x265-params. В общем-то для x264 тоже можно использовать -x264-params, это даже более современно и рекомендуется.
    А если колориметрия не поможет, можно попробовать установить fullrange=on. Если это запись компьютерных или игровых стримов.

    Всего записей: 106 | Зарегистр. 11-06-2022 | Отправлено: 00:36 04-07-2022
    UriF

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    artenax
    Нет, это обычные фильмики, которые, как Вы понимаете, убирают из сети копирайторы, когда поймают (получаю ссылку на стрим или файл через VideoDownloadHelper, если jDownloader или Ant Downloader не подхватывают, беру через ffmpeg/cUrl скрипты) (поэтому пусть валяется на харде, может, в кои века захочу еще посмотреть).  Сейчас прогнал через ffmpeg 4-х часовое видео с Вашими параметрами и -crf 18.  Получил даже более контрастное видео, чем оригинал.   Я попробую H265 позже, т.к. время енкодинга в 1.5-2 раза больше, чем H264.  Вы имеете в виду так?

    Цитата:
    -x264opts fullrange=on


    Всего записей: 816 | Зарегистр. 14-06-2004 | Отправлено: 01:49 04-07-2022
    artenax

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

    Цитата:
    Вы имеете в виду так?

    Да, но если это обычные фильмы, то fullrange должно быть off (по умолчанию, так что можно и не указывать).
     

    Цитата:
    Получил даже более контрастное видео, чем оригинал

    Не должно быть разницы, по идее.
     

    Цитата:
    Я сомневаюсь, что исходные видео HD

    Не так важно, что там изначально. HD разрешение будет преобразовываться в RGB по 709. Если цель, чтобы исходник и рип смотрелись одинаково. Если Вас устраивает исходник.
    Потому что может быть в исходнике 601 апскейлнутый до HD, который играется как 709.
     
    Добавлено:
    Если онлайн кинотеатры брали sd bd рипы с торрентов, то там может быть что угодно (в зависимости от того, что применял релизер).

    Всего записей: 106 | Зарегистр. 11-06-2022 | Отправлено: 02:08 04-07-2022 | Исправлено: artenax, 02:09 04-07-2022
    UriF

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А можно так или это глупость?

    Цитата:
    -x264opts colormatrix=bt709:colorprim=bt709:transfer=bt709:fullrange=on

       
    И еще один вопрос - стоит ли связываться с AV1 или пока это это эксперимент?  
     
    Добавлено:
    Итак  

    Цитата:
    -x264opts fullrange=on

    Также, как и по умолчанию
     

    Цитата:
    -x264opts colormatrix=bt709:colorprim=bt709:transfer=bt709:fullrange=on

    тоже самое
     

    Цитата:
    -x264opts colormatrix=bt709:colorprim=bt709:transfer=bt709:fullrange=off

    это более-менее подходит (если не присматриваться внимательно, то чуть-чуть отличается)
     
    Если ничего лучшего нет, то приму этот вариант.  Еще раз спасибо, что Вас отвлек

    Всего записей: 816 | Зарегистр. 14-06-2004 | Отправлено: 02:46 04-07-2022
    UriF

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Народ поставил на интернете параметры для H265.  Я это преобразовал для H264.  
    Цитата:
    artenax
    был абсолютно прав, предлагая заставить использовать ffmpeg схему BT.709, поскольку по умолчанию для SD, по-видимому, BT.601.  Народные умельцы добавили кое-какую оптимизацию для H265.  Я попробовал версию, предлагаемую
    Цитата:
    artenax
    , для H265, но эффекта не было, а H264 был, поскольку для -x265-params  (вместо -x264opts) не существует параметра fullrange,  а есть параметр range со значениями full/limited.  Видимо, поэтому там что-то чего-то убивает, а этот код дал такой же результат, как для H264.  Я попробовал с параметром -vtag hvc1 (для H265) и без, но результат не увидел.
    H264

    Цитата:
    ffmpeg -i input.mp4  -filter:v "scale=858:482:in_color_matrix=auto:in_range=auto:out_color_matrix=bt709:out_range=tv" -pix_fmt:v "yuv420p" -colorspace:v "bt709" -color_primaries:v "bt709" -color_trc:v "bt709" -color_range:v "tv" -c:a copy output.mp4

     
    H265

    Цитата:
    ffmpeg -i input.mp4 -c:v libx265 -vtag hvc1 -filter:v "scale=858:482:in_color_matrix=auto:in_range=auto:out_color_matrix=bt709:out_range=tv" -pix_fmt:v "yuv420p" -colorspace:v "bt709" -color_primaries:v "bt709" -color_trc:v "bt709" -color_range:v "tv" -c:a copy output.mp4

     
    Если использовать H265 то можно даже вместо mp4 дать mkv.  Возможно, для mkv -vtag hvc1 имеет значение, не могу судить.
    https://stackoverflow.com/questions/71397605/ffmpeg-mjpeg-h-265-smeared-color-on-output-video-file
     
    С кодеком AV1 решил не экспериментировать, т.к. как было написано где-то на интернете время декодинга в 10 раз больше, чем на H264

    Всего записей: 816 | Зарегистр. 14-06-2004 | Отправлено: 05:18 05-07-2022
    artenax

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

    Цитата:
    стоит ли связываться с AV1 или пока это это эксперимент?

    Я как-то делал покадровое сравнение и у AV1 меньше всего артефактов на низком битрейте, но кодится действительно очень долго. Также меньше шума, но это не сказать чтобы плюс. Есть несколько кодеров. Например, rav1e на языке Rust вроде как побыстрее, чем aom. И есть несколько декодеров, dav1d гораздо быстрее, чем aom. Поскольку команда ffmpeg официально не делает сборок, это делают волонтеры, то в их публичных ffmpeg сборках может не быть нужных кодеков. Особенно rav1e, поскольку не все хотят связываться с Rust. И что будет использоваться при декодировании в плеерах опять же зависит от встроенных ffmpeg либ.
    Но вам никто не мешает провести тесты кодирования, покрутить настройки.
    Сейчас уже пилят H.266 (патентный аналог AV1), есть публичные кодеры, но не в составе ffmpeg, а значит и плееры не поймут.
     
    fullrange для обычных видео лучше выбирать limited, он же tv или оставлять как есть.

    Всего записей: 106 | Зарегистр. 11-06-2022 | Отправлено: 07:09 05-07-2022
    los

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

    Цитата:
    Если использовать H265 то можно даже вместо mp4 дать mkv.

    А также если использовать h.264 и многие др.

    Всего записей: 7334 | Зарегистр. 08-09-2001 | Отправлено: 08:50 05-07-2022
    UriF

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

    Цитата:
    fullrange для обычных видео лучше выбирать limited, он же tv или оставлять как есть

    Я и говорю, что я заменил fullrange на range и поставил limited, но получил те же самые блеклые краски на H265, а вот, применив скрипт, на который дал ссылку, получил тот самый эффект, который и был на H264, согласно Вашим рекоммендациям.  Я не знаю, что там добавили и нахимичили, но этот скрипт, который я чуть подправил для H264 дает желаемый эффект.  В общем, я не собираюсь экспериментировать.   Я думаю ПОКА перекодировать эти видики с H264 на H265 (которые в большинстве 480p), как и мой старый зверинец, который на avi, asf и wmv, чтобы уменьшить место на харде.  Кстати, у меня легальный Nero 2016, а там H265 нет.  Microsoft хочет за него деньги, но можно взять его спокойно бесплатно отсюда (Windows Movies ругнулся на отсутствие этого кодека)
    https://free-codecs.com/download/hevc_video_extension.htm
    Я лично предпочитаю смотреть любые видео на своем десктопе, а потому смотрю через Daum или VLC.  Впрочем, я до этого никогда ffmeg не пользовался.  Я на него взглянул, когда мне пришлось склеивать видео.  Avidemux склеил, но некоторые фрагменты стали невидимые.  Тоже самое мне вернули другие склейщики, а ffmpeg это сделал через такой трюк

    Цитата:
    ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts input1.ts
    ffmpeg -i input2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts input2.ts
    ffmpeg -i input3.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts input3.ts
    ffmpeg -i "concat:input1.ts|input2.ts|input3.ts" -c copy output.mp4
     
    Потом мне удалось склеить старые wmv, на которые все склейщики вообще выдавали идиотские ошибки.  AsfBin склеил все wmv в asf, но когда я решил asf перегнать в mp4, но в процессе ffmpeg мне в логе дал кучу ошибок

    Цитата:
    ffmpeg -i out.asf -c:v libx264 -crf 23 -c:a aac -q:a 100 output.mp4

     Тогда я конвертировал каждый wmv в mp4, а затем склеил указанным выше способом

    Цитата:
    ffmpeg -i input.wmv -c:v libx264 -crf 23 -c:a aac -q:a 100 output.mp4

    После этого я стал отрезать с видиков рекламные куски через ffmpeg, которые в начале и в конце (Avidemux делает эту работу, но затем приходилось доделывать через ffmpeg

    Цитата:
    ffmpeg -i input.mp4 -ss 00:00:01.620 -t 1:59:52.200 -c:v copy -c:a copy output.mp4

    где  -ss - конец рекламы и начало видео, а -t - полное время ролика  
    , и тогда решил попробовать уменьшить размер моего зверинца, меняя резолюцию,  -crf, -preset (что было мертвому припарки) и кодек и пришел сюда за советом.
     
    Кстати, через ffmpeg можно и скачивать файлы и стримы, если VideoDownloadHelper Вам даст на них ссылки

    Цитата:
    ffmpeg -headers "Referer: https://имя сайта.net/"  -i "https://ссылка на стрим .m3u8 или ссылка на файл.mp4" -c copy -bsf:a aac_adtstoasc output.mp4

    рекоммендовали также  

    Цитата:
    -headers "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0"

    но у меня брал и так
     
    Изменение аспекта без энкодинга

    Цитата:
    ffmpeg -i input.mp4 -aspect 4:3 -c:a copy -c:v copy output.mp4


    Цитата:
    ffmpeg -i input.mp4 -aspect 16:9 -c:a copy -c:v copy output.mp4

    с энкодингом добавляем

    Цитата:
    setsar=1

    если не помогает, то для упомянутой резолюции 858x482 и H264 (для H265 не проверял) добавляем  

    Цитата:
    pad=858:482:107:0

    Полный код будет иметь следующий вид

    Цитата:
    ffmpeg -i input.mp4  -filter:v "scale=858x482:in_color_matrix=auto:in_range=auto:out_color_matrix=bt709:out_range=tv,setsar=1" -pix_fmt:v "yuv420p" -colorspace:v "bt709" -color_primaries:v "bt709" -color_trc:v "bt709" -color_range:v "tv" -c:a copy output.mp4


    Цитата:
    ffmpeg -i input.mp4  -filter:v "scale=858x482:in_color_matrix=auto:in_range=auto:out_color_matrix=bt709:out_range=tv,setsar=1,pad=858:482:107:0" -pix_fmt:v "yuv420p" -colorspace:v "bt709" -color_primaries:v "bt709" -color_trc:v "bt709" -color_range:v "tv" -c:a copy output.mp4


    Всего записей: 816 | Зарегистр. 14-06-2004 | Отправлено: 09:21 05-07-2022 | Исправлено: UriF, 22:28 14-08-2022
    mithridat1



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

    Всего записей: 4941 | Зарегистр. 05-01-2006 | Отправлено: 21:28 23-07-2022
    UriF

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Прошу прощения, я не совсем понимаю, в чем разница между "master build" и "release".  master build - это исправление багов или ночные снапшоты?  

    Всего записей: 816 | Зарегистр. 14-06-2004 | Отправлено: 02:17 27-07-2022
    bbcby

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день, можно ли FFMPEG указать, чтобы он кодировал последний фрейм как I-frame?
    т.е. автоматически.

    Всего записей: 615 | Зарегистр. 11-06-2003 | Отправлено: 15:57 06-08-2022
    Ilya_SpongeBob

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ffplay.exe (ffmpeg-3.0-win32-static.7z из шапки) лагает при воспроизведении файла 1080p. Как понизить bitrate в командной строке, чтобы не лагало?

    Всего записей: 482 | Зарегистр. 16-02-2011 | Отправлено: 20:10 10-08-2022
    V0lt



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

    Цитата:
    Как понизить bitrate в командной строке

    В шапке статья "20 команд FFmpeg для начинающих", там ищите "5. Сжатие видео" и дорабатывайте под свои нужды. Можете еще почитать H.264 Video Encoding Guide для понимания.
     
    Но не факт, что это поможет, т.к. ffplay.exe не относится к быстрым плеерам.

    Всего записей: 10492 | Зарегистр. 05-02-2003 | Отправлено: 21:57 10-08-2022
    Ilya_SpongeBob

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

    Цитата:
    В шапке статья
    Пробовалась команда -b . Не работает (не видно, чтобы она что-то меняла в командной строке и в самом видео, лагает точно так же). И мне надо не конвертировать, а на лету воспроизводить.

    Всего записей: 482 | Зарегистр. 16-02-2011 | Отправлено: 23:09 10-08-2022 | Исправлено: Ilya_SpongeBob, 00:10 11-08-2022
    V0lt



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

    Цитата:
    Как понизить bitrate

    Цитата:
    И мне надо не конвертировать

    У вас взаимоисключающие требования.
    Никак.  

    Всего записей: 10492 | Зарегистр. 05-02-2003 | Отправлено: 06:50 11-08-2022
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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