Играем мр3, мр4(h264), wav(pcm), atrac, aac
Итак, рабочий пример без внешних либ, тока средцтвами самой консольки.
Код:
#include <pspkernel.h> |
Еще бы не помешало знать как сделать паузу, ускоренное проигрывание вперед/назад (перемотка), и т.д. А в остальном все гуд.
добавлено через 50 секунд А ты писал, что с видео разбирался, есть результаты по этому поводу ? |
Вложений: 1
про остановить, поставить eof в 1 :) перемотка это управление указателем мп3 файла, подробнее сказать затрудняюсь, для не VBR вроде всё просто но надо пробовать. пауза возникнет если не устанавливать donext в 1. тут конечно надо всё переписать на семафоры, но для проги примера и так потянет. я щас озадачился сделать простой движок для проигрывания файлов мр3, мр4 и wav(pcm). вот там всё будет. работы потихоньку ведутся.
докладываю по видео. есть рабочий пример как разобрать и проиграть pmf, от mp4 отличается как я понял только другим форматом звуковой дорожки. точно также как и тут использует только кишки psp, всё работает очень шустро. архив прилагаю, использовать аккуратно, там cpp, и прочие непонятные вещи, афтор говорит что прога иногда виснет. для генерации pmf файлоф надо качать из торентов UMD tools. эти тулсы Sony confidecial такчто ессно проги с ними потом распространять не получится, надо всётаки добивать мр4 чем и занимаюсь. на форуме кстати не обозначена ситуация с подобными тулзами. может и упоминать нельзя было? во нафлудил :bb: |
Вложений: 1
1) прошу переименовать тему в "Играем мр3, мр4(h264), wav(pcm), atrac, aac"
2) простенький пример как играть пцм вав, играется на параметрах консолькой по умолчанию(44.1 кГц частота семплирования, 16бит на семпл), однако не проблема изменить их на выбранный канал благо как извлеч инфу из файла там показано... следущим примером (аринтеровочно завтра если не разленюсь опять) будет атрас3 и атрак3+. |
Вложений: 1
Пример тово как можно играть атрак/3/3+, однако тожесамое можно делать и проще, но об этом потом.
|
Вложений: 1
RC альфа беты версии моей либы для играния звукофф. щас мы умеем играть до 8ми звуков одновременно, в данный момент тока вав, мр3, атрак3/+.
ограничения, тока 16bit 44.1кГц причём атрак и мр3 могут быть тока стерео, вавы=моно и стерео. особо хочется отметить что не получается добиться одновременново качественного воспроизведения чегото отличного от вава...если же забить болтяру на пожирание ресурсов вечным циклом звуковова потока то всё становится идеально. сие есть парадокс для меня, декодирование слежующего фрейма происходит в 5-6 раз быстрее чем отыграет старый, однако видимо хитрость планировщика потоков велика и управление не возвращается достаточно долго чтобы мы пропустили пару семплов в начале и всё закашлялось. воистину тайна великая есмь. как жаль что не владею я джитсу реверс инженеринга :cray: юзание, подключить хедер инклудом, в мейк фал добавть -ml.o сырцы пока не выкладываю ибо уж очень стыдно за внутренний хаос :give_rose: далее всё просто, в начале гденить лепим mlInit() а потом чтобы чтота проиграть mlPlay("ms0:/test.mp3"), можно также хитрее mlPlayEx("ms0:/test.mp3", тутагромкость, COOP), флажок кооп нужен чтобы звук с темже именем играл даже в том случае если онже уже играет. вот. пока больше нифига не работает, в часности зацикливание и кеширование файлов целиком в память. ибо очень меня качество звука занимает чтобы время тратить на остальное всё. а да кстати остановка, пауза и резюм тоже не работают пока :p как пропускать заголовок мр3 файла я тоже пока не делал, такчто тут тоже могут некоторые не работать...вот атрак&wav зато работает почти на 100% ибо riff. вобщем велком, жду отзывов :thank_you: релиз посвящается вСлаве, да прибудет с ним сила довести ИДЕ до совершенства абсолютного! |
Вложений: 1
Упдейт. теперь играет гладко. полирую всякие мелочи типа пропуска текстов в мр3 :give_rose:
|
Что-то у меня последний аттач открывает attachment.php и молчит :\
А вообще очень жду релиза. Может заделаю на на этой базе крутой mp3 плагин =) А то mp3_04f юзает libmad и на некоторых mp3 с низким биптрейтом(?) напоминает пакмана с доса на 4 пентиуме: "Мойадреснедоминеулица,мойадрессоветскийсоюз" :\ Есть идея гениального интерфейса к mp3 плагину =) |
Вложений: 1
во очередная альфа. даже стабильная. даже играет. однако из функция работают тока плей и стоп алл :man_in_love:
в принципе для простеньково плеера хватит. |
Не, выдираем все функции из родного плеера =) Кстати, через апи плеера ID3 (теги) получить можно?
|
нет. более того он некоторые даже пропускает некорректно...
|
Времени чтобы уделять его развитию категарически нехватает. пожтому выкладываю полные исходники того что есть на данный момент.
в дальнейшем(читай когда время нарисуется) акцент будете перемещён на поддержку исключительно атрака и мр4 фиксированного фармата. ибо хочу сделать простенькую игрушку а там универсальность ненужна. http://www.rapidshare.ru/453423 |
А никто не может рассказать, каким образом на PSP звук вообще запускается и как им управлять? Точнее, меня интересуют вот какие вопросы:
1) Как я понимаю, для работы со звуком создаётся канал. Один канал - один звук. То есть, если я запущу два канала одновременно, то они будут микшироваться и накладываться друг на друга? 2) Команда sceAudioChReserve(PSP_AUDIO_NEXT_CHANNEL,pspsample,PSP_AUDIO_FORMAT_MONO); принимает в параметре pspsample частоту сигнала или размер буфера мгновенного воспроизведения (т.е. того буфера, в котором происходит микширование)? Я делал int pspsample=PSP_AUDIO_SAMPLE_ALIGN(22050), а потом подавал на sceAudioSetChannelDataLen размер буфера равный pspsample. Вызывал sceAudioOutputBlocking и при воспроизведении возникают "пробелы". Выходит, что это как раз размер буфера микширования. Я правильно понимаю? 3) Если пункт 2 верный, то как можно изменить частоту дискретизации и разрядность звука? Я вот хочу 22050 и 8 бит. Я такой команды не нашёл в pspaudio.h. Или она замаскирована. :) 4) Какой максимальный размер звука можно подавать sceAudioSetChannelDataLen? И вообще, sceAudioOutputBlocking нужен выровненный по 64 байта блок данных или всё равно? В pspaudio.h ничего об этом не сказано, но здесь в примерах я видел, что выделялся выровненный блок. Просто я написал игрушку и хотел к ней приделать звуковое оформление. Ан нет. Всё не так просто, как в Direct Sound. :( |
я пытался понять директ саунд. тут наоборот всё прощее. только нету толковых манов.
1) 1 канал = 1 аппаратный канал в звукочипе. каналы могут иметь разные настройки и аппаратно качественно смешаются на выходе. никто не запрещает сделать 10 софтовых каналов миксовать самому и выдавать в 1 аппаратный. что и сделано в сдл либ и многих других. 2) передается туда частота дискретизации. 44.1К, 20.05К и тп. 3) сделать 8бит невозможно, железка знает тока про 16. те точность не регулируется. на вход всегда подается минимум 4*16. частоту менять можно от 8 до 48. 4) для скорости рекомендую давать кусками по 2-4 килобайта и выше. чем больше кусок тем меньше вероятность кряка. максимум вроде 32. не помню точно. блок выдавать ровный и не из кэша. ато иначе он будет неуправляемый. |
Вложений: 1
Ага. Вот оно как...
Но тогда вот что смущает: Цитата:
Код:
#include <pspkernel.h> Цитата:
|
И ещё есть занятная проблема. В audio_callback, как я понимаю, нужно заполнять буфер с разделением на правый и левый каналы? Даже если звук моно?
|
Ну вот, сделал-таки библиотеку для запуска звуков в играх. :)
|
Вложений: 1
Представляю мой вариант звуковой библиотеки для игр. Она, впрочем, не позволит играть длительные музыкальные фрагменты, так как все звуки находятся в памяти постоянно.
Итак, как ей пользоваться. 0) Обработкой звука занимается класс CSound, при этом объект cSound создан по умолчанию. 1) Создать функцию обратного вызова: void audio_callback(void* buf,unsigned int length,void *userdata) { cSound.CallBack(buf,length,userdata); } 2) Привязать эту функцию к классу: cSound.SetCallBackFunction(audio_callback); 3) Загрузить звук: cSound.LoadNewSound(FileName,0);//загружаем звуковой файл 0 - это индентификатор звука, т.е. по этому номеру с данным звуком можно будет работать, разумеется, это любое удобное вам число. 4) Запустить звук на выполнение: cSound.Play(0); Всё. Одновременно звуков можно запускать довольно много. Т.е. это именно то, что нужно для игры. Ах да, файлы звуков в собственном примитивном формате - заголовок-длина и сами незапакованные данные. Этот формат делает прилагаемая программа из несжатых wav-файлов с параметрами 44100 на 16 бит, моно. Но это можно переделать при желании. |
сколько памяти займет 5минутный фоновый трек?
|
44100(частота)x2(байт на выборку)x5(минут)x60 (по 60 секнуд в минуте)= 26 мегабайт в файле и в два раза больше в памяти (т.к. стерео). Их нужно подгружать потихоньку. :)
|
Текущее время: 22:11. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.