Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];

Вниз

Подскажите как из 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 вся ветка

Форум: "Media";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.06 c
11-1082825835
Fak
2004-04-24 20:57
2004.11.21
Applet := Result.Form ???


14-1099648659
Соловьев
2004-11-05 12:57
2004.11.21
Программа востановления данных


14-1099166665
Vaitek
2004-10-31 00:04
2004.11.21
Управление трафиком


1-1100093018
Pentium133
2004-11-10 16:23
2004.11.21
потомок TThread


1-1100020470
Cheburek
2004-11-09 20:14
2004.11.21
Потокобезопасные типы хранения данных ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский