LINUX.ORG.RU

tvtime & saa7134-alsa


0

0

Решил тут настроить вышеуказанную связку. Если кого-то ещё интересует данный вопрос, вот возможное решение:

В /etc/modprobe.d/aliases нужно добавить опцию alsa=1 для saa7134, а для saa7134-alsa -- опцию index=1.

tvtime запускаю следующим скриптом:

---------------------------------------------------------------------------
#!/bin/sh

sox -q -c 2 -r 32000 -w -t alsa hw:1,0 -t alsa hw:0,0 & tvtime --mixer=/dev/mixer:pcm
sox_pid=`ps -ax | grep "[0-9] sox" | cut --bytes=2-5`
kill $sox_pid
---------------------------------------------------------------------------

Невыясненными остались 2 вопроса:

1) Непонятно, как регулировать громкость, используя микшер TV-тюнера. alsamixer -c 1 и изменение
громкости на любом из каналов не дают никакого эффекта.

2) В звуке периодически проскакивают какие-то щелчки. Практически полностью убирается путём небольшого уменьшения
частоты канала. Есть подозрение, что в проблема в alsa.

У меня это работает в debian-amd64 lenny с тюнером AverTV Studio 509.

anonymous

При непосредственном копировании звука по PCI с одной звуковой карты на другую необходимо учитывать, что у них независимые тактовые генераторы. Т.е. одна на самом деле использует частоту дискретизации звука, например, 31999 Гц, а другая 32001 Гц, и надо, чтобы программа измеряла отношение этих частот и соответственно сжимала или растягивала звук. sox этого не делает.

Решения три:

1) написать свою программу для передачи звука между картами

2) воспользоваться готовым плеером, который умеет вытворять такие фокусы со звуком - на сей день это только mplayer и vlc, т.е. tvtime идет в топку

3) воспользоваться аналоговым аудиокабелем

AEP ★★★★★
()

Кстати, а чего все так стремятся использовать звук по pci? Даже если занят линейный вход, всегда возможно подключить напр. к cd-in на звуковухе/маме

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

> Даже если занят линейный вход

При этом способе звук оставляет желать лучшего.

> всегда возможно подключить напр. к cd-in на звуковухе/маме

Стоящий вариант, обязательно его попробую.

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

> При этом способе звук оставляет желать лучшего.

^-))))

фгм детектед.

Ты какого качества звук с тв получать хочешь?

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

10КГц - верхняя граница передаваемого в тв звука. хоть на 22КГц оцифровывать можно.

manntes ★★
()
Ответ на: комментарий от Anoxemian

Чтобы ненужных вопросов у вас больше не возникало, уточню, что это _у меня так, с конкретной моделью тюнера и
звуковой карты_. Может у кого-то и нормально. А нужен мне звук нормальной громкости и без шумов.
Я ответил на ваш вопрос?

anonymous
()

ну примерно так и работает уже с год.
до этого использовал аналоговый кабель, потом я походу спалил вход на звуковой и переключился на звук по pci(это к вопросу "а нафига").

Правильно ли я понял, что mplayer и vlc умееют сжимать/растягивать звук "синхронизируя" таким образом частоты источника и приемника сигнала? Удивлен. Не замечал подобной магии.

cobold ★★★★★
()
Ответ на: комментарий от madcore

> всегда возможно подключить напр. к cd-in на звуковухе/маме

На Intel DG965SS - нет (за отсутствием такого входа)

AEP ★★★★★
()
Ответ на: комментарий от cobold

> Правильно ли я понял, что mplayer и vlc умееют сжимать/растягивать звук "синхронизируя" таким образом частоты источника и приемника сигнала?

Да. Для VLC, см. функцию aout_OutputNextBuffer() в http://git.videolan.org/?p=vlc.git;a=blob;f=src/audio_output/output.c

> Удивлен. Не замечал подобной магии.

Правильная магия незаметна - заметна неправильная. Вот попробуйте (для более быстрой демонстрации проблемы) передать модулю saa7134 неправильный параметр audio_clock_tweak, и начать тупо копировать звук через MMAP (требуется linux >= 2.6.24 из-за бага в драйвере) и с маленьким буфером:

arecord -M --period-size 128 --buffer-size 512 -r 32000 -f S16_LE -c 2 -D hw:1 | aplay

Минут через 15 (а вероятно, даже раньше) звук начнет трещать и в консоль будут сыпаться сообщения underrun или overrun, как раз из-за того, что у каждой карты свое представление, что же такое 32 kHz.

AEP ★★★★★
()

Совсем забыл -- после завершения tvtime желательно восстановить состояние микшера. Код:

volume=`amixer get PCM | grep % | sed -e 's/^.*\[\([0-9]\+%\).*$/\1/' | paste -s -d ,`
sox -q -c 2 -r 32000 -w -t alsa hw:1,0 -t alsa hw:0,0 & tvtime --mixer=/dev/mixer:pcm
amixer sset PCM $volume unmute
...

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

Попробовал смотреть с помощью vlc. Почему-то видео не выводит -- только звук. Что я неправильно делаю?

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

Вопрос снят, уже разобрался.

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