Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.21;
Скачать: CL | DM;

Вниз

Подскажите как из AVI файла вытянуть второй поток звука.   Найти похожие ветки 

 
Rif   (2004-05-22 11:25) [0]

Есть авишка которая в себе содержит 2 звуковых потока (Eng\Rus)
уменя они воспризводятся одновременно, как перекрыть одид поток?


 
Jel ©   (2004-05-22 15:09) [1]

http://www.morgan-multimedia.com/mmswitch/


 
Rif   (2004-05-26 07:59) [2]

Я имел ввиду програмно на Delphi.


 
Fantom   (2004-08-06 04:23) [3]

<a href="">afa</a>


 
Кириешки ©   (2004-08-07 12:42) [4]

>Fantom   (06.08.04 04:23) [3]

Тут типа левые теги не работают. Надпись под окном "Написать ответ" читал?


 
NailMan ©   (2004-08-09 16:48) [5]

Во первых чем проигрываешь файло?

Если пользуешь DirectShow, то все делается без проблем: глушится(Volume избранного в ноль) любой из них. Если надо мог кинуть пример.

Если не DirectShow - тады нынаю.

Если физически надо вырезать звук - ну тогда без fileread/filewrite и знания AVI-RIFF не обойтись.

---
WBR, NailMan aka 2:5020/3337.13


 
Rif   (2004-08-12 07:50) [6]

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


 
NailMan ©   (2004-08-14 15:21) [7]

Извини за задержку, только сейчас смог откопать пример:

Вот пример из моего VIDEO-движка плеера как я задаю общую громкость
при воспроизведении файла

Подразумевается что файл благополучно загружен и созданы(получены) все необходимые интерфейсы управления.

Массив значений громкости:
CONST  VolumeTable      : Array[0..16]  of Integer = (-10000,-9000,-7500,-6500,-5500,
-4500,-4000,-3000,-2000,-1000,-750,-500,-250,-125,-100,-50,0);


Procedure TVideoEngine.SetVolume(vLevel : Integer);
begin
//предохраняемся если файл все-таки не загружен...
 If plState=stclosed then exit;

//...или у него нет звуковой дорожки
 if dsBasicAudio=nil then exit;

//так как у меня 16 градаций громкости, то проверяем на выход за границы дозволенного
 If vLevel>16 then vLevel:=16;

//Если это файл не AVI или AVI но с одной дорожкой звука, то просто
//задаем ей громкость, иначе делаем множественное задание громкости
  if (videotype<>avivideo) or (PlayMultiTrackMode=1) then
    dsBasicAudio.put_Volume(VolumeTable[vLevel])
   else
    VIDEO.SetMultipleVolume(vLevel);
end;


Procedure TVideoEngine.SetMultipleVolume(vLevel:integer);
var
   pEnum : IEnumFilters;
   pFilter :IBaseFilter;
   cFetched : dword;
   CL:TGUID;
     i:integer;
     BA : IBasicAudio;
     z : integer;
begin
i:=0;
repeat
   //получаем энумератор фильтров в графе
   dsGraphBuilder.EnumFilters(pEnum);
   while pEnum.Next(1, pFilter, @cFetched) = S_OK do
   begin
     //если фильрт есть звуковой рендерер...
       pFilter.GetClassID(CL);
       if IsEqualGUID(CL,CLSID_DSoundRender) then
        begin
     //и рендерер не является мастер-трэком(текущим активным), то
     //присваиаем мусорной переменной какое-то значение. В данном случае у меня каждая
     //дорожка может иметь произвольное значение громкости
     //иначе если это мастер-дорожка, то присваиваем новое значение громкости
         If i<>CurrentPlayedAUDS then
          z:=AUDSVolume[i]
         else
          z:=vLevel;
      //получаем у нашего рендерера интерфейс которому можно применить новую громкость и применяем эту громкость
          pFilter.QueryInterface(IID_IBasicAudio,BA);
          BA.put_Volume(VolumeTable[z]);
        //сохраняем на будущее это значение, так как изменяется громкость
        //не-мастер дорожек в другом месте
          AUDSVolume[i]:=z;
          BA:=nil;
          inc(i);
        end;
       pFilter:=nil;
   end;
   pFilter:=nil;
   pEnum:=nil;
until dword(i)=avi.audstreams;
end;


Вобщем пример избыточен, задаешь массиву AUDSVolume(array of integer) нулевые значения и применяешь вышеприведенную процедуру SetVolume.
Главное нужно иметь значение в переменной CurrentPlayedAUDS, которая есть номер мастер-дорожки(та которая играет в текущий момент) и знать естественно число аудиодорожек.

---
WBR, NailMan aka 2:5020/3337.13



Страницы: 1 вся ветка

Текущий архив: 2004.11.21;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.035 c
4-1097502103
DmitryMN
2004-10-11 17:41
2004.11.21
Реестр Windows 2000


14-1099691130
able
2004-11-06 00:45
2004.11.21
Что должен уметь локальный чат?


14-1099201101
Stef
2004-10-31 08:38
2004.11.21
Форма SpeedButton а по битмапу


1-1099892230
qp
2004-11-08 08:37
2004.11.21
Нужно ли инициализировать динамический массив после выделения пам


1-1099754818
gigameg
2004-11-06 18:26
2004.11.21
выравнивание по ширене(justify) в memo или richedit?