Pull to refresh

Comments 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 назад, копался в исходниках, получил массу удовольствия когда всё работало, потратил кучу времени…

буду знать исочник… как знать — может контрибутну туда пару слов… :)
FFMPEG saves lives.

Также очень сильное сообщество собралось вокруг ФФМПЕГ — очень живо развивается.
О боже! Почему здесь почти никто не объясняет сложные вещи простым языком по человечески как это делаете вы?!!!
Поставил бы лайк если бы кармы добавили
Проще понять на примерах. Давайте смоделируем некоторые сценарии.

Что-то в этом разделе совсем всё перепуталось. В результате назвать то, что там происходит, никак нельзя словами «проще».


Для 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 легко справится с этой задачей. Для обычных видеофайлов полно примеров ключей. Все работатет.
А вот с потоковым видео не получается. Наверное есть проблемы с обработкой налету и фото и видеотрансляцией.
Может вы подскажите где искать решение этой задачи. Много гуглил, пробовал и ничего не получилось.

Sign up to leave a comment.