Russian Qt Forum

Qt => Мультимедиа => Тема начата: sibmail от Апрель 03, 2011, 07:14



Название: qaudioinput -> сжатие на лету -> в файл, в сеть
Отправлено: sibmail от Апрель 03, 2011, 07:14
подскажите как или чем сжимать на лету поток


Название: Re: qaudioinput -> сжатие на лету -> в файл, в сеть
Отправлено: kibsoft от Апрель 03, 2011, 22:45
Цитировать
QByteArray qCompress ( const QByteArray & data, int compressionLevel = -1 )
Compresses the data byte array and returns the compressed data in a new byte array.
The compressionLevel parameter specifies how much compression should be used. Valid values are between 0 and 9, with 9 corresponding to the greatest compression (i.e. smaller compressed data) at the cost of using a slower algorithm. Smaller values (8, 7, ..., 1) provide successively less compression at slightly faster speeds. The value 0 corresponds to no compression at all. The default value is -1, which specifies zlib's default compression.
See also qUncompress().

Может поможет..


Название: Re: qaudioinput -> сжатие на лету -> в файл, в сеть
Отправлено: xokc от Апрель 04, 2011, 22:16
Мягко говоря не поможет. Это классические алгоритмы сжатия без потерь - они звук почти не сжимают. Ему бы видимо во что-то mp3 подобное преобразовывать надо. Задача почти не сформулирована - что за звук он жмёт, для чего его вообще жать, в какую сеть он его пишет? Пока конкретики не будет и ответов автору темы нормальных не видать.


Название: Re: qaudioinput -> сжатие на лету -> в файл, в сеть
Отправлено: sibmail от Апрель 05, 2011, 05:56
какая еще конкретика? кто в курсе дела тот понимает о чем речь!
qaudioinput записывает в PCM, это тоже самое что wav записать в виндосе только без заголовка. эту вавку можно сжать например кодеком GSM -  в 5-10 раз уменьшится размер файла без особых потерь.

Сжать звук надо для уменьшения места и передачи на малых скоростях!


Название: Re: qaudioinput -> сжатие на лету -> в файл, в сеть
Отправлено: ufna от Апрель 05, 2011, 09:11
бери FFMpeg и сжимай на лету.


Название: Re: qaudioinput -> сжатие на лету -> в файл, в сеть
Отправлено: sibmail от Апрель 05, 2011, 10:01
разбираюсь с ффмпег... ты ж не говоришь с чего начинать


Название: Re: qaudioinput -> сжатие на лету -> в файл, в сеть
Отправлено: ufna от Апрель 05, 2011, 10:46
ну вопроса то не было "с чего начать в ффмпег"? :)

Штука реально муторная, под винду лучше брать дев. билд с нужными кодеками. Достаточно сделать пример, что они на сайте дают (только он устарел сильно, придется поправить). Там увидишь где идет конвертация видео, точно так же потом ловить и аудио. Будет время, отпишу подробнее.


Название: Re: qaudioinput -> сжатие на лету -> в файл, в сеть
Отправлено: Пантер от Апрель 05, 2011, 10:56
А если mencoder использовать?


Название: Re: qaudioinput -> сжатие на лету -> в файл, в сеть
Отправлено: sibmail от Апрель 05, 2011, 13:25
ну вопроса то не было "с чего начать в ффмпег"? :)

Штука реально муторная, под винду лучше брать дев. билд с нужными кодеками. Достаточно сделать пример, что они на сайте дают (только он устарел сильно, придется поправить). Там увидишь где идет конвертация видео, точно так же потом ловить и аудио. Будет время, отпишу подробнее.

http://ffmpeg.org на какую ссылку с примером жать?


Название: Re: qaudioinput -> сжатие на лету -> в файл, в сеть
Отправлено: ufna от Апрель 05, 2011, 14:50
http://ffmpeg.org на какую ссылку с примером жать?


В разделе "Documentation" внизу: http://www.inb.uni-luebeck.de/~boehme/using_libavcodec.html

это версия старая, сразу не запустится, есть в сети и апгрейды ее. Сам FFMpeg собирать задница, лучше дев. билды качни.


Название: Re: qaudioinput -> сжатие на лету -> в файл, в сеть
Отправлено: xokc от Апрель 05, 2011, 21:09
какая еще конкретика? кто в курсе дела тот понимает о чем речь!
Сжать звук надо для уменьшения места и передачи на малых скоростях!
Мда... Кто в курсе дела, тот понимает, что крики кота, которому передавили хвост - это тоже звук. А то, что тебе нужен низкоскоростной вокодер из вопроса никак не вытекало. Кроме того GSM кодек предназначен для передачи звука со скоростью около 9800 bps. А вот, например, MELP - для 600 bps. Разница есть? Соответственно и сложность алгоритмов мягко говоря несопоставима. Так что конкретики-то и хотелось.
Если все же говорить о кодировании речи, то навскидку можно посмотреть http://www.speex.org. Там есть варианты кодеков на все случаи жизни (2000-32000 bps).