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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130

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

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. Тема, посвященная сборкам ffmpeg/ffprobe, работающих под Windows XP.
    Сборки:
    От Gianluigi Tiesi
    От Reino Wijnsma
    Static builds by Kyle Schwarz (последний для WinXP ffmpeg-3.0-win32-static.7z).
     
    GUI под WinXP (ffqueue, WinFF, Video converter).
     
    Сборки для Windows 7
     
    Запуск офф. сборок 7.0.1 на Windows 7  
     
    Список различных сборок.
     
    Архив старых версий ffmpeg на VideoHelp
     
    По общим вопросам написания командных файлов есть отдельная тема "Командная строка, батники, сценарии - bat, cmd".

  • Всего записей: 67 | Зарегистр. 28-02-2007 | Отправлено: 17:23 21-11-2012 | Исправлено: V0lt, 18:34 17-08-2025
    V0lt



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

    Цитата:
          Но одно ещё осталось непонятным. Есть 'audio' файл 'a.dts'. Забыл написать, что 'Mediainfo' пишет:
     
            Тип сжатия - С потерями.
     
          Так как правильно определить - это 'lossy dts' или 'DTS-HD MA'?

    Надо смотреть не в танковую щель, а отчет целиком.
    Пример:

    Код:
    Audio
    Format                         : DTS XLL
    Format/Info                    : Digital Theater Systems
    Commercial name                : DTS-HD Master Audio
    Bit rate mode                  : Variable / Constant
    Bit rate                       : Unknown / 1 509 kb/s
    Channel(s)                     : 8 channels / 6 channels
    Channel layout                 : C L R Ls Rs LFE Lw Rw / C L R Ls Rs LFE
    Sampling rate                  : 48.0 kHz
    Frame rate                     : 93.750 FPS (512 SPF)
    Bit depth                      : 24 bits
    Compression mode               : Lossless / Lossy

    DTS-HD Master Audio - значит присутсвует звук без потерь, что подтверждается полем Compression mode.
    Тут в одном потоке два типа DTS: Lossless и Lossy. Дополнительные Lossy "подпотоки" обычно нужны для совместимости.
     
    По умолчанию FFmpeg декодирует первый "подпоток" Lossless в формат s32p (он же PCM_S32LE).
    Вот так:

    Код:
    Stream #0:0: Audio: dts (dca) (DTS-HD MA), 48000 Hz, 7.1, s32p (24 bit)

    В исходнике 24 бита, а на выходе 32, соответственно  младшие биты заполняются нулями. На качество декодирования это никак не влияет.
     
    Зачем вы смотрите в отчеты XviD4PSP, Я не понимаю.

    Всего записей: 11204 | Зарегистр. 05-02-2003 | Отправлено: 18:32 30-08-2025
    Mannel

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Научился ли ffmpeg полноценно декодировать DTS-HD MA, а не только ядро?
    DTS-HD MA это lossless, примерно как flac.
    DTS ядро в нём lossy, которое могло кодироваться из 16 или 24 бита. Но lossy обычно декодируют в 32 bit float, что удобно для предотвращения клиппинга и дальнейшей обработки (такой как изменение громкости, микширование).
     
    Пишут, что ffmpeg давно научился. Так что DTS-HD MA это как flac. Надо декодировать с битностью, с которой он кодировался. Можно, конечно, и 32 bit float, если предполагается обработка или дальнейшее сжатие.

    Всего записей: 67 | Зарегистр. 26-07-2025 | Отправлено: 18:44 30-08-2025 | Исправлено: Mannel, 18:52 30-08-2025
    Dimitr1s



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

    Цитата:
    Научился ли ffmpeg полноценно декодировать DTS-HD MA, а не только ядро?

    Давно абсолютно правильно декодирует.
     
    V0lt

    Цитата:
    В исходнике 24 бита, а на выходе 32, соответственно  младшие биты заполняются нулями. На качество декодирования это никак не влияет.

    По умолчанию он в 16 бит вытянет, если исходник 24 бита от Lossless следа не останется.

    Всего записей: 2295 | Зарегистр. 02-07-2006 | Отправлено: 19:06 30-08-2025
    LZAA

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
                                 Dimitr1s
     
           Некоторые итоги.
     
           1. Используем 'Mediainfo'.
               a) Для 'lossy dts' пишет:
       
                   Формат - DTS
                   Битовая глубина - 24 bit
                   Тип сжатия - С потерями
     
               b) Для 'DTS-HD MA' пишет:
     
                   Формат - DTS XLL        
                   Битовая глубина - 24 bit
                   Тип сжатия - Без потерь
     
                Таким образом можно определить, какой 'DTS' у нашего файла.
              2. Используем 'FFprobe'.
                  a) Для 'lossy dts' записи "bits_per_raw_sample" нет вовсе.
                  b) Для 'DTS-HD MA' запись "bits_per_raw_sample" есть.

    Всего записей: 2581 | Зарегистр. 09-01-2010 | Отправлено: 22:01 30-08-2025
    Dimitr1s



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    LZAA
    Вообще FFmpeg не плохо, но eac3to намного по удобнее будет. оригинальный от madshi, новый продолжение разработки

    Всего записей: 2295 | Зарегистр. 02-07-2006 | Отправлено: 23:44 30-08-2025
    LZAA

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

         Я всеми этими video и audio занимаюсь иногда и между прочим. Если использовать 'eac3to', то опять же с синтаксисом и командами придётся разбираться. Этот инструмент для специалиста наверное удобнее 'FFmpeg'.
         Мне надо было объединить video c audio. Но audio имело 'оригинальную продолжительность, а video немного меньше по причине 'умельцев', которые увеличили (неизвестно зачем и почему) 'Framerate' оригинального video. Так как время video и audio разные, то при объединении получается дикая разсинхронизация дорожек. Сначала я выровнял время уменьшив 'Framerate' video без перекодировки. Но несмотря на это при объединении дорожек разсинхронизация осталась. Не знаю что было бы, если бы я изменил 'fps' с перекодировкой. Такая мысль была, но пока ещё не попробовал так сделать. Потом мне посоветовали уменьшить время audio. Поэтому я с 'dts to wav' стал разбираться. В конце концов время audio я уменьшил под время video. После объединения дорожек они стали воспроизводиться синхронно. Такая история.

    Всего записей: 2581 | Зарегистр. 09-01-2010 | Отправлено: 02:50 31-08-2025
    Dimitr1s



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

    Цитата:
    ...по причине 'умельцев', которые увеличили (неизвестно зачем и почему) 'Framerate' оригинального video.

    Чаще "умельцы" просто муксят дорогу от видоса с другим фреймрейтом. По уму, нужно перетянуть дорогу с сохранением тональности. Намного проще чем с видеорядом возится.

    Всего записей: 2295 | Зарегистр. 02-07-2006 | Отправлено: 11:36 31-08-2025
    Grishanenko

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

    Код:
     
    ffmpeg -i video1.avi -vcodec libx264 -vf format=yuv420p -an video1.mp4
    ffmpeg -i video1.avi -vcodec libx264 -vf format=yuv420p -crf 23 -an video1.mp4
     

    Оба варианта дают такой лог:

    Код:
     
    frame=   18 fps=0.0 q=29.0 size=       0KiB time=00:00:00.83 bitrate=   0.5kbits
    frame=   65 fps= 63 q=29.0 size=       0KiB time=00:00:02.46 bitrate=   0.2kbits
    frame=  112 fps= 73 q=29.0 size=     256KiB time=00:00:04.03 bitrate= 520.0kbits
    frame=  154 fps= 76 q=29.0 size=     256KiB time=00:00:05.43 bitrate= 386.0kbits
    frame=  192 fps= 74 q=29.0 size=     512KiB time=00:00:06.70 bitrate= 626.1kbits
     

    Почему 29, если и по умолчанию и я дополнительно указал 23?
    Если -crf 17, то в логе 23.
    Если -crf 30, то в логе 36.
    Т.е. всегда +6. Как это можно объяснить и как проверить с каким качеством произошло кодирование?

    Всего записей: 797 | Зарегистр. 17-06-2006 | Отправлено: 22:27 31-08-2025
    Mannel

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Grishanenko
    Хм.. а не может быть такое, что это квантизатор текущей сцены? Он особенно может быть плохим и зашкаливать, если ограничен max bitrate, а сцена сложная.
    Обычно считается, что кванты B кадров (самых сжатых) не должны превышать 22-23, в крайнем случае 25. Это можно увидеть в финальном отчёте, ну и на лету, наверное.

    Всего записей: 67 | Зарегистр. 26-07-2025 | Отправлено: 22:45 31-08-2025
    Dimitr1s



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

    Цитата:
    Почему

    Constant Rate Factor

    Всего записей: 2295 | Зарегистр. 02-07-2006 | Отправлено: 02:02 01-09-2025
    Gideon Vi

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

    Цитата:
    Почему 29, если и по умолчанию и я дополнительно указал 23?

    вероятно, ты путаешь quantizer и constant rate factor

    Всего записей: 8239 | Зарегистр. 02-02-2004 | Отправлено: 06:36 01-09-2025
    Dimitr1s



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Gideon Vi
    qmax (qpmax) тоже только на P-frames ограничит по значению. На I и B-frames вылезти за пределы может.

    Всего записей: 2295 | Зарегистр. 02-07-2006 | Отправлено: 08:23 01-09-2025
    insorg



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Напомните, пожалуйста, кто делал подобное.
    Есть фуллхд видео AVC+AAC, на нём снизу и сверху "для пропорций" добавлены чёрные поля. Как их "обрезать" без перекодирования?
    Помню, что решение было, но в упор не сформулирую что искать...

    Всего записей: 19746 | Зарегистр. 04-11-2010 | Отправлено: 01:27 03-09-2025 | Исправлено: insorg, 01:29 03-09-2025
    shrmn



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

    Цитата:
    добавлены чёрные поля
    ##

    Всего записей: 4616 | Зарегистр. 17-12-2002 | Отправлено: 01:43 03-09-2025
    Mannel

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

    Цитата:
    Как их "обрезать" без перекодирования?

    Без перекодирования можно только по одной стороне (т.е. сверху и снизу, вроде) в метаданных H.264. На рутрекере была тема, но сейчас что-то не могу найти. Наверное, удалили.
    Ну, есть ещё метаданные MKV, но их никто не соблюдает, в отличии от указания в H.264.

    Всего записей: 67 | Зарегистр. 26-07-2025 | Отправлено: 01:55 03-09-2025 | Исправлено: Mannel, 02:06 03-09-2025
    insorg



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    shrmn
    Попробовал. Этот перекодирует жестоко. Не вариант.
     
    Добавлено:
    В общем, пока получилось собрать нечто вот такого вида:
     
    ffmpeg.exe -i %1 -c copy -bsf:v h264_metadata=crop_top=120:crop_bottom=120 -aspect 1920:848 "%~n1_output.%~x1"
     
    Аспект приходится указывать явно, иначе плеер не берёт. А 848 вместо 840 - потому что фуллхд 1080 "на самом деле" является кропом из 1088. Так что взял эту поправку.
     
    Добавлено:
    Теперь к приколам.
    MPC-HC показал нормально, как и требовалось. Но "испытание браузерами" (просто кидаем мышкой видео на пустую вкладку) провалено по обоим фронтам
    Firefox обрезал видео на суммарное количество пикселей снизу. Т.е. показывает верхнее чёрное поле, ниже него кусок полезного кадра, а ниже обрезано как раз по тем самым 848р.
    Edge вообще сплющил исходное видео, хотя и поля обрезал. Как будто он пытается аспект выполнить до кропа, а не после него.
     
    Добавлено:
    Если  
     -aspect 1920:848
    убрать из строки, тогда в Edge всё показывается корректно (как требовалось, поля обрезаны, пропорции в порядке).
    Но тогда в MPC-HC растянутый "полезный" кадр на все 1920х1080 вместо реальных 1920х848. Морды сразу у всех узкие и стрёмные.
    Осталось понять, кто из плееров не прав, или это оба варианта видео файла кривые и надо вообще иначе...
     
    Добавлено:
    Ой, точку перед %~x1 не убрал. Ну да и фиг с ней, работе не мешает.
     
    Добавлено:
    Короче, взял второе видео (без аспекта указанного), кинул на AviDemux с настройками прямого копирования
     
       
     
    И всё стало хорошо. Конечный файл в MPC-HC и Edge играется как положено, без сплющивания кадра.
    Ещё вроде где-то VLC валялся, но его надо найти, чтоб в нём проверить. Может, позже. Если руки дойдут.
     
    Добавлено:
    Наверное, надо будет разобраться, как сделать, чтоб именно ffpmeg с первого же прогона выдал нужный результат. А то копировать копирование копированием ещё одной софтиной сверху... Не прикольно.
     
    Добавлено:
    Глянул медиаинфо всех своих четырёх файлов.
     
    Оригинал
     
    Width : 1920 pixel
    Height : 1080 pixel
    Stored_Height : 1088 pixel
    Sampled_Width : 1920 pixel
    Sampled_Height : 1080 pixel
    Pixel aspect ratio : 1.000
    Display aspect ratio : 1.778 (16:9)
    Rotation : 0.000
     
    С указанным аспект
     
    Width : 1920 pixel
    Height : 1080 pixel
    Original height : 848 pixel
    Stored_Height : 1088 pixel
    Sampled_Width : 1920 pixel
    Sampled_Height : 848 pixel
    Pixel aspect ratio : 1.274
    Original pixel aspect ratio : 1.000
    Display aspect ratio : 2.265 (2.25:1)
    Original display aspect ratio : 2.264
    Rotation : 0.000
     
    Без аспекта
     
    Width : 1920 pixel
    Height : 1080 pixel
    Original height : 848 pixel
    Stored_Height : 1088 pixel
    Sampled_Width : 1920 pixel
    Sampled_Height : 848 pixel
    Pixel aspect ratio : 1.000
    Display aspect ratio : 1.778 (16:9)
    Original display aspect ratio : 2.264
    Rotation : 0.000
     
    После авидемуха
     
    Width : 1920 pixel
    Height : 848 pixel
    Stored_Height : 1088 pixel
    Sampled_Width : 1920 pixel
    Sampled_Height : 848 pixel
    Pixel aspect ratio : 1.000
    Display aspect ratio : 2.264 (2.25:1)
    Rotation : 0.000
     
    Вдруг поможет...

    Всего записей: 19746 | Зарегистр. 04-11-2010 | Отправлено: 02:02 03-09-2025 | Исправлено: insorg, 02:24 03-09-2025
    Mannel

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Не припомню, что указывал aspect, когда экспериментировал. Так что думаю, MPC-HC не прав.

    Всего записей: 67 | Зарегистр. 26-07-2025 | Отправлено: 02:49 03-09-2025
    V0lt



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MPC-HC по умолчанию использует LAV Splitter, который неподдерживает обрезку кадра для MKV.

    Всего записей: 11204 | Зарегистр. 05-02-2003 | Отправлено: 16:43 03-09-2025
    insorg



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    V0lt
    У меня .mp4 контейнер и AVC+AAC внутри.

    Всего записей: 19746 | Зарегистр. 04-11-2010 | Отправлено: 16:47 03-09-2025
    shrmn



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

    Цитата:
    Попробовал. Этот перекодирует жестоко

    Сам кадр в фильме (картинка) - она именно с черными полосами. Удалить полосы без перекодирования невозможно.
    Поэтому и удаление (перекодирование) этих кадров берет время!
    Эта строка: ffmpeg.exe -i %1 -c copy -bsf:v h264_metadata=crop_top=120:crop_bottom=120 -aspect 1920:848 "%~n1_output.%~x1"
    Это "удаление" черных полос - не совсем верное определение.  
    это не физическая обрезка, а добавление метаданных. Некоторые плееры могут учитывать их, но не все.
    Отсюда некоторые плееры будут показывать все корректно, а некоторые нет
    VLC Media Player, MPV, Windows Media Player...Эти плееры не реагирует на эти метаданные.

    Всего записей: 4616 | Зарегистр. 17-12-2002 | Отправлено: 17:51 03-09-2025
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130

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


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru