Сохранение медиапотоков на основе критериев размера и времени в фильтре прямого показа - PullRequest
1 голос
/ 01 декабря 2011

У меня просто есть простой график фильтра, который берет потоки мультимедиа из источника rtsp [обычно h264 и mp4] и сохраняет их, используя muxer mp4, в файл ...

RtspSourceFilter ---> MP4 Muxer ---> File Writer.

Работает нормально.Но у меня есть ограничение [новое требование сейчас].Я должен написать файл на основе двух критериев: их размер и продолжительность ... Предположим, что пользователь может определить такие правила, как:

if duration > 1 hour or size > 1 gb then write stream to new file

В моем графике, чтобы это,

Я должен остановить свой график на основе условий и создать и запустить новый с новым именем файла ...

Это плохо, так как при любом файле мне нужно повторно подключить свой источник и, возможно,потерял некоторые данные ...

Как лучше всего справиться с этим?

Мое решение: [Но не удовлетворен этим]

У меня есть исходный код RtspSourceFilter и MP4Muxer [с открытым исходным кодом], так что я забыл FileWriter ... MP4 Muxer стал писателем с Muxer ... Так что остановите его внутренне и напишите, когда это необходимо, а затем создайте новый файл ... Сделайте некоторую буферизацию дляне теряя данные ...

   RTSP Source Filter ---> New MP4 Writer [ a writer with mp4 muxer in it]

Но это вносит ненужную сложность ... Теперь я стал сопровождающим операции MUX через New MP4 Writer ... Так как у меня нет времени, чтобы по-настоящему понять, что делает Mux, янадо изменить-взломать это, чтобы вести себя так, как я хочу... Аналогия: у меня есть машина, и я сделаю из нее вертолет ... Это будет очень некрасивый и ненадежный вертолет ... Возможно, мой новый фильтр MP4 [код] будет таким ... [Большой шарик грязи]

1 Ответ

1 голос
/ 01 декабря 2011

Похоже, GMFBridge может быть полезным для вас. Это позволяет создавать один исходный граф и несколько графов приемников. Затем, когда ваше ограничение выполнено, соедините исходный граф с новым графом приемников.

Если вы переведите мост в буферный режим (без сброса), вы не должны терять какие-либо сэмплы.

Однако вам придется выяснить, подходит ли вам это решение. Ознакомьтесь с примерами приложений для быстрого обзора.

...