LINUX.ORG.RU

Аналоговый TV тюнер в 2026-м году

 


1

0

Конечно, это всё устарело и не нужно. Но мне - нужно. Не нужно цифровое TV, нужно аналоговое. Так вот, докладываю, что в 2026-м единственная программа для Linux, которая хоть как-то работает - это mplayer. Всё остальное из мануалов - ненастраивемое убожество, которое либо не работает вообще, либо выдаёт дичь, а настроек нетути. mplayer работает, но не совсем. Пришёл к такой команде:

mplayer tv:// -tv driver=v4l2:norm=PAL-I:input=0:amode=1:immediatemode=0:alsa:width=720:height=576:outfmt=yv12:device=/dev/video2:chanlist=europe-west:channel=36

Практически всё идеально, только одна проблема : то, что оно показывает, отстаёт от реальности, и продолжает увеличивать отставание. Не рассинхронизация видео и звука, а именно отставание от действительности. За минуту показывает 56 секунд, остальное у него где-то накапливается, в результате за 10 минут выжирает гигабайт оперативы и это продолжается с такой же скоростью. Как оно такого достигает - 🤦. И проблема больше не в выжирании, пусть жрёт, у меня оперативы достаточно, а в отставании - это не пойдёт.

Нашёл ещё вариант. Изображение вынимаем такой командой

mplayer tv:// -tv driver=v4l2:norm=PAL-I:input=0:amode=1:immediatemode=1:width=720:height=576:outfmt=yv12:device=/dev/video2:chanlist=europe-west:channel=36

Но нет звука, а звук вынимаем вот так:

arecord -D «hw:CARD=PALSECAM,DEV=0» -f S16_LE -c2 -r44100 | aplay -q -

Теперь, оставания нет, рассинхронизации нет, почти всё идеально. Одна мелочь. Раз в ~50 секунд звук кратковременно (меньше секунды) прерывается, и это стабильно. Я слушаю музыку и меня это раздражает. Игры с буфером не помогли.

Пишу с небольшой надёждой, что может кто знает, что можно сделать.

★★★★★

Последнее исправление: lenin386 (всего исправлений: 4)
Ответ на: комментарий от aol

Звук заикается, сыпет в консоль вот это, настроек нет.

LSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] underrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] underrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] overrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] underrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] overrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] underrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] overrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] underrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] overrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] underrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] overrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] underrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] overrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] underrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] overrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] underrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] overrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] underrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] underrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] overrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] underrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] overrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] underrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] overrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] underrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] overrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] underrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] overrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] underrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] overrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] underrun occurred

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

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

ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] overrun occurred
ALSA lib pcm.c:8787:(snd_pcm_recover) [error.pcm] underrun occurred

кстати, наблюдаемое в мплеере поведение может быть связано именно с этим

aol ★★★★★
()
Последнее исправление: aol (всего исправлений: 1)

Раньше tvtime был единственной более-менее приспособленной к реальному использованию программой. Не знаю, жив он сейчас или нет. Но по настройкам он был убогий, и с наркоманским интерфейсом (все в osd). По сравнению с любой аналогичной программой под винду это было просто смешно.

Khnazile ★★★★★
()

Были у меня подобные проблемы с USB web-камерой. На нетбуке никак не поборол, там CPU не тянул, при просмотре 100% нагрузка была. А на компе решалось добавлением опций:

... driver=v4l2:fps=24:... -fps 24 -framedrop ...
DiMoN ★★★
()

Поставь в arecord -t raw (чтобы он не сообщал формат в заголовках), в aplay продублируй описание формата, но частоту чуть поменьше. Насколько поменьше - подбери экспериментально. Например, начни с 44050 и посмотри как изменилось прерывание звука (оно станет либо чуть реже, либо чуть короче). Если снизишь слишком сильно - звук начнёт запаздывать, это тоже плохо, поэтому надо подобрать оптимальную величину желательно с точностью до герца, если терпения хватит.

Ну или пиши прогу которая сама будет ресемплить звук динамически, подстраиваясь под ситуацию (избыток буферизации - чуть ускоряемся, мало - замедляемся).

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)

Похоже на выпадение кадров, с аналоговым видео, особенно VHS при оцифровке это была беда.

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

Кажется DV конвертор решал проблему, но точно не скажу.

sr11
()

С год назад прекрасно работало с кабельным и эфирным, 2 варианта:

mpv --demuxer-lavf-o=timestamps=abs --tv-chanlist=russia --tv-input=0 tv://8 --tv-normid=8 --audio-file=av://alsa:sysdefault:CARD=SI7012 -o cap.ts

mpv --volume=70 --demuxer-lavf-o=timestamps=abs --ovc=mpeg4 --oac=libmp3lame --oacopts=b=128000" --tv-chanlist=russia --tv-input=0 --tv-amode=0 --audio-file=av://alsa:sysdefault:CARD=SI7012 tv://8 --tv-normid=8 -o cap.mkv

В 3 варианте пишем раздельно:

mpv --tv-chanlist=russia --tv-input=0 tv://8 --tv-normid=8 --tv-alsa --tv-adevice=hw.2 --tv-amode=1 -o Videos/3.ts & arecord -D hw:2 -c 2 -f dat Videos/3.wav

Воспроизводим так:

mpv --audio-file=3.wav 3.ts

Причём успевало через старый PCI на Athlon XP под fedora-25 32 bit. Но кабельшики обнаглели, отключился. На эфирном же периодическое пропадание сигнала.

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

Наши кабельщики вещают цифровое ТВ в аналоговом формате.

Прямо детство в начале 90-х вспомнил, как кабельное(платное) подключали к общей антенне на крыше и с небольшими хитростями при настройке его бесплатно смотрел весь подъезд. Извиняюсь за оффтоп.

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

А где ты эфир берёшь?

Ну на самом деле все может быть банальнее - кассеты с камер давней семейной хроники. То что уникально и не скачаешь и посмотреть уже негде… А там еще дедушка живой….

Qui-Gon ★★★★★
()
Ответ на: комментарий от gagarin0

В общем, я сначала решил, что работает. Но работает она 17 минут. Потом выдёт

underrun!!! (at least 1000904.769 ms long)

и дальше начинает пропускать звук, как и раньше.

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

В общем, похоже, твой совет самый рабочий. Скрипт получился таким :

arecord -D plughw:CARD=PALSECAM,DEV=0 -f S16_LE -c2 -r48000 -t raw | aplay -f S16_LE -c2 -r47750 -

Вроде, всё чётко. Если и будет запинка раз в ~полчаса, это совсем не то, что раз в 50 секунд. Спасибо за идею.

lenin386 ★★★★★
() автор топика
Ответ на: комментарий от Qui-Gon

15 лет назад попытался подключить 2 видика из кладовки к ТВ, чтобы посмотреть старые кассеты.

Один видик испустил волшебный дым.

Второй видик зажевал в усмерть кассету.

Перед подключением любого видика сейчас требуется:

  1. Перепаять в нём все электролиты
  2. Заменить все пассики.

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

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

Этим занимаются специальные люди, и выставляют работу на Авито. Не очень, кстати, дорого. Сейчас всё ещё можно купить вполне работающий видак. Перепайка электролитов, кстати, это фетишишизм. Нравится - перепаивайте, в но большинстве случаев, этого не требуется. Пассики - да, надо менять.

lenin386 ★★★★★
() автор топика
Последнее исправление: lenin386 (всего исправлений: 1)

:immediatemode=...

Если я правильно помню, то вот эта опция и есть причина рассинхрона: без неё звука нет, с ней есть рассинхрон

У меня такая же была проблема на аналоговом тюнере PixelView MPEG8000GT и плате Asrock G41, я тогда придумал так запускать тюнер:

((sox -r 32000 -t alsa hw:1,0 -t alsa hw:0,0 &) && mplayer tv:// )&&killall sox
moskvich
()
Ответ на: комментарий от moskvich

Если я правильно помню, то вот эта опция и есть причина рассинхрона: без неё звука нет, с ней есть рассинхрон

Для меня, сие лишено логики. Если с ней не работает нормально, тогда зачем она вообще? Что за дичь смотреть видео и слушать звук двумя разными программами?

lenin386 ★★★★★
() автор топика
Последнее исправление: lenin386 (всего исправлений: 4)
Ответ на: комментарий от mky

Без тюнера композит зацифровать невозможно, ты путаешь с компонентным сигналом. Видаки никогда не выдавали компонентный сигнал, камеры выдавали.

lenin386 ★★★★★
() автор топика
Последнее исправление: lenin386 (всего исправлений: 1)
Ответ на: комментарий от mky

Видеобластерами они назывались,

видобластерами назывались изделия фирмы creative, как и саундбластерами назвались их же поделия.

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

Qui-Gon ★★★★★
()
Ответ на: комментарий от mky

TV-tuner подразумевает приёмник ТВ-частот.

Да, пожалуй. Но нет другого устройства, которое зацифрует композит.

lenin386 ★★★★★
() автор топика
Последнее исправление: lenin386 (всего исправлений: 1)
Ответ на: комментарий от Qui-Gon

видобластерами назывались изделия фирмы creative

Нет, во времена VLB фирма Creative Technology Ltd. не выпускала платы видеозахвата. Именно в те времена (около 1994 года) словечко Videoblaster и набрало популярность. А позже, когда появились платы видеозахвата с эфирной частью (TV-tuner), в прайсах они так и различались, видеобластеры отдельно, ТВ-тюнеры отдельно.

эмулируя эфирный канал через встроенный модулятор

Да, и это был 39 ДМВ канал, и далеко не каждый видик мог быть на 36 канал перенастроен.

В случае оцифровки видео с касеты видео пишут отдельно, звук отдельно, звук берут с тюльпана, а не с эфирной частоты. А ТС именно классическая проблемма ТВ-тюнера, что он даёт звук из эфирного сигнала на своей фиксированной частоте...

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

36-й канал - это канал, на котором работает модулятор ZX-Spectrum. Я с него слушаю музыку. Насчёт «видеобластеров» - я конечно всё понимаю, но должны были остаться какие-то следы от них в Сети.

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

Я тут уточню, я больше про словечко/термин, и время его популяризации у нас (в РФ). Creative Videoblaster — это вполне существующая плата, и это как-бы плата захвата видео, но не то, что потом стало пониматься под платой видеозахвата.

Шина ISA и персональные компы тех лет не для обработки видеопотока. Тогда Creative Videoblaster CT6000 и подобные её были с видеовыходом на монитор и они могли в видеосигнал VGA выводить входное видео с композитного видеовхода. И отдельные кадры из этого потока они могли сохранить в своей памяти и потом передать на комп/записать в файл, но не более. А потом, когда и компы и платы видеозахвата стали мощнее и как-то стали в состоянии обрабатывать видеопоток их все стали называть «Видеобластер»,

mky ★★★★★
()