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

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



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

    Цитата:
    Есть видеофайл на пару минут. Надо взять первые 2 секунды и повторить их 100 раз.
    Реально ли сделать такое 1 командой FFmpeg без промежуточных видеофайлов?

    ffmpeg -i input.mp4 -filter_complex "[0:v]trim=0:2,setpts=PTS-STARTPTS[v];[0:a]atrim=0:2,asetpts=PTS-STARTPTS[a];[v][a]loop=99:1:0[vout][aout]" -map "[vout]" -map "[aout]" -t 200 output.mp4

    Всего записей: 4616 | Зарегистр. 17-12-2002 | Отправлено: 10:14 24-08-2025
    V0lt



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

    Цитата:
    ffmpeg -i input.mp4 -filter_complex "[0:v]trim=0:2,setpts=PTS-STARTPTS[v];[0:a]atrim=0:2,asetpts=PTS-STARTPTS[a];[v][a]loop=99:1:0[vout][aout]" -map "[vout]" -map "[aout]" -t 200 output.mp4  

    Как-то замудрено и не работает.

    Код:
    [AVFilterGraph @ 000001d1767f5cc0] More input link labels specified for filter 'loop' than it has inputs: 2 > 1
    [AVFilterGraph @ 000001d1767f5cc0] Error linking filters
    Error : Invalid argument

    Вы это сами проверяли?

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Действительно ли при работе FFmpeg в связке с Python, когда Python собирает онлайн поток в память и сбрасывает кусками по 50мб на диск - может чаще происходить пропуск пакетов, чем если бы FFmpeg скачивал фрагменты небольшими частями?

    Всего записей: 1506 | Зарегистр. 05-04-2010 | Отправлено: 22:10 24-08-2025
    Gideon Vi

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

    Цитата:
    Есть видеофайл на пару минут. Надо взять первые 2 секунды и повторить их 100 раз.
    Реально ли сделать такое 1 командой FFmpeg без промежуточных видеофайлов?

    можно попробовать через pipe. Берем кусок в две секунды и далее его прогоняем через фильтр

    Код:
    ffmpeg -hide_banner -y -i input.mp4 -t 2 -c copy -f nut - | ffmpeg -hide_banner -y -i - -filter_complex "[0:v]loop=99:size=60:start=0,setpts=N/FRAME_RATE/TB[v]; [0:a]aloop=99:size=96000,asetpts=N/SR/TB[a]" -map "[v]" -map "[a]" -c:v libx264 -preset veryfast -crf 18 -c:a aac -b:a 192k out.mp4

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

    Всего записей: 8239 | Зарегистр. 02-02-2004 | Отправлено: 01:41 25-08-2025 | Исправлено: Gideon Vi, 02:52 25-08-2025
    V0lt



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Gideon Vi
    Звук можно вообще игнорировать.
    А нельзя ли без filter_complex сделать? Как это обычно объединяют видеофайлы (перечисляя их в текстовом файле-списке), но чтобы только по 2 секунды из каждого файла брать.

    Всего записей: 11204 | Зарегистр. 05-02-2003 | Отправлено: 16:33 25-08-2025
    Gideon Vi

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

    Цитата:
    А нельзя ли без filter_complex сделать?

    ну...

    Код:
    ffmpeg -hide_banner -y -i input.mp4 -t 2 -c copy -f nut - | ffmpeg -hide_banner -y -f nut -i - -vf "fps=30,loop=99:size=60:start=0,setpts=N/FRAME_RATE/TB" -c:v libx264 -crf 18 -preset veryfast -movflags +faststart out.mp4

    работа -stream_loop с pipe под вопросом, без pipe задача для меня не решаемая.
    fps и size по хорошему нужно брать в соответствии с исходным видео

    Всего записей: 8239 | Зарегистр. 02-02-2004 | Отправлено: 18:22 25-08-2025 | Исправлено: Gideon Vi, 18:25 25-08-2025
    V0lt



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Gideon Vi
    Проверил, ваши команды работают. Спасибо.

    Всего записей: 11204 | Зарегистр. 05-02-2003 | Отправлено: 06:50 27-08-2025
    LZAA

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

          Изменение частоты кадров video без перекодировки.
          Рекомендуют:
     
           ffmpeg -i input_video.mp4 -r 24 -c copy output_video.mp4
     
           или
     
           ffmpeg -r 24 -i input_video.mp4 -c copy output_video.mp4
     
         (https://translated.turbopages.org/proxy_u/en-ru.ru.7707bbe4-68af8fc8-7ea8d36f-74722d776562/https/www.baeldung.com/linux/ffmpeg-change-video-framerate-lossless)
     
          Но я столкнулся с тем, что это не работает, хотя раньше так делал и частота кадров менялась. Об этом: https://superuser.com/questions/1088382/change-framerate-in-ffmpeg-without-reencoding.
     
          Однако с аргументом '-itsscale xxxxxxx' работает.
          (https://stackoverflow.com/questions/45462731/using-ffmpeg-to-change-framerate)
          Можно ли хоть как-то объяснить почему с '-r xx' иногда не работает?

    Всего записей: 2581 | Зарегистр. 09-01-2010 | Отправлено: 03:18 28-08-2025
    Gideon Vi

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    -r с -c copy лишь записывает в контейнер информацию о желанном фпс. Причин, почему это не сработает может быть масса

    Цитата:
    Проверил, ваши команды работают. Спасибо.

    хорошо

    Всего записей: 8239 | Зарегистр. 02-02-2004 | Отправлено: 04:13 28-08-2025
    LZAA

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

           Итак, '-r с -c copy' иногда не работает. '-itsscale с -c copy' работает.
           Есть ли ещё команды для преобразования 'fps' без перекодировки?
           Что можно использоваить одновременно с '-itsscale', можно с перекодировкой, чтобы временные метки правильно соответствовали новому 'fps'?

    Всего записей: 2581 | Зарегистр. 09-01-2010 | Отправлено: 12:29 28-08-2025
    LZAA

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
         Audio файл имеет продолжительность 1ч 30м.
     
          ffmpeg -i a.dts aa.wav   -> продолжительность определяемая OS не меняется.
          ffmpeg -i a.dts -c pcm_s24le aa.wav  -> продолжительность определяемая OS становится меньше.
          ffmpeg -i a.dts -c pcm_s32le aa.wav  -> продолжительность определяемая OS становится ещё меньше.
     
         Подробнее.
     
        'ffprobe' и 'mpc-hc' player (чудесным образом) определяют для всех вариантов 'aa.wav' длительность 1ч 30м.
         'Explorer' Windows, 'VLC' player и 'PotPlayer' для второго и третьего вариантов 'aa.wav' определяют длительность меньше 1ч 30м.
          Как это может бы я не представляю. Но ясно, что с командой надо что-то делать.
          Вопрос: как можно изменить команду с '-c pcm', чтобы время получалось 1ч 30м для всех инструментов?

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    LZAA
    Размер файла с 24 и 32 бит получается больше 4 ГБ? Если больше, то это может быть ограничителем. Сохраняйте в w64.

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    LZAA
    DTS может быть 24`битным, а может и 32 float. Если точно не знаете какой. тогда:

    Код:
    ffmpeg -i input.dts -vn -c:a pcm_f32le -rf64 auto output.wav

    -rf64 auto - если файл > 4 Гб  добавит нужный заголовок.

    Всего записей: 2295 | Зарегистр. 02-07-2006 | Отправлено: 01:38 30-08-2025 | Исправлено: Dimitr1s, 01:44 30-08-2025
    V0lt



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    LZAA
    Смотрите на ошибки, которые пишет FFmpeg.
    У вас скорее всего была примерно такая ошибка:

    Цитата:
    [wav @ 000001a9801cfb80] Filesize 8117932170 invalid for wav, output file will be broken

    Про возможные решения вам уже написали.
     
    Добавлено:
    Предложу еще сохранять в более универсальный .mka.

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

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
                                          Mannel
          Да, 'aa.wav' получается больше 4 GBt  и это является причиной происходящего.
          Это работает:
     
             ffmpeg -i a.dts -c pcm_s24le aa.w64
         
                                           Dimitr1s
          У меня 'audio' файл 'dts' с 32 bit. Пишут, что при конвертации с 'pcm' битность следует сохранять. Это я знаю. Для 'audio' файла работает:
     
            ffmpeg -i a.dts -c pcm_s24le -rf64 auto aa.wav
            ffmpeg -i a.dts -c pcm_s32le -rf64 auto aa.wav
     
                                            V0lt
         Вы правы - ошибка именно такая.
         'mka' можно попробовать. Но для преобразования 'audio' всё же настоятельно рекомендуют формат 'wav'. Я звук ускоряю.
     
        У меня 'aa.w64' в 'VLC' player не воспроизводится (можно попробовать обновить).
        Таким образом в настоящий момент самый оптимальный вариант - '-rf64 auto aa.wav'.
        Спасибо всем.
     
           

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



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

    Цитата:
    У меня 'audio' файл 'dts' с 32 bit. Пишут, что при конвертации с 'pcm' битность следует сохранять.

    Таких не бывает. Кодировщик dts не принимает ни 32 int, ни 32 float.
    Все потерьные форматы dts декодировать, для дальнейшей обработки, лучше в 32 float. Абсолютно ничего не потеряете.
    А вот беспотерьный DTS-HD MA, да, разумеется нужно декодировать соблюдая разрядность (16 или 24 бит).
     

    Цитата:
    У меня 'aa.w64' в 'VLC' player не воспроизводится (можно попробовать обновить).

    w64 это ж Sony Wave , если больше 4 Гб открывайте в Sound Forge.

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

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

    Цитата:
    Все потерьные форматы dts декодировать, для дальнейшей обработки, лучше в 32 float. Абсолютно ничего не потеряете.
    А вот беспотерьный DTS-HD MA, да, разумеется нужно декодировать соблюдая разрядность (16 или 24 бит).

     
         Вы правы, это про 'DTS-HD MA' писали про биты.
         Но с этой 'битовой глубиной' нелегко определиться. Про 'a.dts' 'Mediainfo' пишет:
         Формат - DTS
         Битовая глубина - 24 bit
     
          'XviD4PSP' пишет:
     
          Формат - raw DTS
          Кодек - DCA (DTS Coherent Acoustics)
          Битовая глубина - 32 bit
          Формат образца - Float Planar
     
       'lossy' - не 'lossy' - мне трудно понять.
        И с 'битовой глубиной' непонятно. Наверное, 'FFprobe' может больше показать, но для этого нужна специальная команда.
     
         Без 'Sound Forge' вполне можно обойтись, потому что 'aa.w64' 'MPC-HC' и 'PotPlayer' воспроизводят без проблем.
     
     

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



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

    Цитата:
    'XviD4PSP' пишет:
     
          Формат - raw DTS
          Кодек - DCA (DTS Coherent Acoustics)
          Битовая глубина - 32 bit
          Формат образца - Float Planar

    Но он во первых пишет Float Planar, то есть 32 бит с плавающей точкой (float).
    Здесь вы задаёте команду декодировать в pcm_s32le, pcm_s32le целое число (int).
    В 32 float (pcm_f32le) я вам написал команду.
     

    Цитата:
    'Mediainfo' пишет:

    Mediainfo правильно пишет битность DTS-HD MA, а XviD4PSP тоже правильно... но он декодирует не само DTS-HD MA. а ядро из него, обычное dts .
    Вот вам два примера, проверьте:
    DTS-HD MA 16 бит
    DTS-HD MA 24 бит

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

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

          Кое что прояснилось.
          Итак, вместо
     
          ffmpeg -i a.dts -c pcm_s32le -rf64 auto aa.wav
     
          используем
     
          ffmpeg -i a.dts -c pcm_f32le -rf64 auto aa.wav
     
          (Разницу в 'буковках' проглядел, извините).
     
          Но одно ещё осталось непонятным. Есть 'audio' файл 'a.dts'. Забыл написать, что 'Mediainfo' пишет:
     
            Тип сжатия - С потерями.
     
          Так как правильно определить - это 'lossy dts' или 'DTS-HD MA'?

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



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

    Цитата:
    Так как правильно определить - это 'lossy dts' или 'DTS-HD MA'?

    Я вам выложил, для примера два файла настоящего Lossless DTS-HD Master Audio.
    Посмотрите что пишет Mediainfo, так правильно и определите.
     

    Цитата:
    Тип сжатия - С потерями

    Соответственно это не DTS-HD MA, как всё просто.
     

    Цитата:
    используем
     
          ffmpeg -i a.dts -c pcm_f32le -rf64 auto aa.wav

    Для DTS-HD MA правильно будет извлечь ориентируясь на разрядность показанную Mediainfo.
    Для 16 битного:

    Код:
    ffmpeg -i input.dtshd -vn -c:a pcm_s16le -rf64 auto output.wav

    Для 24 битного:

    Код:
    ffmpeg -i input.dtshd -vn -c:a pcm_s24le -rf64 auto output.wav

     
    Для обычного DTS (Lossy):

    Код:
    ffmpeg -i input.dts -vn -c:a pcm_f32le -rf64 auto output.wav

     

    Цитата:
    Наверное, 'FFprobe' может больше показать, но для этого нужна специальная команда.

    Я вот здесь приводил команду для полной информации в удобоваримом виде.
    Для DTS-HD MA ориентируйтесь на "bits_per_raw_sample":

    Всего записей: 2295 | Зарегистр. 02-07-2006 | Отправлено: 18:16 30-08-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