Я хотел бы захватить видео, сжать его и мультиплексировать его как mpeg2 ts. Все это довольно просто с библиотеками ffmpeg, но то, что я хотел бы сделать, вместо того, чтобы записывать его в файл, - это захват пакетов ts в буфере и использование этого потока другими способами. Есть ли простой способ сделать это?Получить пакеты TS в буфер из libavformat
Чтобы записать закодированные кадры в файл прямо сейчас, я использую av_interleaved_write_frame (oc, & pkt). OC - это выходной контекст с указанием имени файла и формата. pkt - это AVPacket, содержащий сжатый кадр. Av_interlaced_write_frame выполняет мультиплексирование и запись файла.
В конечном итоге я хотел бы написать один и тот же поток ts для нескольких файлов, а также начать и прекратить запись разных файлов независимо друг от друга. Запуск нового мультиплексора для каждого потока кажется неэффективным, поскольку поток TS не должен нуждаться в каком-либо заголовке или правильном окончании для правильного воспроизведения (если то, что я прочитал правильно)
Я как бы потерялся, пытаясь найти хорошие примеры в коде ffmpeg, а библиотеки не очень хорошо документированы. Любые данные по этому вопросу оцениваются. Спасибо!
хранилище GitHub по ссылке вы вывесили ушел; если вы помните или используете какой-то код, не могли бы вы разместить фактический пример кода? –