Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Работа со звуком  (Прочитано 3847 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ururu_2

  • Автор темы
  • Активист
  • *
  • Сообщений: 291
    • Просмотр профиля
Работа со звуком
« : 28 Августа 2010, 13:10:49 »
Добрый день.
Подскажите, как работать со звуком в своей программе? Какие есть стандартные функции для этого? Возможно, в Lazarus-е есть какие-нибудь встроенные функции/компоненты/библиотеки? И чего бы почитать на эту тему?

З.Ы. Хочу написать свой ogg-плеер. Но для начала неплохо бы понять: как вообще воспроизводится звук в Linux?

Оффлайн ShadowUser15

  • Активист
  • *
  • Сообщений: 718
    • Просмотр профиля
Re: Работа со звуком
« Ответ #1 : 28 Августа 2010, 13:43:44 »
Самому интересно, если найдете - напишите.
вероятное введение нестандартных десятичностей, внутри системы - заставляет задуматься о переходе на другой

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: Работа со звуком
« Ответ #2 : 28 Августа 2010, 13:57:13 »
Смотрите в сторону gstreamer возможно у лазаруса есть к нему биндинги. Если писать на Qt то ogg плейер с Phonon займёт строк 10 кода.

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Работа со звуком
« Ответ #3 : 29 Августа 2010, 18:13:30 »
звуки дикой природы cat /dev/random >/dev/dsp =) ну или что-то типо того. вобщем идея понятна =)

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: Работа со звуком
« Ответ #4 : 29 Августа 2010, 18:21:30 »
Цитировать
звуки дикой природы cat /dev/random >/dev/dsp =) ну или что-то типо того. вобщем идея понятна =)
А всё же использовать мультемедийные фреймворки лучше. Меньше ненужной работы. Плейер использующий gstreamer, xine или Phonon просто и непринуждённо воспроизводит все форматы поддерживаемые этими библиотеками, а это почти всё что на сегоднящний день в природе водится. Самому изобретать велосипед толку мало.

Оффлайн arrecck

  • Старожил
  • *
  • Сообщений: 1725
    • Просмотр профиля
Re: Работа со звуком
« Ответ #5 : 29 Августа 2010, 18:54:46 »
есть еще libvlc

Оффлайн Ururu_2

  • Автор темы
  • Активист
  • *
  • Сообщений: 291
    • Просмотр профиля
Re: Работа со звуком
« Ответ #6 : 29 Августа 2010, 21:04:05 »
Не, народ, вы меня не поняли. Мне нужно с нуля, самому, написать Vorbis декодер.  :D
Логическая цепочка: хочу Vorbis на своём сонэрике - плееров с поддержкой Vorbis на Java ME нет - нужно написать самому - нужно изучить Java ME - нужно изучить декодер Vorbis - для начала нужно написать Vorbis декодер на знакомом языке программирования - лучше всего я знаю Паскаль - чтобы написать декодер нужно понять основы работы со звуком.

Именно поэтому мне нужно как можно больше инфы по декодеру Vorbis и по основам работы со звуком в Linux.

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: Работа со звуком
« Ответ #7 : 29 Августа 2010, 21:36:42 »
Тогда возьми код libvorbis и посмотри как у них там устроено, дальше начни писать сразу на Java. Предварительно разберись как можно работать со звуком в твоём телефоне.

Метод предложенный Yurror отлично пойдёт для тестов на компе перед началом реализации того, что ты хочешь.

Оффлайн Ururu_2

  • Автор темы
  • Активист
  • *
  • Сообщений: 291
    • Просмотр профиля
Re: Работа со звуком
« Ответ #8 : 29 Августа 2010, 22:04:24 »
Код libVorbis я, конечно, посмотрю, но он же на Си сто пудов. А его я похуже Паскаля знаю, да и читабельность у него ниже. На Паскале бы чего-нибудь...

Yurror я вообще не понял, что предложил. Мне нужны стандартные функции Linuxа по работе со звуком. Что-то вроде: IgratZvuk(WavFile:String) - то есть передаёшь ей название файла (ну или кусок файла, или запихиваешь файл поблочно в поток и поток передаёшь функции), а она его играет. В Винде нечто подобное PlaySound называется, например.

А в идеале вообще бы спецификацию Vorbis на русском и учебник по программированию звука в Linux.

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: Работа со звуком
« Ответ #9 : 29 Августа 2010, 22:31:58 »
То что предложил Yurror очень хороший вариант. У тебя на входе отнюдь не wav файл, а ogg файл. Там у тебя будет сначала чтение метаинформации из контейнера, потом выделения аудиопотока в формате vorbis потом декодирование оного, и на выходе ты полуцишь сырые аудиоданные. Дальше ты открываешь /dev/dsp как обычный фйл на запис и пишешь сырые аудиоданные в него, без сохранения в промежуточный wav файл.

Легенды про читабельность чужово кода на C забудь. Если код оформлен грамотно, то проблем с его разбором не возникает, а безграмотно написанный код тяжко читать на любом языке. Прочитать исходники libvorbis перед переписыванием своего декодера будет очень и очень полезно.

На паскале вряд ли кто станет переписывать декодер, проще вызывать функции из libvorbis прямо из паскалевского кода чем разбираться со всей кужней. Хотя маньяков в мире хватает, поищи в гугле.

Оффлайн arrecck

  • Старожил
  • *
  • Сообщений: 1725
    • Просмотр профиля
Re: Работа со звуком
« Ответ #10 : 29 Августа 2010, 22:35:04 »
во первых все уже написано гугл JOrbis
во вторых если сначала то читать тебе не перечитать я бы начал с организация звуковой подсистемы в Linux

Оффлайн Ururu_2

  • Автор темы
  • Активист
  • *
  • Сообщений: 291
    • Просмотр профиля
Re: Работа со звуком
« Ответ #11 : 30 Августа 2010, 14:23:32 »
исходники Jorbis у меня уже есть. Но Jorbis написан на Java SE, его один фиг надо переписывать под Java ME. А что понять, что переделывать, сначала надо понять, КАК это работает.

Цитировать
Легенды про читабельность чужово кода на C забудь.

Для кого-то, может, это и легенды, а для меня суровая реальность. Плоховато я знаю Си... ???

Цитировать
Там у тебя будет сначала чтение метаинформации из контейнера, потом выделения аудиопотока в формате vorbis потом декодирование оного, и на выходе ты полуцишь сырые аудиоданные. Дальше ты открываешь /dev/dsp как обычный фйл на запис и пишешь сырые аудиоданные в него, без сохранения в промежуточный wav файл.

Вот для понимания таких моментов и хотелось бы учебник по программированию, где эта тема бы разбиралась...

Оффлайн ShadowUser15

  • Активист
  • *
  • Сообщений: 718
    • Просмотр профиля
Re: Работа со звуком
« Ответ #12 : 30 Августа 2010, 15:05:24 »
звуки дикой природы cat /dev/random >/dev/dsp =) ну или что-то типо того. вобщем идея понятна =)
А читать с чего? :) (это ведь уже смесь входов?)
вероятное введение нестандартных десятичностей, внутри системы - заставляет задуматься о переходе на другой

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Работа со звуком
« Ответ #13 : 31 Августа 2010, 07:54:03 »
ShadowUser15, а читать случайную муру =)
посмотри что содержится в файле /dev/random =)

Ururu_2, Если надо под Java ME то не стоит заморачиваться и выяснять как устроена звуковая подсистема Linuxа.
лучше почитай мануал на Java ME на предмет вывода звука.
Код: ("Something like this") [Выделить]
import java.io.*;
import javax.microedition.media.*;

                  try {
                        ByteArrayInputStream recordedInputStream = new ByteArrayInputStream(recordedAudioArray);
                        Player p2 = Manager.createPlayer(recordedInputStream, "audio/basic");
                        p2.prefetch();
                        p2.start();
                  } catch (Exception e) {
                        errormessage.setLabel("Error");
                        errormessage.setText(e.toString());
                  }
Ну а с нуля тебе много пахать придется. Желаю удачи.

Оффлайн Ururu_2

  • Автор темы
  • Активист
  • *
  • Сообщений: 291
    • Просмотр профиля
Re: Работа со звуком
« Ответ #14 : 31 Августа 2010, 11:02:58 »
Блин, да как ты не поймёшь! Чтобы написать код под Java ME мало знать Java ME, нужно ещё знать, как работает декодер Vorbis! для этого я и хочу написать его сначала под Linux, дабы понять все тонкости. А чтобы написать декодер под Linux, нужно знать, как программировать звук под Linux.

 

Страница сгенерирована за 0.018 секунд. Запросов: 21.