Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Асинхронная загрузка и воспроизведение аудиофайла 
V
    Опции темы
Georgich
Дата 4.1.2011, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 20.1.2008

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



Приветствую.

Делаю загрузку аудиофайла таким образом:
Код

              private void LoadTrack(string  downloadLink)
              {
                  using (WebClient webClient = new WebClient())
                  {
                      webClient.OpenReadAsync(new Uri("http://" + downloadLink));
                  }
              }

В отладчике прохожу, смотрю, код выполняется. Но, мне непонятно, если аудиозапись скачалась, то где она находится и откуда мне ее воспроизвести? Еще непонятен один момент: OpenReadAsync, вроде, работает, а вот OpenRead уже нет. От сервера приходит 404-ая ошибка. Интересно, почему так?

Спасибо.
PM MAIL   Вверх
Georgich
Дата 8.1.2011, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 20.1.2008

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



Подскажите, пожалуйста, может есть какие-то классы для воспроизведения аудио из мемори стрима, например, в процессе его загрузки из интернетов? Или как это вообще реализовать?

Спасибо. 
PM MAIL   Вверх
cream
Дата 10.1.2011, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 23.7.2010

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



Georgich,  так устроит?
Код

//using namespace Microsoft::DirectX::AudioVideoPlayback;
System::Void Listen_track_from_web() 
{
  try
  {
     Audio^ music_channel = gcnew Audio( "http://karakort.com/download.php?id=MjE4NTI2NjY=&file=Ulrich+Schnauss+%7C-Goodbye.mp3" );
     music_channel->Play();
  }
  catch ( Exception^ e )
  {
    MessageBox::Show( e->ToString() );
  }
}

Нужно указать рефференс на библиотеку DirectX, ну и неймспейс конечно.

Ссылку можно и не оставлять smile 

Это сообщение отредактировал(а) cream - 10.1.2011, 18:50
PM MAIL   Вверх
Georgich
Дата 12.1.2011, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 20.1.2008

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



Нашел такой способ воспроизведения:
http://efreedom.com/Question/1-184683/Play...am-Using-CSharp

Используется библиотека NAudio. Код там приведен. Но, воспроизведение там начинается только после полной загрузки файла в память. А вот сразу можно начать, используя этот метод или нет?

Спасибо.
PM MAIL   Вверх
cream
Дата 12.1.2011, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 23.7.2010

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



Georgich, не понимаю, чем не подходит мой пример?
Воспроизводит при загрузке файла, как вы и хотите. Или так важно сделать это в стриме?
PM MAIL   Вверх
Georgich
Дата 12.1.2011, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 20.1.2008

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



cream, как я понял надо качать и ставить DirectX SDK, которая под 500 мб. Может у вас есть DLL, которую надо подключать и с собой носить, а то уж как-то не хочется на комп этого монстра ставить.

Спасибо.

Это сообщение отредактировал(а) Georgich - 12.1.2011, 16:35
PM MAIL   Вверх
Georgich
Дата 7.2.2011, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 20.1.2008

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



Решение при помощи библиотеки BASS.NET:
Код

            IntPtr _myUserAgentPtr;
            _myUserAgentPtr = Marshal.StringToHGlobalAnsi(
"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.12 (KHTML, like Gecko) Chrome/9.0.570.0 Safari/534.12");
            Bass.BASS_SetConfigPtr(BASSConfig.BASS_CONFIG_NET_AGENT, _myUserAgentPtr);

            Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero);
            int channel = Bass.BASS_StreamCreateURL(url, 0, BASSFlag.BASS_DEFAULT, null, IntPtr.Zero);
            Bass.BASS_ChannelPlay(channel, false);

В моем случае User-Agent указывать необходимо, ибо сервер без него не отдает файл.

Это сообщение отредактировал(а) Georgich - 7.2.2011, 21:22
PM MAIL   Вверх
undelete
Дата 11.2.2011, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 9.2.2011

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



Здравствуйте! Пытаюсь сделать для себя проигрыватель радио на C#, попробовал тоже библиотеку Bass.Net:
Код

private void button1_Click(object sender, RoutedEventArgs e)
        {
            string url = @"http://cluster.quantumart.ru/broadcast/?media=dfm";
            IntPtr _myUserAgentPtr;
            _myUserAgentPtr = Marshal.StringToHGlobalAnsi("Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.12 (KHTML, like Gecko) Chrome/9.0.570.0 Safari/534.12");
            Bass.BASS_SetConfigPtr(BASSConfig.BASS_CONFIG_NET_AGENT, _myUserAgentPtr);

            if (Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero))
            {
                // create a stream channel from a file
                int stream = Bass.BASS_StreamCreateURL(url, 0, BASSFlag.BASS_DEFAULT, null, IntPtr.Zero);

                if (stream != 0)
                {
                    // play the stream channel
                    Bass.BASS_ChannelPlay(stream, false);

                }
                else
                {
                    // error creating the stream
                    MessageBox.Show("Stream errore: " + Bass.BASS_ErrorGetCode());
                }
                // free the stream
                Bass.BASS_StreamFree(stream);
                // free BASS
                Bass.BASS_Free();
            }
        }


но выдает ошибку : "Stream errore: BASS_ERROR_FILEFORM", подскажите как исправить!

PM MAIL   Вверх
Georgich
Дата 12.2.2011, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 20.1.2008

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



undelete, эта ошибка означает, что:
Код

The file's format is not recognised/supported.

Советую посмотреть вам пример, который называется NetRadio.cs, возможно, он вам поможет.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




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


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

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