LINUX.ORG.RU

тв-тюнер запись звука mplayer tvtime sox


0

0

тюнер Behold 609 FM
чтобы в tvtime работал звук я ввожу в консоль
$ su -c modprobe saa7134_alsa
$ sox -r 32000 -w -t ossdsp /dev/dsp1 -t ossdsp /dev/dsp 2>>/dev/null


запись звука делаю так
$ sox -r 32000 -w -t ossdsp /dev/dsp1 output.ogg
работает только если включен tvtime


в mpalyer-e непонимаю как переключать каналы. 
$ mplayer tv:// -tv alsa:adevice=hw.1,0:amode=1:audiorate=32000:forceaudio:immediatemode=0
выводит тот канал который был последний раз включен в tvtime.
Звук работает.


как записывать звук не включая tvtime?
как в mplayer-е переключать каналы(как выставить нужную частоту в Mhz)?
как одновременно слушать и записывать звук?
Как сделать так чтобы звук в tvtime работал без sox?
anonymous

Для начала

http://www.mplayerhq.hu/DOCS/HTML/ru/index.html

частота задается через параметр freq= (в килогерцах) но так поступают редко :) в мплэере есть таблицы частот - переключение между каналами вроде клавиша H (латинская) или где-то рядом с ней - точно не помню :) Как записывать звук не интересовался потому что это не звук. В tvtime у самого звука нет - так и не поборол, правда у меня другой тюнер.

koTuk
()
Ответ на: комментарий от koTuk

как все таки выводить(записывать) звук из /dev/dsp1 не задействуя вывод(запись) изображения? Каким образом задать тюнеру частоту(канал) чтобы в /dev/dsp1 был звук

anonymous
()

Все ещё пытаюсь записать звук без видео

Наткнулся на это: http://www.mplayerhq.hu/DOCS/HTML-single/ru/MPlayer.html#id2807058

попробовал так: $ mplayer -vc null -vo null -ao pcm:fast:file=output.wav tv:// -tv alsa:adevice=hw.1,0:amode=1:audiorate=32000:forceaudio:immediatemode=0:freq=462 .50

в ответ

************************************************ **** Your system is too SLOW to play this! **** ************************************************

Possible reasons, problems, workarounds: - Most common: broken/buggy _audio_ driver - Try -ao sdl or use the OSS emulation of ALSA. - Experiment with different values for -autosync, 30 is a good start. - Slow video output - Try a different -vo driver (-vo help for a list) or try -framedrop! - Slow CPU - Don't try to play a big DVD/DivX on a slow CPU! Try some of the lavdopts, e.g. -vfm ffmpeg -lavdopts lowres=1:fast:skiploopfilter=all. - Broken file - Try various combinations of -nobps -ni -forceidx -mc 0. - Slow media (NFS/SMB mounts, DVD, VCD etc) - Try -cache 8192. - Are you using -cache to play a non-interleaved AVI file? - Try -nocache. Read DOCS/HTML/en/video.html for tuning/speedup tips. If none of this helps you, read DOCS/HTML/en/bugreports.html.

При воспроизведении файла output.wav звук заикается(идет рывками)

Простое воспроизведение работает нормально $ mplayer tv:// -tv alsa:adevice=hw.1,0:amode=1:audiorate=32000:forceaudio:immediatemode=0:freq=462 .50

В чем проблема? Что я делаю не так?

anonymous
()
Ответ на: комментарий от anonymous

Не пользуюсь mplayer-ом вообще. Могу привести пример на С как сделано в проигрывателе который шел вместе с драйвером для моего тюнера - там это легко сделать - звук и видео там обрабатываются в отдельных параллельных процессах. В принципе там через v4l драйвер так что думаю должно и с твоим работать но я пробовал только на своем тюнере и не вникал в детали переносимости.

koTuk
()
Ответ на: комментарий от koTuk

Вот тут можешь скачать пример - это даже не плэер а просто переключалка программ

http://www.sasamy.narod.ru/player.tar.bz2

распакуешь в какой-нибуть папке и в папке

#make

там все элементарно - думаю разберешься - после запуска будет задержка при инициализации потом должно включиться. Используется sox - так что удостоверься что он у тебя есть. Я убрал все лишнее - в исходниках чистый пример для воспроизведения звука или записи через sox (для этого поменяй команду в тексте player.c). Я специально не стал писать что-то готовое - если захочешь - напишешь сам. Частота по умолчанию - РТР, стандарт секам. Там есть коментарии где поменять частоту или стандарт. Если что не так - спрашивай. Процессор по умолчанию i686 - если что меняй в Makefile - там увидишь.

koTuk
()
Ответ на: комментарий от koTuk

koTuk, твой пример у меня не работает.

у меня заработало вот так:
mencoder -tv alsa:adevice=hw.1,0:amode=1:audiorate=32000:forceaudio:immediatemode=0:freq=123
.50 -endpos 01:00:00 -of rawaudio -oac pcm tv:// -ovc frameno -o output.raw
Это будет один час записи.
Sample Size    : 16-bit (2 bytes)
Sample Encoding: signed (2's complement)
Channels       : 2
Sample Rate    : 32000


файл output.raw можно потом перекодировать sox-ом
sox -r 32000 -c 2 -s -w output.raw output.wav
можно еще через FIFO
кстати, что из себя представляют эти FIFO?

Как можно одновременно слушать и записывать звук?

anonymous
()
Ответ на: комментарий от anonymous

>koTuk, твой пример у меня не работает.

просто не работает или что-то пишет хотя бы про ошибки ? sox я там написал с твоими параметрами с которыми ты написал что работало... Там посути просто переключалка каналов - вроде ничего специфического - все через v4l.

>кстати, что из себя представляют эти FIFO?

FIFO - насколько я знаю - общее название принципа first in first out - обычно в контексте буферов каких либо употребляют, например для последовательных портов, если чисто практически - то два указателя один на начало другой на конец которые гоняются друг за другом и никогда не обгоняют друг друга. Но это конечно не то :)

>Как можно одновременно слушать и записывать звук?

С этим я вообще хз - mplayer-ом не пользуюсь, да и вообще ни разу не записывал - мне кажется никак, но это имхо...

koTuk
()
Ответ на: комментарий от anonymous

Я посмотрел в интернете - в общем fifo там используется для обмена между кодировщиком и mplayer. Создаешь буфер обмена mkfifo <фифо файл> и потом в mplayer(или mencoder) -ao pcm:file=<фифо файл> а в sox в качестве входного файла указываешь этот буфер fifo. Проще набери в поисковике "mplayer fifo sox" - много интересного узнаешь :) Я этим г не пользуюсь.

koTuk
()
Ответ на: комментарий от koTuk

>просто не работает или что-то пишет хотя бы про ошибки ?

канал переключает, звука нет. Ошибок нет.

anonymous
()
Ответ на: комментарий от anonymous

Смотри тогда параметры sox - у меня так работает.
вместо этого
system("sox -r 32000 -w -t ossdsp /dev/dsp1 -t ossdsp /dev/dsp 2>>/dev/null");

вставь вот это
printf("Press Enter key to continue...\n");
system("read pause");
просто программа остановится до нажатия enter а тем временем в другом терминале можно позапускать sox с разными параметрами потом прописать то что играть будет. Кстати ты антенну там не забываешь втыкать :)

Вот про одновременный просмотр и запись

http://linuxforum.ru/index.php?s=89b5af69d03c662abefebf1ef0f68396&showtop...

koTuk
()
Ответ на: комментарий от koTuk

Я непонимаю как поменять частоту меняю тут:↓ VDOFreq.frequency = 49750*2*1000/125 ; // 49750 is frequency kHz

все равно после компиляции выставляет частоту 49.750 mhz В чем дело? Звука скорее всего нет потому что на частоте 49.750 у меня нет канала. и ещё: как выставить стандарт PAL? Как сделать чтобы частоту и стандарт вещания задавать в виде аргументов?

anonymous
()
Ответ на: комментарий от koTuk

ошибка с форматированием

Я непонимаю как поменять частоту
           меняю тут:↓
VDOFreq.frequency = 49750*2*1000/125 ; // 49750 is frequency kHz

все равно после компиляции выставляет частоту 49.750 mhz
В чем дело?
Звука скорее всего нет потому что на частоте 49.750 у меня нет канала.
и ещё: как выставить стандарт PAL? Как сделать чтобы частоту и стандарт вещания задавать в виде аргументов?

anonymous
()
Ответ на: комментарий от anonymous

Ладно - похоже с С совсем не знаком - пользуйся тогда лучше готовым типа mplayer.
>все равно после компиляции выставляет частоту 49.750 mhz
В чем дело?

В том что строка printf выводит мою частоту которую я написал :) Реально должна установиться частота которая в структуре
VDOFreq.frequency = 49750*2*1000/125 ; // 49750 is frequency kHz
на экран выводится простой текст - можешь там все что угодно написать.

koTuk
()
Ответ на: комментарий от koTuk

>Ладно - похоже с С совсем не знаком - пользуйся тогда лучше готовым типа mplayer.

>В том что строка printf выводит мою частоту которую я написал

Да, с С я не знаком, но с Turbo Pascal знаком, и что такое printf я догадался

Если менять вывод printf, то после компиляции вывод меняется(частота от этого, разумеется, не меняется)

>Реально должна установиться частота которая в структуре VDOFreq.frequency = 49750*2*1000/125 ; // 49750 is frequency kHz

Нет, все равно выставляется 49,75 MHz что бы я туда не вводил

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.