Учитывая, что FFmpeg является ведущей мультимедийной картой, и большинство видео/аудиопроигрывателей использует ее, мне интересно, что происходит с аудио/видео плеерами, использующими FFmpeg в качестве промежуточного.
Я изучаю, и я хочу знать, как работают аудио/видеоплееры, и у меня есть некоторые вопросы.
Я читал исходный код ffplay, и я увидел, что ffplay обрабатывает поток субтитров. Я попытался использовать файл mkv с субтитрами на нем и не работает. Я попытался использовать такие аргументы, как -sst, но ничего не произошло. - Я читал о субтитрах и о том, как его используют видеофайлы (или я могу сказать контейнеры?). Я видел, что есть два способа поместить подзаголовок: hardsubs и softsubs - грубо говоря, режим hardsubs сожжен и становится частью видео, а softsubs превращает поток субтитров (возможно, я ошибаюсь - пожалуйста, исправьте меня).
Вопрос в том, как они справляются с этим? Я имею в виду, когда субтитры являются частью видео, там ничего не происходит, сам видеопоток показывает субтитры, но как насчет мягких программ? как они обрабатываются? (Я тоже слышал о текстовых субстратах). - Как субтитры появляются на экране и могут быть настроены изменение шрифтов, размер, цвета, без повторного кодирования?
Я изучал некоторые исходные коды видеоигр, и некоторые или большинство из них использует OpenGL в качестве средства визуализации кадра, а другие используют (например, Qt QWidget) (вроде или наверняка) холст. - Что является наиболее используемым, а какой самый быстрый и лучший? OpenGL с шейдерами и материалами? Обработка YUV или RGB и так далее? Как это работает?
Это может быть вопрос сбрасывания, но какой формат возвращает AVFrame? Например, когда мы хотим сохранить кадры в качестве изображений, нам сначала нужен кадр, а затем мы конвертируем, из какого формата мы конвертируем? Изменяется ли это в соответствии с кодеком видео или он всегда один и тот же?
Большинство видео, которые я пытался обработать, это использование YUV720P, я пытался сохранить фреймы как png, и мне нужно сначала преобразовать в RGB. Я сделал тест с игроками, и я поставил один и тот же фрейм, и я взял скриншоты и сравнил их. Видеоплейеры показывают, что кадры более яркие. Я пробовал то же самое с ffplay, который использует SDL (OpenGL), и цвета (качество) кадров кажется очень низким. Что может быть? Что они делают? Это шейдеры (или своего рода магия? Ха-ха).
Ну, я думаю, что это пока. Надеюсь, ты поможешь мне в этом.
Если это не правильное место, сообщите мне, где. Я не нашел другого места в сообществах Stack Exchange.
В одном посте много вопросов:
Как обрабатываются "мягкие субтитры"
Точно так же, как и любой другой поток:
Каков наиболее используемый рендерер, а какой самый быстрый и лучший?
какой формат возвращается AVFrame? Это необработанный формат (
enum AVPixelFormat
) и зависит от кодека. Существует список YUV и RGB FOURCC, которые охватывают большинство форматов в ffmpeg. Программно вы можете получить доступ к таблицеAVCodec::pix_fmts
чтобы получить формат пикселя для поддержки определенного кодека.