как при помощи WinApi воспроизвести поток из интернета
|
|
electrik | Дата: Четверг, 11.02.2016, 02:58 | Сообщение # 1 |
Полковник
Группа: Друзья
Сообщений: 182
Статус: Offline
| есть задача, воспроизвести mp3 поток из нета. знаю, что можно это сделать при помощи bass, fmod. с удовольствием бы сделал при помощи bass, но есть у bass некоторые заморочки. народ, обзавелся гарнитурами, и дергает их во время воспроизведения. bass и fmod не умеют автоматически переходить с карту на карту. можно написать костыли, но это всё бред. говорят, что можно както подгрузить компонент из windows media player, он всё умеет играть. пол ночи шарил по нету, толком ни чего не нашёл. может либа есть, которая читает поток из нета и выводит тупо через winmm? winmm отлично справляется с перетыком гарнитур.
|
|
| |
WQ | Дата: Четверг, 11.02.2016, 03:09 | Сообщение # 2 |
Полковник
Группа: Проверенные
Сообщений: 215
Статус: Offline
| Может, VLC? Там большие возможности http://www.freebasic.net/forum/viewtopic.php?f=14&t=24028
|
|
| |
electrik | Дата: Четверг, 11.02.2016, 15:07 | Сообщение # 3 |
Полковник
Группа: Друзья
Сообщений: 182
Статус: Offline
| про libvlc тоже читал, спасибо за ссылку, гляну. может подойдёт, ибо в будущем понадобится и реализовывать потоковое видео.
|
|
| |
WQ | Дата: Пятница, 26.02.2016, 14:47 | Сообщение # 4 |
Полковник
Группа: Проверенные
Сообщений: 215
Статус: Offline
| Как раз искал, чем можно воспроизводить звуки на linux с наиболее свободной лицензией и по возможности со статической линковкой(libvlc работает, но его надо доустанавливать, хочу немного облегчить пользователям жизнь) Много чего есть, но ничего не подходит по эти параметрам, или просто не компилируется Bass , FMOD - платные, fbsound - не работает, автор прекратил поддержку
Наткнулся на такую вещь: libmpg123 http://www.freebasic.net/forum/viewtopic.php?f=14&t=24376 Под Win работает хорошо, и там в списке библиотек есть winmm, и вроде и потоки может воспроизводить. А вот на linux не хочет работать, о чем Джоши и пишет, и у меня выдает ту же ошибку
Сейчас мучаю такую вещь как Gorilla Audio, freebasic бибиотеку видит, всяуие хэндлы звука больше 0, но воспроизведение не работает...
|
|
| |
haav | Дата: Пятница, 26.02.2016, 16:57 | Сообщение # 5 |
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Статус: Offline
| Цитата WQ ( ) fbsound - не работает, автор прекратил поддержку
Ну можно самому перекомпилировать, внеся некоторые правки. У меня просто Linux стоит 64х-битный, там по простому не получится, поскольку в сорцах много ассемблерных вставок, нужно будет почти весь код перепахивать. А на 32х-битной версии думаю проблем больших не будет. Я под 32х-битную винду для компиля 1.05 легко перекомпилил. Да там были места правок, но не смертельно
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
electrik | Дата: Среда, 04.05.2016, 01:11 | Сообщение # 6 |
Полковник
Группа: Друзья
Сообщений: 182
Статус: Offline
| Спасибо за mpg123, тоже знаю про неё, но незнал что умеет потоки играть. попробую. вопрос остаётся актуальный, ибо я завёл vlc, мы тут уже плеер написали, но у vlc есть тоже проблемы. при быстром переключении треков, любит он зависать,. я пробовал и обычный vlc плеер, зажимаешь кнопку плей и держишь её как дурак, и о, чудо!, звук зависает. видимо с подгрузкой из инета, у них ещё как-то не до отлажено. у fmod, нашёл как его в winmm загнать, тоже надо будет попробовать. а поповоду платности или бесплатности, bass и fmod, можно юзать в некоммерческих проектах, так что тут совесть чиста. блин, не думал, что в 2016 году нет нормальных либ воспроизведения потока из инета. на c#, можно конечно, но не пишу пока я на нем, да и совсем на .net завязываться не охото. думаю, что и не появится уже ни чего, ибо народ на .net ушли, а там уже давно всё написано.Добавлено (14.04.2016, 14:10) --------------------------------------------- а Gorilla Audioесть под винду? пойду посмотрю, она мне тоже попадалась. я уже весь инет перешерстил, поэтому lib много на слуху. Добавлено (14.04.2016, 17:45) --------------------------------------------- посмотрел fmod, гарнитуры не проверял, но тоже не годится. на первой же записи из контакта отказался играть, заорал, что то про позицию и т.д. но это не со всеми файлами. mpg123 отлично справился, но тут писать посути свой плеер надо, он только раскодирует фреймы и может на звуковуху выводить. на pureBasic нет желания писать всё это. мой друг на этом языке лучше кодит, пришлось плеер на пурике писать. поэтому я и ищу такую либу, который подсунул url, а она сама играет. Добавлено (04.05.2016, 01:11) --------------------------------------------- Всётаки vlc более или менее прогнули под нужные нам цели, вродь, почти не зависает. Чтоб не натыкались на наши грабли, скажу вам следующие вещи. в callback предназначенных для обработки vlc событий, старайтесь как можно меньше, а по возможности никогда, не вызывать функции vlc, так как по необъяснимым причинам, цикл оконных событий подвисает. если в callback получаете какое-то значение, громкость, позиция трека и т.д, старайтесь делать так, чтоб при записи этихх значений в gui, не писались одинаковые значения, стоит сделать какой-нибудь prevValue и с ним сравнивать. незнаю почему, но когда, покрайней мере в пурике из vlc callback на TrackBarGadget посылать одинаковые значения, может повиснуть цикл оконных событий. вообще, старайтесь аккуратно использовать callback с посылом собственных событий, чтоб не войти в бесконечную рекурсию. если вы работаете с сетью, и в сетевом плеере сделали кнопки вперед, назад, реализуйте механизм задержки переключения треков, так как если бешаный юзер начнет тыкать быстро кнопку, могут быть зависоны. в нашем плеере такая задержка равна примерно 400 миллисекунд. это примерное значение, и не значит, что идеально будет работать везде, так как это зависит от скорости интернета и т.д. видел я сетевые плееры, где вообще треки полторы-две секунды переключаются, например, плеер для проигрывания музыки из контакта meridian. опенсурсный, но к сожалению для нас, написан на c#
|
|
| |
WQ | Дата: Пятница, 06.05.2016, 12:01 | Сообщение # 7 |
Полковник
Группа: Проверенные
Сообщений: 215
Статус: Offline
| Цитата electrik ( ) если в callback получаете какое-то значение, громкость, позиция трека и т.д, старайтесь делать так, чтоб при записи этихх значений в gui, не писались одинаковые значения, стоит сделать какой-нибудь prevValue и с ним сравнивать. незнаю почему, но когда, покрайней мере в пурике из vlc callback на TrackBarGadget посылать одинаковые значения, может повиснуть цикл оконных событий. В одном моем коде плеера через callback получается кадр видео. На чистом FB тормозило страшно, и я вынес эту часть кода в статическую библиотеку на C. Так работает нормально
|
|
| |
|