Я пытался создать несколько видео HEVC программно, используя библиотеки FFmpeg C ++ и кодировщик x265, используя --master-display
, --max-cll
и другие параметры данных SEI от x265. Теперь, чтобы убедиться, что эта информация пишется правильно, я хотел бы узнать, как я могу прочитать эти данные SEI из сгенерированного видеофайла, предпочтительно используя библиотеку FFmpeg C ++ и функции.
Я реализовал видео декодер, который работает с использованием av_read_frame()
и декодирование кадров от каждого AVPacket
получен. Я не уверен, смогу ли я каким-либо образом получить информацию SEI до этого процесса, из этих пакетов или с помощью аналогичного подхода.
Код чтения SEI живет Вот, Вы можете добавить сообщения отладки, чтобы увидеть, читаются ли отдельные значения, как ожидалось. Код потребителя для битов sei Вот, и он вычисляет угол, под которым видео должно быть представлено пользователю. Это экспортируется в AVFrame как отображение матрицы побочных данных, который вы можете прочитать с помощью API в display.h (источник, проститутка, аннотированный источник).
Затем приложение может использовать этот угол для соответствующего поворота изображения, например, с использованием вращать авфильтр.