Комментарии 13
Эту бы информацию мне бы пару месяцев назад…
А сегодня я могу сказать, что помимо «must read» «Как написать видеоплеер и уложиться в менее чем тысячу строк» вторым шагом стоит переписать самому половину официальных примеров из папки doc\examples. Именно переписать самому, откомпилировать и отладить.
А третьим этапом все равно придется открывать исходники ffmpeg в отладчике и смотреть «как у них» сделано :)
Но FFMPEG и libav — это ведь разные библиотеки, хоть и со схожим синтаксисом. Почему автор говорит о них как о едином целом?
FFmpeg is the leading multimedia framework...It contains libavcodec, libavutil, libavformat, libavfilter, libavdevice, libswscale and libswresample which can be used by applications.(Link)
Логично, говоря именно о библиотеках, сокращать их до libav…
Но после форка FFmpeg под названием Libav это стало двусмысленностью, да.
To further complicate matters, Libav chose a name that was used by FFmpeg to refer to its libraries (libavcodec, libavformat, etc.)(Link)
сам я через это прошел лет 5 назад, копался в исходниках, получил массу удовольствия когда всё работало, потратил кучу времени…
буду знать исочник… как знать — может контрибутну туда пару слов… :)
Также очень сильное сообщество собралось вокруг ФФМПЕГ — очень живо развивается.
Поставил бы лайк если бы кармы добавили
Проще понять на примерах. Давайте смоделируем некоторые сценарии.
Что-то в этом разделе совсем всё перепуталось. В результате назвать то, что там происходит, никак нельзя словами «проще».
Для fps = 60/1 и timebase = 1/60000 каждый PTS будет увеличивать timescale / fps = 1000, поэтому реальное время PTS для каждого кадра может быть (при условии, что оно начинается с 0):
Что это за формула timescale / fps = 1000? Где вводится значение timescale? Вероятно, здесь имелось в виду timescale = 1 / (fps * timebase) = 1000, потому что то, что там написано сейчас, просто не имеет смысла.
Далее всё запутывается ещё сильнее, потому что:
Почти по тому же сценарию, но с timescale, равной 1/60:
Почему timescale внезапно стало дробью, меньшей единицы? Ранее ведь это был некий множитель.
Также абсолютно непонятна формулировка «будет увеличивать timescale / fps = 1000». Будет увеличивать число? Это как? Может, будет увеличивать что-то на что-то (что и на что)? Или будет увеличиваться на?
Что такое DTS — расшифровки нет негде?
Хорошо что вы сделали эту статью, а то пришлось всегда гуглить что-то типа "c++ modern guide|example of using ffmpeg lib" Половина функций уже депрекейтнута, с исходниками идут старые примеры 11-го года в лучшем случае... Есть ещё справка на доксигене и там дают некоторые рецепты, но они обрывисты
Мне сложно все, что написано понять. Старый уже и не тому учился. FFmpeg использую для предачи потокового видео с IP камеры на гнезде аистов в Youtube , VK и дзен.
Есть VPS, настроены демоны и все работатет практически без моего вмешательства.
Сейчас еще настроил трансляцию из скворечника.
И появилась мысль, что хорошо было раз в пять минут брать кадр из трансляции и записывать его на сервер в отдельную папочку. Потом в конце сезона собрать таймлапс тем же ffmpeg - "от яйца до скворца за пять минут".
Думал, что ffmpeg легко справится с этой задачей. Для обычных видеофайлов полно примеров ключей. Все работатет.
А вот с потоковым видео не получается. Наверное есть проблемы с обработкой налету и фото и видеотрансляцией.
Может вы подскажите где искать решение этой задачи. Много гуглил, пробовал и ничего не получилось.
stackoverflow.com/questions/53854681/ffmpeg-create-thumbnail-from-hls-live-stream
Руководство по FFmpeg libav