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

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



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

    Всего записей: 16257 | Зарегистр. 13-02-2003 | Отправлено: 16:19 15-10-2023
    notinthewoods



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

    Цитата:
    Выложите архив с исходными файлами и батником, который правильно бы отработал для постоянной частоты, но не работает с VFR.

    https://www.upload.ee/files/15813336/Proba_var_const_fps.zip.html

    Всего записей: 494 | Зарегистр. 31-01-2015 | Отправлено: 20:00 15-10-2023
    V0lt



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    notinthewoods
    Видео VFR сохраните во временный файл с "-с copy -r 30". После чего используйте его для соединения с другим.

    Всего записей: 10506 | Зарегистр. 05-02-2003 | Отправлено: 06:32 16-10-2023 | Исправлено: V0lt, 06:32 16-10-2023
    notinthewoods



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    V0lt
    Спасибо за подсказку.
    Видео с VFR изначально было получено простым ремуксом из ts:

    Код:
    ffmpeg -i video.ts -c copy video.mp4

    В полученном video.mp4 - стандартная временная база - 90k tbn
     
    Если же указать требуемую частоту кадров при ремуксе:

    Код:
    ffmpeg -i video.ts -c copy -r 30 video_r30.mp4

    то в video_r30.mp4 временная база - 15360 tbn, т.е. точно такая же, как и здесь:

    Код:
    ffmpeg -loop 1 -i image.png -t 4 -pix_fmt yuv420p -r 30 image.mp4

    что и способствовало успешной склейке.
     
    Добавлено.
    В перекодированном видео (-c:v libx264 -crf 21 -preset faster), кстати, тоже 15360 tbn

    Всего записей: 494 | Зарегистр. 31-01-2015 | Отправлено: 23:29 16-10-2023 | Исправлено: notinthewoods, 23:40 16-10-2023
    neorumtu

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть еще такая опция при перекодировании ffmpeg -x264opts force-cfr
    Это аналог консольного x264 --force-cfr
    Просто, в avisynth принято cfr, а в обычных файлах ffmpeg предпочитает vfr, т.к. не знает что будет впереди.

    Всего записей: 537 | Зарегистр. 30-08-2023 | Отправлено: 16:31 17-10-2023
    vaskamy



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

    Код:
    ffmpeg -loop 1 -i "%%i" -i "%%a" -c:v libx264 -r 29.970 -c:a copy -shortest -y "%%~ni_replaced.mp4"

    Всего записей: 968 | Зарегистр. 04-03-2017 | Отправлено: 11:39 18-10-2023
    vaskamy



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вопрос для профи.
    При добавлении в mp4 контейнер аудио дорожек в котором присутствует только поток видео без аудио, командой:

    Цитата:
           -map 0:v:0 ^
           -map 1:a:0 -disposition:a:1 none -metadata:s:a:1 handler_name="English" -metadata:s:a:1 language="eng" -metadata:s:a:1 title="ENG" ^
           -map 2:a:0 -disposition:a:2 default -metadata:s:a:2 handler_name="Russian" -metadata:s:a:2 language="rus" -metadata:s:a:2 title="RUS" ^
    (попытка добавить поток 0:a:0 - не получается)
    методата русской дорожки выглядит так :: A: SoundHandler (mp3,22050 Hz, mono, 127 kb/s) ДОЛЖНА ВЫГЛЯДЕТЬ ТАК A: Russian [rus] (mp3, 22050 Hz, mono, 127 kb/s)  
    Где моя ошибка, почему код отрабатывает не корректно, как исправить?
     
    Постскриптум: в принципе я нашел выход из ситуации, прогнать выходной файл через другой скрипт тем самым исправив не правильное отображения методаты.

    Всего записей: 968 | Зарегистр. 04-03-2017 | Отправлено: 09:24 22-10-2023
    MMasutin

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vaskamy, добавлениe аудио в контейнер, где видео без аудио(!):

    Код:
    -map 0 -map 1 -map 2 ^
    -metadata:s:a:0 language=eng -disposition:a:0 0 ^
    -metadata:s:a:1 language=rus -disposition:a:1 default

    Если задать первым трек для rus, вероятно, default будет присвоен без указания. Или задать forced. Если используете код, например, от ChatGPT, лучше прежде ознакомиться, к примеру, c этим.

    Всего записей: 73 | Зарегистр. 05-01-2021 | Отправлено: 23:21 23-10-2023
    vaskamy



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

    Цитата:
     
    -map 0 -map 1 -map 2 ^
    -metadata:s:a:0 language=eng -disposition:a:0 0 ^
    -metadata:s:a:1 language=rus -disposition:a:1 default

    Прежде чем предлагать проверяйте - ваш код гамно - не работает, а мой работает, пусть и с двойной обработкой.

    Всего записей: 968 | Зарегистр. 04-03-2017 | Отправлено: 15:46 24-10-2023
    vaskamy



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

    Код:
    ffmpeg -i input.mp4 -metadata purl="https://example.com/my-video" -c copy output.mp4

    Всего записей: 968 | Зарегистр. 04-03-2017 | Отправлено: 18:50 24-10-2023
    vaskamy



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Кто нибудь знает что нибудь по
    Код:
    purl
    я перелопатил море информации но так ни один способ добавления url в метаданные purl не срабатывает, в чём может быть загвоздка.
      *По активнее дамы и господа не надо быть пассивными, нужно дискуссировать.*

    Всего записей: 968 | Зарегистр. 04-03-2017 | Отправлено: 11:31 27-10-2023
    vaskamy



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как сделать чтобы при встраивании глав в видео (ffmpeg -i "входное.mp4" -f ffmetadata -i "chapters.xml" -map_chapters 1 -c copy "выходное.mp4) метаданные из входного видео не очищались а передавались в выходное видео, при данном способе как я привёл выше вычещается даже информация о дополнительных аудио дорожках, использование -map_metadata 0  не помогает, другие способы интеграции чаптеров почему то добовляют только чаптеры без описания на против них.

    Всего записей: 968 | Зарегистр. 04-03-2017 | Отправлено: 13:43 30-10-2023
    vaskamy



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Кто знает что сделать чтобы ffmpeg не записывал вот это в видео :
    Other
    ID                          : 5
    Type                        : meta
    Format                      : gpmd
    Codec ID                    : gpmd
    Duration                    : 6 min 15 s
    Source duration             : 6 min 9 s
    Bit rate mode               : Variable
    Stream size                 : 171 Bytes
    Source stream size          : 171 Bytes
    Language                    : English
    Default                     : No
    Alternate group             : 2
    Menus                       : 7
     
    в исходном видео этого нет.

    Всего записей: 968 | Зарегистр. 04-03-2017 | Отправлено: 22:06 30-10-2023
    neorumtu

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

    Всего записей: 537 | Зарегистр. 30-08-2023 | Отправлено: 22:19 30-10-2023
    vaskamy



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

    Цитата:
    -map_metadata -1

    Помимо этого удалится меню 1 с чаптерами а это не хорошо.
     
     
    Добавлено:
    Я тут попробовал с другими видео на тех этой ерунды нет - видимо это какая то скрытая информация в дебрях видео и она вылазит после прогона через ffmpeg возможно что это типа метки автора видео - авторские права. Хотя может я и ошибаюсь.
     
    Добавлено:
    Победил - добавил -map -0:d

    Всего записей: 968 | Зарегистр. 04-03-2017 | Отправлено: 22:35 30-10-2023
    mithridat1



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

    Всего записей: 4948 | Зарегистр. 05-01-2006 | Отправлено: 18:32 11-11-2023
    Baltazar500



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Пытался записать hls - видео, но в консоль постоянно сыпались подобные ошибки
    Код:
    [tls @ 00000000038013c0] Error in the pull function.014:32:22.77 bitrate=  -0.0kbits/s speed=N/A
    [tls @ 00000000038013c0] IO error: Error number -10054 occurred
    [tls @ 00000000036cba00] Error in the pull function.
    [tls @ 00000000036cba00] IO error: Error number -10054 occurred
    [mpegts @ 00000000035d0340] PES packet size mismatch
    [mpegts @ 00000000035d0340] Packet corrupt (stream = 0, dts = 106688).
    [tls @ 00000000038013c0] The specified session has been invalidated for some reason.
    [hls @ 000000000068b8c0] keepalive request failed for 'https://950-8ca-2500g0.v.plground.live:10402/hs/48/1701251684/JyxQ-edbo8ztqa4EjwHm5Q/293/676293/5/seg-3-f2-v1-sa5-a1.ts' with error: 'I/O error' when opening url, retrying with new connection
    [tls @ 0000000003a1c500] Error in the pull function.
    [tls @ 0000000003a1c500] IO error: Error number -10054 occurred
    [mpegts @ 0000000003770900] PES packet size mismatch
    [mpegts @ 0000000003770900] Packet corrupt (stream = 0, dts = 106688).
    [tls @ 0000000003a60a80] Error in the pull function.0:01.04 bitrate=   0.4kbits/s speed=1.17x
    [tls @ 0000000003a60a80] IO error: Error number -10054 occurred
    [mpegts @ 0000000004111180] PES packet size mismatch
    [mpegts @ 0000000004111180] Packet corrupt (stream = 0, dts = 106688).
    [hls @ 000000000068b8c0] Packet corrupt (stream = 0, dts = 102934).
    https://950-8ca-2500g0.v.plground.live:10402/hs/48/1701251684/JyxQ-edbo8ztqa4EjwHm5Q/293/676293/5/master.m3u8: corrupt input packet in stream 0
    а спустя минуту - две ffmpeg валит в консоль следующее
    Код:
    [hls @ 000000000053b8c0] Packet corrupt (stream = 4, dts = NOPTS).
    https://950-8ca-2500g0.v.plground.live:10402/hs/48/1701251684/JyxQ-edbo8ztqa4EjwHm5Q/293/676293/5/master.m3u8: corrupt input packet in stream 4
    [aac_adtstoasc @ 00000000054bf740] Error parsing ADTS frame header!
    [mp4 @ 00000000058ac840] Error applying bitstream filters to an output packet for stream #1: Invalid data found when processing input
    av_interleaved_write_frame(): Invalid data found when processing input
    [out#0/mp4 @ 00000000045fd980] Error muxing a packet
    frame= 5658 fps= 52 q=-1.0 Lsize=  124436kB time=00:07:40.16 bitrate=2215.2kbits/s speed=4.19x
    и прекращает запись. Конечный файл естественно битый. В чём затык ? В баузере этот стрим игрался нормально (ссылка уже протухла).

    Всего записей: 2106 | Зарегистр. 19-09-2011 | Отправлено: 10:23 01-12-2023 | Исправлено: Baltazar500, 10:25 01-12-2023
    mithridat1



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Baltazar500
    Очевидно, поток не может получить, сегменты недоступны. Причина из лога не ясна, надо проверить открываются ли ссылки на сегменты где то кроме браузера (например, в каком то менеджере закачек). Обычно, сервера при запросе стрима проверяют соответствие юзер-агента и реферальной ссылки.

    Всего записей: 4948 | Зарегистр. 05-01-2006 | Отправлено: 10:58 01-12-2023 | Исправлено: mithridat1, 11:19 01-12-2023
    Baltazar500



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mithridat1,
    Цитата:
    Причина из лога не ясна,
    Походу причина одна - упоротый hls (сэмпл). В конечном m3u8 для конкретного разрешения (всмысле выбрано уровнем выше) может лежать по 4 - 8 ссылок (варьируется в зависимости от сегмента) на один и тот же сегмент. Например
    Код:
    #EXTINF:1.001,
    #EXT-X-BYTERANGE:564@376
    seg-1-f2-v1-sa4-a1.ts
    #EXTINF:0.250,
    #EXT-X-BYTERANGE:5076@36472
    seg-1-f2-v1-sa4-a1.ts
    #EXTINF:1.001,
    #EXT-X-BYTERANGE:61852@312456
    seg-1-f2-v1-sa4-a1.ts
    #EXTINF:1.001,
    #EXT-X-BYTERANGE:90992@902776
    seg-1-f2-v1-sa4-a1.ts
    #EXTINF:1.001,
    #EXT-X-BYTERANGE:93060@1513588
    seg-1-f2-v1-sa4-a1.ts
    Почему hls имеет такую структуру - мне неведомо.
    Цитата:
    Обычно, сервера при запросе стрима проверяют соответствие юзер-агента и реферальной ссылки.
    Юзер-агент я сразу передавал через -user_agent, но там это было не критично, равно как и в случае реферера. Да и разве ffmpeg умеет реферер передавать ?
    Цитата:
    надо проверить открываются ли ссылки на сегменты где то кроме браузера (например, в каком то менеджере закачек).
    Спокойно открываются/загружаются, так что отфильтровав дубли я через for curl'ом загрузил сегменты и склеил их через ffmpeg, который плакал, кололся и ругался матом в консоль (лог), но склеивал сегменты в единый файл. Что интересно, конечный файл в плеере играется вполне корректно, но для надёжности надо отсмотреть целиком. Раз я уж вернулся к этому мозгокрутному методу загрузки hls (к которому надеялся не возвращаться), как мне склеить чанки, не генерируя список вида
    Код:
    file 001.ts
    file 002.ts
    file 003.ts
    file 004.ts
    file 005.ts
    ***
    для склейки командой
    Код:
    ffmpeg -f concat -i list.txt -c copy index.mp4
    ?

    Всего записей: 2106 | Зарегистр. 19-09-2011 | Отправлено: 14:57 01-12-2023 | Исправлено: Baltazar500, 15:02 01-12-2023
    mithridat1



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

    Цитата:
    #EXT-X-BYTERANGE:564@376
    seg-1-f2-v1-sa4-a1.ts  

    Не встречал ранее такой m3u8. Но по идее FFmpeg должен его понимать...

    Цитата:
    Раз я уж вернулся к этому мозгокрутному методу загрузки hls (к которому надеялся не возвращаться), как мне склеить чанки, не генерируя список вида

    Без списка вроде никак, но можно автоматизировать весь процесс склейки через скрипт.
     
    FOR %%i IN (*.mp4) DO (ECHO file %%i>> list.txt)  
    ffmpeg -f concat -i list.txt -c copy output.mp4
     
    А если известна закономерность изменения номера сегмента то можно и сразу скачать (только стримы без шифрования).

    Цитата:
    Юзер-агент я сразу передавал через -user_agent, но там это было не критично, равно как и в случае реферера. Да и разве ffmpeg умеет реферер передавать ?

    FFmpeg умеет любые http-заголовки передавать

    Всего записей: 4948 | Зарегистр. 05-01-2006 | Отправлено: 18:10 01-12-2023 | Исправлено: mithridat1, 18:25 01-12-2023
    Открыть новую тему     Написать ответ в эту тему

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