У меня просто есть простой график фильтра, который берет потоки мультимедиа из источника 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 [код] будет таким ... [Большой шарик грязи]