Примеры libav с живыми потоковыми необработанными данными, а не путем открытия файлов (для инициализации avFormatContext) - PullRequest
0 голосов
/ 24 апреля 2019

Изменить (это первоначальный вопрос, который не очень ясен, основываясь на моих знаниях на момент публикации):

Этот вопрос является продолжением вопроса, который я задал пару дней назад: Считывание необработанных данных Genicam H.264 в avlib .
Я все еще пытаюсь реализовать приложение потокового видео, которое получает один или несколько буферов данных GenICam (от одной или нескольких камер GenICam). Эти буферы представляют собой (насколько я понимаю) кадры сжатых данных H.264, которыми я могу заполнить структуру avPacket, просто установив поле данных avPacket в адрес буфера GenICams (или скопировать данные в это поле структуры).
Теперь, если я захочу продолжить обработку этих пакетных данных, я рано или поздно столкнусь с некоторыми функциями libav, для работы которых необходим avFormatContext. Как я могу инициализировать структуру avFormatContext, если у меня нет файла для чтения? Я нашел эту тему, которая поднимает тот же вопрос: ffmpeg C ++ и AVFormatContext
Если я запишу полученные данные буфера в файл, а затем начну работать с одним из множества примеров, например, например. вот этот http://dranger.com/ffmpeg/tutorial01.html, все работает просто отлично (в основном ...). Но что, если мои данные поступают не из файла, а из источника данных в реальном времени, доступ к которому осуществляется через сторонний вызов API? Как получить инициализированную структуру avFormatContext?

Edit: Извините, первоначальный вопрос этой темы (на основе моих новых знаний) является полным мусором и должен задаваться по-другому:

Поскольку я задал этот вопрос, я понял, что контекст формата необходим только для контейнера вокруг моего необработанного потока H.264, в случае, если я хочу сохранить необработанные данные в файл для последующего воспроизведения с помощью видеопроигрывателя. Таким образом, контекст формата зависит не от того, что содержится в моем пакете, а от того, какой контейнер следует использовать для хранения данных пакета.

Теперь, если я хочу, чтобы необработанные данные были сохранены, скажем, в файле .mp4, какие поля в структуре контекста формата необходимо установить и каким значениям? Какие поля являются обязательными, какие дополнительные данные? Имеется ли какая-либо документация или кто-нибудь может намекнуть, как подойти к этому вопросу, если вы не знаете, как заполнить такую ​​структуру вручную?

...