Re: Выбор звукового потока в мультипотоковых AVI через DShow
От: KonstBez  
Дата: 03.07.03 13:11
Оценка:
Здравствуйте, NailMan, Вы писали:

NM>Есть фильм с 3-мя звуковыми потоками(3 перевода).

NM>Нужно сделать переключение звуковых потоков как в BSPlayer.

NM>Пробовал отключать 2 нитки от AVI Splitter — и в итоге пробадала синхронизация при проигрывании, т.е. перемотка не работала.


NM>Тоже самое если лишние нитки(кроме первой) отключать и удалять вплоть до DSound рендерера — думал если графу нужен SynchronizeClock, то пусть берет его у главного(первого) рендерера(нитки).

NM>Я сохранял выходные пины аудио на сплиттере и входной пин у кодека первой нитки. Соответственно нужную нитку просто соединял пинами. Собсно и эта задумка обломилась — синхронизации нет и установка mediaseeking на нужную позицию никакого результата не оказывает, хотя время отображается то куда перешел.

NM>Вобщем Ай нид хелп в этом деле.


NM>Объясните на пальцах как можно грамотно переключать звуковые потоки или УРЛ какой-нить толковый дайте.


NM>ЗЫ: Предполагается использовать только один из нескольких звуковых потоков.


Надо в отключаемые ветви графа вставить собственный фильтр, построенный на CTransformFilter. Тогда можно не пускать данные на выход, не останавливая ветвь. Статус ветви running, а на выходе тишина.
Можно также построить фильтр на CTransInPlaceFilter (в DirectX Media SDK это пример Gargle) и домножать все данные на 0. Эффект аналогичный.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.