Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Ошибка при попытке воспроизвести видео BASS


Автор: lollollollol 24.8.2017, 08:40

Добрый день.

Есть необходимость из TStream отображать видео.
Выбрал для этой задачи BASS.

Есть вот такой код:



   
Код

   xVideo_Init(Form2.panel1.handle,0);
      if(chan<>0) then begin
        xVideo_StreamFree(chan);
        chan := 0;
        Stream.Free;
      end;
      Stream:= TMemoryStream.Create();
      try
        FileStream := TFileStream.Create(Global_FileStart, fmOpenRead);
      except
        Exit;
      end;
      Stream.LoadFromStream(FileStream);
      FileStream.Free;
      chan :=  xVideo_StreamCreateFileMem(Stream.Memory,Stream.Size,Form2.panel1.Handle,0);
      if chan<>0 then begin
        xVideo_ChannelSetWindow(chan,0,Form2.panel1.Handle);
        Form2.ProgressBar1.max:=round(xVideo_ChannelGetLength(chan,xVideo_POS_SEC));
        if(paused=true)then paused:=true;
        xVideo_ChannelPlay(chan);
      end;




Проблема в том, что этот код прекрасно работает на моём компьютере, а вот на соседнем, с той же виндовс 10, уже не работает.
Строка



Код

      chan :=  xVideo_StreamCreateFileMem(Stream.Memory,Stream.Size,Form2.panel1.Handle,0);



Возвращает 0.

Более того, я начинал с примера работы через DirectShow

Там есть такой код:


Код

    {вызываем RenderFile - граф фильтров строится автоматически}
    MyGraphBuilder.RenderFile('C:\Program Files\Borland\Delphi5\Demos\Coolstuf\cool.avi', nil);



На моём компе работает отлично, на втором - Не удаётся прорендерить файл.


Подскажите пожалуйста, кто работал с видео, в чём может быть проблема, куда копать? Может каких-то длл не хватает, или ещё чего?
Кто нибудь может сталкивался с такой проблемой?


От чего зависит успешное выполнение этих функций? В гугле и яндексе крайне мало информации по этому вопросу, а попыка вбить в гугл или яндекс строку "xVideo_StreamCreateFileMem" даёт вообще не тот результат, который ожидаешь...


Автор: Alexeis 24.8.2017, 08:44
Если DirectShow также не работает, то вероятнее всего на компе не хватает видео кодека для воспроизведения. Хотя это странно, проблем с кодеками давненько не бывало уже. 10ка должна содержать все самые распространенные .

Автор: lollollollol 24.8.2017, 09:28
Я тоже подумал о кодеках, но любой другой плеер нормально работает, и отображает это видео.
Как можно отловить код или текс ошибки, чтоб понять причину?

Автор: Snowy 24.8.2017, 16:42
Ну для начала стоит посмотреть, загрузился ли файл в MemoryStream. А то может там пусто или фигня какая-то.
Получить ошибку можно при помощи  xVideo_ErrorGetCode()

Автор: lollollollol 24.8.2017, 18:39
в мемори загрузился, беда именно в этих функциях. 

 MyGraphBuilder.RenderFile('C:\Program Files\Borland\Delphi5\Demos\Coolstuf\cool.avi', nil);

Что именно происходит в этой строке? (в uses просто ссылка на вызов функции из дллки)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)