Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Библиотека для работы с Avi файлами vfw 
:(
    Опции темы
Ak47black
Дата 12.1.2007, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Надеюсь ктонибудь работал с vfw библиотекой.
Вообшем у меня следушая проблемма вот рабочий код
Код

function SaveCallback(nPercent: Int): Bool; pascal;
var
  abort: Boolean;
begin
  Application.ProcessMessages;
  Form1.Progressbar1.Position := nPercent;
  if abort = True then
    Result := True
  else
    Result := False;
end;

procedure TForm1.GetAviInfo(Path: String; SaveTo: String);
procedure CorruptedVideoFile;
begin
  ShowMessage('FileCorrupted');
end;
var
  AviFile: IAVIFile;
  AviInfo: TAVIFileInfo;
  Steams: array [0..1] of IAVIStream;
  i: Integer;
  AviCopressOptions: PAVICOMPRESSOPTIONS;
begin
  if not FileExists(Path) then Exit;
  AVIFileInit;
  AVIFileOpen(AviFile,PChar(path),0,nil);
  AVIFileInfo(AviFile,AviInfo,sizeof(AviInfo));
  with AviInfo, InfoList.Lines do
  begin
    Add('MaxBytesPerSec = '+#9+#9+#9+IntToStr(dwMaxBytesPerSec));
    Add('Flags = '+#9+#9+#9+#9+IntToStr(dwFlags));
    Add('Caps = '+#9+#9+#9+#9+IntToStr(dwCaps));
    Add('Streams = '+#9+#9+#9+IntToStr(dwStreams));
    Add('SuggestedBufferSize = '+#9+#9+IntToStr(dwSuggestedBufferSize));
    Add('Width = '+#9+#9+#9+#9+IntToStr(dwWidth));
    Add('Height = '+#9+#9+#9+#9+IntToStr(dwHeight));
    Add('Scale = '+#9+#9+#9+#9+IntToStr(dwScale));
    Add('Rate = '+#9+#9+#9+#9+IntToStr(dwRate));
    Add('Length = '+#9+#9+#9+#9+IntToStr(dwLength));
    Add('EditCount = '+#9+#9+#9+IntToStr(dwEditCount));
    Add('MaxBytesPerSec = '+#9+#9+#9+IntToStr(dwMaxBytesPerSec));
  end;
  if AVIFileGetStream(AviFile,Steams[0],streamtypeVIDEO,0)<>0 then
  begin
    CorruptedVideoFile;
    exit;
  end;
  if AVIFileGetStream(AviFile,Steams[1],streamtypeAUDIO,0)<>0 then
  begin
    CorruptedVideoFile;
    exit;
  end;
  AVISaveV(PChar(SaveTo),nil,@SaveCallback,2,Steams[0],AviCopressOptions);

  AviFileExit;
end;

Когда сохраняю один поток с видео то все окей, но если сохраняю только аудио поток или два (видео с аудио) потоком то на этом месте
Код

  AVISaveV(PChar(SaveTo),nil,@SaveCallback,2,Steams[0],AviCopressOptions);

Ошибка.
Что в моем коде неправильного ?
И как вообше vfw  надежная библетека в использовании?
PM MAIL   Вверх
Ak47black
Дата 13.1.2007, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Изменил 
Код

AVISaveV(PChar(SaveTo),nil,@SaveCallback,2,Steams[0],AviCopressOptions);

на
Код

AVISaveV(PChar(SaveTo),nil,@SaveCallback,2,Steams[0],PAVICOMPRESSOPTIONS(nil^))

И получаеться теперь нормально обратно сохранить только Avi файлы с малыми размерами, а большие по 700mb файлы сохраняються без аудио дорожки и получаеться ошибка.
Может ктото знает в чем ошибка ?

PM MAIL   Вверх
Ak47black
Дата 13.1.2007, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Ошибка AVIERR_FILEREAD
PM MAIL   Вверх
Ak47black
Дата 13.1.2007, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Мне получаеться нормально работать только с теми файлами которые имеют 0 вхождений.
Может это влияет? Вообше что такое вхождение(fragment)? И где оно зраниться в Avi файле?

Это сообщение отредактировал(а) Ak47black - 13.1.2007, 14:51
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0423 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.