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

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

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

guru431

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


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

Ссылки на русском:
  • Документация по FFmpeg
  • Статья «19 команд FFmpeg для любых нужд»
     
    Примеры использования:
  • Преобразовать в MKV
  • Захвата с экрана
  • Кодирование с помощью технологии Nvidia NVENC
  • Поддержка вывода Юникода в консоль для старых версий FFmpeg
  • Подготовка качественных 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).

  • Всего записей: 64 | Зарегистр. 28-02-2007 | Отправлено: 17:23 21-11-2012 | Исправлено: nick7inc, 12:07 27-10-2021
    vlad_001

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

    Всего записей: 155 | Зарегистр. 10-04-2013 | Отправлено: 14:02 21-10-2019 | Исправлено: vlad_001, 14:37 21-10-2019
    DWZ

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ещё небольшая проблемка. Упаковываю голый h.264 в MP4 с автоматической генерацией PTS командой
     
    ffmpeg -fflags +genpts -r 25 -i source-video.h264 -vcodec copy output.mp4
     
     
    В результате не формируется ctts.
     
     https://imageshost.ru/image/6L9gJ  
     
    Можно ли как-то заставить ffmpeg формировать ctts?

    Всего записей: 21 | Зарегистр. 09-10-2019 | Отправлено: 19:10 24-10-2019
    V0lt



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DWZ
    'ctts' необязательный атом для MP4. Он может быть просто ненужным.

    Всего записей: 9400 | Зарегистр. 05-02-2003 | Отправлено: 20:29 24-10-2019
    los

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

    Цитата:
    'ctts' необязательный атом для MP4. Он может быть просто ненужным.

    у человека есть спецификация, он, наверняка, её прочитал и, видимо, считает что в его случае этот атом необходим

    Всего записей: 4869 | Зарегистр. 08-09-2001 | Отправлено: 20:45 24-10-2019
    notinthewoods

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Записал стримлинком видео из онлайн (rtmp). Полученный flv имеет такие данные (MediaInfo):

    Цитата:
    Ширина: 864 пикселя / 864 пикселя / 864 пикселя / 864 пикселя / 864 пикселя / 864 пикселя / 864 пикселя
    Высота: 480 пикселей / 480 пикселей / 480 пикселей / 480 пикселей / 480 пикселей / 480 пикселей / 480 пикселей

    Кстати, почему столько раз дублируются значения?
    Так вот. Пересобрал flv в mp4 через ffmpeg:

    Цитата:
    ffmpeg -i input.flv -c copy output.mp4

    В результате размеры кадра почему-то стали такие (MediaInfo):

    Цитата:
    Ширина: 648 пикселей
    Ширина оригинала: 864 пикселя / 864 пикселя / 864 пикселя / 864 пикселя / 864 пикселя / 864 пикселя / 864 пикселя
    Высота: 360 пикселей
    Высота оригинала: 480 пикселей / 480 пикселей / 480 пикселей / 480 пикселей / 480 пикселей / 480 пикселей / 480 пикселей

    Плейер MPC-HC этот mp4 воспроизводит так: звук есть, вместо видео - черный экран размером 648:360
    Кто подскажет, как принудительно в mp4 выставить флаг на размер 864:480 ?
    Или может какие-то дополнительные параметры указать при пересборке из flv в mp4 ?
     
    PS. На всякий случай инфа, какая ситуация с другими плейерами. WMP и VLC воспроизводят нормально (864:480), Ace Player HD прикалывается - в размер экрана 648:360 впихивает кадр 864:480. Т.е. обрезает картинку справа-снизу. Причем то же самое делает, если развернуть на полный экран монитора.
    ffmpeg version 4.2.1

    Всего записей: 127 | Зарегистр. 31-01-2015 | Отправлено: 22:05 24-10-2019
    DWZ

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

    Цитата:
    у человека есть спецификация, он, наверняка, её прочитал и, видимо, считает что в его случае этот атом необходим

     
    Именно так . ctts необходим для B-кадров. Без ctts файл на MPH и VLC воспроизводится рывками и AviDemux ругается
     
    https://imageshost.ru/image/6Af7B
     
    восстанавливает ctts, но, к сожалению, теряет последнюю группу B-B-P
     
    https://imageshost.ru/image/6A9gU
     
    (На дельту не смотрите, там time scale разный)

    Всего записей: 21 | Зарегистр. 09-10-2019 | Отправлено: 23:52 24-10-2019
    Aleksoid1978



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

    Цитата:
    Без ctts файл на MPH и VLC воспроизводится рывками и AviDemux ругается  

    А можно пример такого файла ?

    ----------
    AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /LG 47LM620T /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

    Всего записей: 8439 | Зарегистр. 11-05-2006 | Отправлено: 03:49 25-10-2019
    DWZ

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Пример чего - исходного TS или полученного из него MP4 без ctts?

    Всего записей: 21 | Зарегистр. 09-10-2019 | Отправлено: 06:18 25-10-2019
    Aleksoid1978



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DWZ
    Ну ессно .mp4 файла без ctts, ну который рывками воспроизводится. Ну или команду для ffmpeg как его получить.

    ----------
    AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /LG 47LM620T /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

    Всего записей: 8439 | Зарегистр. 11-05-2006 | Отправлено: 07:41 25-10-2019
    DWZ

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    У Вас, может, всё будет работать нормально, так как зависит от исходного файла, а команды такие
     
    ffmpeg -i source.ts -map 0:v -vcodec copy -bsf:v h264_mp4toannexb source-video.h264
     
    ffmpeg -fflags +genpts -r 25 -i source-video.h264 -vcodec copy output.mp4
     
    Файл с B-кадрами, к тому же interlaced (может, это тоже влияет)

    Всего записей: 21 | Зарегистр. 09-10-2019 | Отправлено: 09:54 25-10-2019
    Aleksoid1978



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DWZ
    Ну тогда выложи файл готовый.
     
    P.S. И проверь его проигрывание в MPC-BE, на встроенных фильтрах.

    ----------
    AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /LG 47LM620T /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

    Всего записей: 8439 | Зарегистр. 11-05-2006 | Отправлено: 10:40 25-10-2019 | Исправлено: Aleksoid1978, 10:42 25-10-2019
    DWZ

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    По-хорошему, надо TS-оригинал выложить и пусть каждый извращается с ним, как хочет.  
    Тест ремуксеров произвести.
     
    Только он 1,08 Гига.
     
    Интересно, что если его разложить на набор картинок, то получится 65125 кадров, как и должно быть. А если вытянуть из TS-файла H.264, то из него получится на 1 картинку меньше. Причём в конце совпадает
     
    n-я картинка из H264 с (n+1)-й из самого TS
     
    А в середке, наоборот,  
     
    1000-я картинка из H264 с 999-й из самого TS
     
    А если этот H264 загнать ffmpeg'ой в MP4, то картинок из него будет аж  67725.
     
    AviDemux, если дать ему пересчитать тайминг, 3 последние выкинет.
     
    Для оригинального TS-файла AviDemux сперва покажет длительность 45:09, но если прощёлкать стрелочкой по ключевым кадрам до конца, длительность установится почти нормальной 43:24 с чем-то вместо законных 43:25.
     
    Вот такой вот чудо-файл. А ещё со звуком будет песня.

    Всего записей: 21 | Зарегистр. 09-10-2019 | Отправлено: 11:24 25-10-2019
    los

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    notinthewoods,
    что показывает exiftool для вашего mp4?
    этот файл как во всех ваших плейерах отображается?
    https://workupload.com/file/mmVtaceA
     

    Всего записей: 4869 | Зарегистр. 08-09-2001 | Отправлено: 11:41 25-10-2019
    notinthewoods

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    los
    Скачанный по указанной ссылке файл out.mp4 во всех плейерах воспроизводится нормально (960:540)
    Вот exiftool для моего файла PPP.mp4

    Цитата:
     
    ExifTool Version Number         : 11.73
    File Name                       : PPP.mp4
    Directory                       : .
    File Size                       : 348 MB
    File Modification Date/Time     : 2019:10:24 21:53:00+03:00
    File Access Date/Time           : 2019:10:25 18:03:06+03:00
    File Creation Date/Time         : 2019:10:25 18:03:01+03:00
    File Permissions                : rw-rw-rw-
    File Type                       : MP4
    File Type Extension             : mp4
    MIME Type                       : video/mp4
    Major Brand                     : MP4  Base Media v1 [IS0 14496-12:2003]
    Minor Version                   : 0.2.0
    Compatible Brands               : isom, iso2, avc1, mp41
    Movie Data Size                 : 363032309
    Movie Data Offset               : 48
    Movie Header Version            : 0
    Create Date                     : 0000:00:00 00:00:00
    Modify Date                     : 0000:00:00 00:00:00
    Time Scale                      : 1000
    Duration                        : 0:43:14
    Preferred Rate                  : 1
    Preferred Volume                : 100.00%
    Preview Time                    : 0 s
    Preview Duration                : 0 s
    Poster Time                     : 0 s
    Selection Time                  : 0 s
    Selection Duration              : 0 s
    Current Time                    : 0 s
    Next Track ID                   : 3
    Track Header Version            : 0
    Track Create Date               : 0000:00:00 00:00:00
    Track Modify Date               : 0000:00:00 00:00:00
    Track ID                        : 1
    Track Duration                  : 0:43:14
    Track Layer                     : 0
    Track Volume                    : 0.00%
    Image Width                     : 648
    Image Height                    : 360
    Graphics Mode                   : srcCopy
    Op Color                        : 0 0 0
    Compressor ID                   : avc1
    Source Image Width              : 648
    Source Image Height             : 360
    X Resolution                    : 72
    Y Resolution                    : 72
    Bit Depth                       : 24
    Video Frame Rate                : 16.526
    Matrix Structure                : 1 0 0 0 1 0 0 0 1
    Media Header Version            : 0
    Media Create Date               : 0000:00:00 00:00:00
    Media Modify Date               : 0000:00:00 00:00:00
    Media Time Scale                : 48000
    Media Duration                  : 0:43:14
    Media Language Code             : und
    Handler Description             : SoundHandler
    Balance                         : 0
    Audio Format                    : mp4a
    Audio Channels                  : 2
    Audio Bits Per Sample           : 16
    Audio Sample Rate               : 48000
    Handler Type                    : Metadata
    Handler Vendor ID               : Apple
    Encoder                         : Lavf58.29.100
    Image Size                      : 648x360
    Megapixels                      : 0.233
    Avg Bitrate                     : 1.12 Mbps
    Rotation                        : 0
     

    Всего записей: 127 | Зарегистр. 31-01-2015 | Отправлено: 18:16 25-10-2019
    los

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

    Цитата:
    Скачанный по указанной ссылке файл out.mp4 во всех плейерах воспроизводится нормально (960:540)  

    Это не совсем так. Если посмотрите его свойства в exiftool, а не в mediainfo -  увидите почему.
    Можете выложить исходный *.flv?  
     
     

    Всего записей: 4869 | Зарегистр. 08-09-2001 | Отправлено: 18:49 25-10-2019
    notinthewoods

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    los
    В вашем файле out.mp4

    Цитата:
     
    Image Width                     : 1072
    Image Height                    : 603
    ...
    Source Image Width              : 960
    Source Image Height             : 540
    ...
    Image Size                      : 1072x603
     

    Только я не понял, вы для примера исправили Image Width, Image Height, Image Size на такие значения? Или такой косяк уже был в исходнике, но благодаря адекватным Source Image Width и Source Image Height плейеры правильно воспроизводят этот ролик?
     
    Что касается моего файла, то проблема решилась неожиданно просто) Я попробовал отрезать секунду от начала и перемуксил полученный flv в mp4.

    Цитата:
     
    ffmpeg -ss 1 -i PPP.flv -c copy PPP_Fix.flv
    ffmpeg -i PPP_Fix.flv -c copy PPP.mp4
     

    Именно в два шага. Если за одну операцию и отрезать и перемуксить, нужный результат не получается.

    Цитата:
     
    ffmpeg -hide_banner -ss 1 -i PPP.flv -c copy PPP_Fix.flv
    Input #0, flv, from 'PPP.flv':
      Duration: 00:43:14.52, start: 0.632000, bitrate: 1128 kb/s
        Stream #0:0: Video: h264 (Constrained Baseline), yuv420p(progressive), 648x360, 1k tbr, 1k tbn
        Stream #0:1: Audio: aac (LC), 48000 Hz, mono, fltp
    Output #0, flv, to 'PPP_Fix.flv':
      Metadata:
        encoder         : Lavf58.29.100
        Stream #0:0: Video: h264 (Constrained Baseline) ([7][0][0][0] / 0x0007), yuv420p(progressive), 648x360, q=2-31, 1k tbr, 1k tbn, 1k tbc
        Stream #0:1: Audio: aac (LC) ([10][0][0][0] / 0x000A), 48000 Hz, mono, fltp
    Stream mapping:
      Stream #0:0 -> #0:0 (copy)
      Stream #0:1 -> #0:1 (copy)
    Press ...
    frame=42858 fps=25288 q=-1.0 Lsize=  357403kB time=00:43:13.00 bitrate=1129.1kbits/s speed=1.53e+03x
    video:313958kB audio:40521kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.824881%
    ********
    ffmpeg -hide_banner -i PPP_Fix.flv -c copy PPP.mp4
    Input #0, flv, from 'PPP_Fix.flv':
      Metadata:
        encoder         : Lavf58.29.100
      Duration: 00:43:13.45, start: 0.000000, bitrate: 1128 kb/s
        Stream #0:0: Video: h264 (Constrained Baseline), yuv420p(progressive), 864x480, 1k tbr, 1k tbn
        Stream #0:1: Audio: aac (LC), 48000 Hz, mono, fltp
    Output #0, mp4, to 'PPP.mp4':
      Metadata:
        encoder         : Lavf58.29.100
        Stream #0:0: Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p(progressive), 864x480, q=2-31, 1k tbr, 16k tbn, 1k tbc
        Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, mono, fltp
    Stream mapping:
      Stream #0:0 -> #0:0 (copy)
      Stream #0:1 -> #0:1 (copy)
    Press ...
    frame=42858 fps=29974 q=-1.0 Lsize=  356082kB time=00:43:13.45 bitrate=1124.8kbits/s speed=1.81e+03x
    video:313958kB audio:40521kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.452047%
     

    Всего записей: 127 | Зарегистр. 31-01-2015 | Отправлено: 23:48 25-10-2019
    los

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

    Цитата:
    Только я не понял, вы для примера исправили Image Width, Image Height, Image Size на такие значения? Или такой косяк уже был в исходнике, но благодаря адекватным Source Image Width и Source Image Height плейеры правильно воспроизводят этот ролик?  

    да, исправил и в идеале плейер должен воспроизводить как 1072x603.

    Цитата:
    Что касается моего файла, то проблема решилась неожиданно просто) Я попробовал отрезать секунду от начала и перемуксил полученный flv в mp4.  

    это странно, у ffmpeg в свое время была ошибка с определением разрешения, но ее поправили, возможно, это какой-то ее вариант. Если так, то отрезав секунду с конца файла вы скорее всего получите 648:360
    И да, первым нужно было спросить, что показывает
    $ ffmpeg -i PPP.flv

     
     

    Всего записей: 4869 | Зарегистр. 08-09-2001 | Отправлено: 09:36 26-10-2019
    notinthewoods

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

    Цитата:
    да, исправил и в идеале плейер должен воспроизводить как 1072x603

    Здесь как-то сформулировано непонятно для меня. Что значит "должен"? Ведь вроде как видео не может воспроизводиться, если хотя бы один из размеров кадра имеет нечетное значение.
    То есть, если сделать так:

    Цитата:
     
    Source Image Width              : 1072
    Source Image Height             : 603  
     

    Что тогда изобразят плейеры?
    ============
    Если с помощью exiftool можно исправлять значения, то как можно исправить эти:

    Цитата:
     
    Image Width                     : 648 -----> 864
    Image Height                    : 360 -----> 480
    ...
    Source Image Width              : 648 -----> 864
    Source Image Height             : 360 -----> 480
    ...
    Image Size                      : 648x360 -----> 864x480
     

    Я попробовал изменить значение:

    Цитата:
     
    exiftool -ImageWidth='864' PPP.mp4
    Warning: Not an integer for IFD0:ImageWidth
        0 image files updated
        1 image files unchanged
     

    Попробовал удалить значение:

    Цитата:
     
    exiftool -ImageSize='' PPP.mp4
    Warning: Not an integer for MIE-Image:ImageSize
    Nothing to do.
     

    Всего записей: 127 | Зарегистр. 31-01-2015 | Отправлено: 18:04 26-10-2019
    los

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

    Цитата:
    Что значит "должен"?

    QuickTime 7 показывает как и должно быть - 1072x603


    Цитата:
    Что тогда изобразят плейеры?  

    ваши отображают 960x540 это из самого видео потока, а QT7 1072x603 - это то, что выставлено в самом контейнере mp4.

    Цитата:
    Если с помощью exiftool можно исправлять значения

    по моему, нет. Это сделано другой программой.
    В целом, все это уже неважно, решение для вашего случая нашлось - и это главное

    Всего записей: 4869 | Зарегистр. 08-09-2001 | Отправлено: 21:19 26-10-2019
    notinthewoods

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    los
    Да, спасибо за помощь. К тому же автор трансляции, на запись которой я приводил пример, перестал экспериментировать с разными разрешениями кадра))

    Всего записей: 127 | Зарегистр. 31-01-2015 | Отправлено: 22:27 26-10-2019
    Открыть новую тему     Написать ответ в эту тему

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

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


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2020

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru