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

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

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

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 года, GUI под WinXP (ffqueue, WinFF, Video converter). Static builds by Kyle Schwarz (последний для WinXP ffmpeg-3.0-win32-static.7z).

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

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

    Всего записей: 158 | Зарегистр. 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. Он может быть просто ненужным.

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

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

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

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

    Всего записей: 5907 | Зарегистр. 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

    Всего записей: 197 | Зарегистр. 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

    Всего записей: 8579 | Зарегистр. 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

    Всего записей: 8579 | Зарегистр. 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

    Всего записей: 8579 | Зарегистр. 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

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

    Всего записей: 5907 | Зарегистр. 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
     

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

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

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

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

    Всего записей: 5907 | Зарегистр. 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%
     

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

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

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

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

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

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

     
     

    Всего записей: 5907 | Зарегистр. 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.
     

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

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

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

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


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

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

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

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

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

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

    Всего записей: 197 | Зарегистр. 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 62 63 64 65 66 67 68

    Компьютерный форум 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