На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Изменить аудиопоток видеофайла в TMediaPlayer
    Всем привет! Странно, но не могу найти по разным запросам, такую, казалось бы, базовую функцию.
    Сообщение отредактировано: мыш -
      мыш
      А с чего ты взял что вообще можно?
      Это всего лишь примитивный встроенный плеер TMediaPlayer = class(TCustomControl)
      "Воля - это то, что заставляет тебя побеждать, когда твой рассудок говорит тебе, что ты повержен" Карлос Кастанеда
        Спасибо не знал! :) Может пнешь в нужном направлении?
          Это все должно делаться через mciSendCommand

          Начни с малого:
          В S путь до файла
          ExpandedWrap disabled
              
            Uses MMSystem
             
            var
            OP: TMCI_Open_Parms;
              SP: MCI_STATUS_PARMS;
              DevID:Word;
            Begin
            {init$open dev}
              DevID:=mciGetDeviceID(PChar(S));
              If (DevID=0) Then
                Begin
                  OP.lpstrElementName:=PChar(S);
                  mciSendCommand(0, MCI_OPEN, MCI_OPEN_ELEMENT, Longint(@OP));
             
                end;
             
                mciSendCommand(DevID, MCI_PLAY, MCI_OPEN_ELEMENT, Longint(@OP));


          Хотя для аудио файлов работает, для видео почему-то нет :-?

          Добавлено
          Видео ещё проще открывается. Каналы думаю найдешь как сделать.
          ExpandedWrap disabled
              S,Command:string;
            begin
             
            s:='F:\Video\Marvels.The.Avengers.BDRip_720_[Youtracker]_ot_Äÿäÿ_˸øà.mkv';
             
            Command := 'open ' + s + ' type mpegvideo alias VideoFile';
            mciSendString(PChar(Command), 0, 0, 0);
            Command:= 'window VideoFile handle '+IntToStr(form1.Handle);
            mciSendString(PChar(Command), 0, 0, 0);
            mciSendString(PChar('Play VideoFile'), 0, 0, 0);
          Сообщение отредактировано: ^D^ima -
          "Воля - это то, что заставляет тебя побеждать, когда твой рассудок говорит тебе, что ты повержен" Карлос Кастанеда
            Вот тут в конце скорее всего оно:
            http://read.pudn.com/downloads71/sourcecod...ystem.pas__.htm

            В функции setaudio
            https://msdn.microsoft.com/en-us/library/wi...2(v=vs.85).aspx
            есть "stream to number" и вродебы по описанию подходит:
            ExpandedWrap disabled
              Specifies the audio stream played back from the workspace. If the stream is not specified and the file format does not define a default, then the interleaved audio stream that is physically first will be played.

            Но не пашет почему-то.
            Вот это пашет, для примера:
            ExpandedWrap disabled
              mciSendString(PChar('SetAudio VideoFile off'), 0, 0, 0);//отключить звук
               
              mciSendString(PChar('SetAudio VideoFile volume to 100'), 0, 0, 0); //поставить громкость
              mciSendString(PChar('SetAudio VideoFile on'), 0, 0, 0);//включить звук

            А это:
            ExpandedWrap disabled
              mciSendString(PChar('SetAudio VideoFile stream to 1'), 0, 0, 0);

            Нет, хоть ты тресни, хотя по логике пунктуация та-же.

            Далее нашел это:
            https://msdn.microsoft.com/en-us/library/ms...484(VS.85).aspx
            Там есть
            ExpandedWrap disabled
              MCI_DGV_SETAUDIO_STREAM
               
              An audio-stream is specified in the dwValue member of the structure identified by lpSetAudio. The integer value specifies the audio stream played back from the workspace. If the stream is not specified, the first physically interleaved audio stream is played.

            Но так и не получилось добиться рзультата.
            Это про то, как работьать с setaudio
            http://www.delphisources.ru/forum/showthread.php?t=2044

            Ну и вот для примера код, ближе к концу:
            https://bbs.csdn.net/topics/20099212

            информации по крохам
            "Воля - это то, что заставляет тебя побеждать, когда твой рассудок говорит тебе, что ты повержен" Карлос Кастанеда
            1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script Execution time: 0,0881 ]   [ 15 queries used ]   [ Generated: 23.07.18, 07:56 GMT ]