mpv tv:// (ТВ-тюнер PixelView MPEG8000GT, настройка)

Разные проблемы звука, видео, обсуждение разных устройств и т.д.

Модератор: Модераторы разделов

Ответить
kotnaton
Сообщения: 234

mpv tv://

Сообщение kotnaton »

Который день бьюсь с настройкой сабжевого устройства, "из коробки" тюнер работал только с композитным входом, но после установки firmware xc3028-v27.fw, и находки таких modprobe.conf:

Код: Выделить всё

options cx88xx card=66 tuner=71 alsa=1 index=2
options snd-hda-intel index=0
options cx88_alsa index=1


картинка появилась, но без звука. Теперь надо чтобы великий немой заговорил. В общем, драйвер cx88 категорически отказывается давать в mplayer звук чере альзу... "Audio: no sound" (то же самое и tvtime, который молчит даже при имеющемся /dev/mixer):

или, если уточнить:

Код: Выделить всё

$ mplayer tv://R-2 -tv device=/dev/video0:normid=13:alsa:forceaudio:chanlist=russia
MPlayer SVN-r36265-4.8.2 (C) 2000-2013 MPlayer Team
203 audio & 423 video codecs
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing tv://R-2.
TV file format detected.
Selected driver: v4l2
 name: Video 4 Linux 2 input
 author: Martin Olschewski <olschewski@zpr.uni-koeln.de>
 comment: first try, more to come ;-)
Selected device: Prolink Pixelview MPEG 8000GT
 Tuner cap: STEREO LANG1 LANG2
 Tuner rxs: MONO
 Capabilities:  video capture  VBI capture device  tuner  read/write  streaming
 supported norms: 0 = NTSC-M; 1 = NTSC-M-JP; 2 = NTSC-443; 3 = PAL-BG; 4 = PAL-I; 5 = PAL-DK; 6 = PAL-M; 7 = PAL-N; 8 = PAL-Nc; 9 = PAL-60; 10 = SECAM-B; 11 = SECAM-G; 12 = SECAM-H; 13 = SECAM-DK; 14 = SECAM-L;
 inputs: 0 = Television; 1 = Composite1; 2 = S-Video;
 Current input: 0
 Current format: UYVY
v4l2: current audio mode is : MONO
v4l2: ioctl set format failed: Invalid argument
v4l2: ioctl set format failed: Invalid argument
TV channel names detected.
Selected channel: 2 - ch1 (freq: 59.250)
Could not find a UTF-8 locale, some keys will not be handled.
==========================================================================
Opening video decoder: [raw] RAW Uncompressed Video
Movie-Aspect is undefined - no prescaling applied.
VO: [xv] 640x480 => 640x480 Packed UYVY
Selected video codec: [rawuyvy] vfm: raw (RAW UYVY)
==========================================================================
Audio: no sound
FPS forced to be 25.000  (ftime: 0.040).
Starting playback...
V:   0.0  44/ 44  0%  1%  0.0% 0 0
v4l2: 45 frames successfully processed, 0 frames dropped.

Exiting... (Quit)

Ну вот а если в mplayer скормить такое уточнение: $ mplayer tv://R-2 -tv device=/dev/video0:normid=3:alsa:forceaudio:chanlist=russia
То можно бонусом получить такую информацию:

Код: Выделить всё

v4l2: current audio mode is : MONO
v4l2: ioctl set format failed: Invalid argument
v4l2: ioctl set format failed: Invalid argument
TV channel names detected.
Selected channel: 2 - ch1 (freq: 59.250)
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM /dev/audio1
Error opening audio: No such file or directory
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM /dev/audio1
Error opening audio: No such file or directory
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM /dev/audio1
Error opening audio: No such file or directory
v4l2: 0 frames successfully processed, 0 frames dropped.

cat .mplayer/config

Код: Выделить всё

 Write your default config options here!
tv=driver=v4l2:normid=13:adevice=/dev/audio1:channels=2-ch1,4-ch2,SK1-ch3,SK2-ch4,SK3-ch5,SK4-ch6,SK5-ch7,SK6-ch8,SK7-ch9,6-ch10,7-ch11,10-ch13,12-ch14
# tv=adevice=/dev/audio1:immediatemode=0

Помогает опция "immediatemode=0" но она дает такой вот артефактик "новый кадр в старом" при переключении каналов:
Изображение

Жуткий рассинхрон и mpv вываливает такое предупреждение:

Код: Выделить всё

mpv tv://
Playing: tv://
Audio block size too low, setting to 7990!
Detected file format: TV card demuxer
[stream] Video (+) --vid=1 (rawvideo)
[stream] Audio (+) --aid=1 (mp-pcm)
Failed to open VDPAU backend libvdpau_nvidia.so: cannot open shared object file: No such file or directory
[vo/vdpau] Error when calling vdp_device_create_x11: 1
X11 error: GLXBadFBConfig
[vo/opengl] Could not create GL3 context. Retrying with legacy context.
Selected video codec: raw video [lavc:rawvideo]
Selected audio codec: Raw PCM [lavc:mp-pcm]
AO: [alsa] 48000Hz stereo 2ch s16le
VO: [opengl] 640x480 => 640x480 420p
AV: 00:00:01 / 00:00:00 (0%) A-V:  1.352 Late: 50


           *************************************************
           **** Audio/Video desynchronisation detected! ****
           *************************************************

This means either the audio or the video is played too slowly.
Possible reasons, problems, workarounds:
- Your system is simply too slow for this file.
     Transcode it to a lower bitrate file with tools like HandBrake.
- Broken/buggy _audio_ driver.
     Experiment with different values for --autosync, 30 is a good start.
     If you have PulseAudio, try --ao=alsa .
- Slow video output.
     Try a different -vo driver (-vo help for a list) or try -framedrop!
- Playing a video file with --vo=opengl with higher FPS than the monitor.
     This is due to vsync limiting the framerate.
- Playing from a slow network source.
     Download the file instead.
- Try to find out whether audio or video is causing this by experimenting
  with --no-video and --no-audio.
- If you swiched audio or video tracks, try seeking to force synchronization.
If none of this helps you, file a bug report.

AV: 00:00:57 / 00:00:00 (0%) A-V: 84.834 Late: 3512

libv4l2: error dequeuing buf: Invalid argument

cat .mpv/config

Код: Выделить всё

$ cat .mpv/config
# Write your default config options here!
tv-device=/dev/video0
tv-adevice=/dev/dsp1
tv-immediatemode=0
# tv-norm=SECAM_DK
tv-normid=13
tv-buffersize=1024
tv-width=640
tv-height=480
tv-fps=25
tv-quality=0
tv-forcechan=2
msglevel-tv=2
autosync=1
tv-decimation=1
# tv-input=0
tv-channels=R2-ch1,R4-ch2,R6-ch3,R7-ch4,R9-ch5,R10-ch6,R12-ch7,SR1-ch8,SR2-ch9,SR3-ch10,SR4-ch11,SR5-ch12,SR6-ch13,SR7-ch14,SR11-ch15,SR12-ch16,SR13-ch17,SR14-ch18,E6-ch19,E12-ch20

[composite]
tv-device=/dev/video0
tv-adevice=/dev/audio1
tv-immediatemode=0
tv-normid=13
tv-input=0


Хэлп, что делать ???

P.S: Да, и актуальный lsmod (включил все что можно было):

Код: Выделить всё

lsmod
Module                  Size  Used by
snd_pcm_oss            38927  0
snd_mixer_oss          14586  1 snd_pcm_oss
fuse                   74768  6
rc_pixelview_new        1138  0
tuner_xc2028           20060  1
tuner                  16522  1
coretemp                6334  0
kvm_intel             131191  0
cx8800                 30114  0
kvm                   389125  1 kvm_intel
cx88_alsa               9557  1
cx88xx                 73565  2 cx88_alsa,cx8800
snd_hda_codec_via      19726  1
snd_hda_intel          36904  1
snd_hda_codec         149953  2 snd_hda_codec_via,snd_hda_intel
snd_hwdep               6340  1 snd_hda_codec
btcx_risc               3315  3 cx88_alsa,cx8800,cx88xx
snd_pcm                77709  4 snd_pcm_oss,cx88_alsa,snd_hda_codec,snd_hda_intel
tveeprom               14361  1 cx88xx
videobuf_dma_sg         8072  3 cx88_alsa,cx8800,cx88xx
microcode              15216  0
videobuf_core          15855  3 videobuf_dma_sg,cx8800,cx88xx
rc_core                16611  3 rc_pixelview_new,cx88xx
v4l2_common             4803  3 tuner,cx8800,cx88xx
videodev              111172  5 tuner,cx88_alsa,cx8800,cx88xx,v4l2_common
i915                  657302  2
video                  11228  1 i915
drm_kms_helper         36286  1 i915
atl1c                  36906  0
gpio_ich                4536  0
iTCO_wdt                5407  0
iTCO_vendor_support     1937  1 iTCO_wdt
drm                   238206  3 i915,drm_kms_helper
media                  11751  1 videodev
ppdev                   7126  0
snd_page_alloc          7242  2 snd_pcm,snd_hda_intel
i2c_algo_bit            5399  2 i915,cx88xx
psmouse                85428  0
snd_timer              18726  1 snd_pcm
evdev                  11085  7
i2c_i801               11277  0
i2c_core               24164  12 drm,i915,i2c_i801,tuner,drm_kms_helper,i2c_algo_bit,cx8800,cx88xx,v4l2_common,tv
eeprom,tuner_xc2028,videodev
snd                    59173  13 snd_pcm_oss,cx88_alsa,snd_hwdep,snd_timer,snd_hda_codec_via,snd_pcm,snd_hda_code
c,snd_hda_intel,snd_mixer_oss
soundcore               5450  1 snd
pcspkr                  2035  0
shpchp                 25465  0
lpc_ich                13376  0
serio_raw               5049  0
intel_agp              10880  1 i915
intel_gtt              12664  3 i915,intel_agp
parport_pc             19543  0
parport                30549  2 ppdev,parport_pc
button                  4677  1 i915
acpi_cpufreq           10779  0
processor              24935  1 acpi_cpufreq
sg                     25657  0
ext4                  474251  1
crc16                   1367  1 ext4
mbcache                 6082  1 ext4
jbd2                   83504  1 ext4
usb_storage            48007  0
sd_mod                 30789  4
sr_mod                 14898  0
cdrom                  34848  1 sr_mod
ata_generic             3410  0
pata_acpi               3395  0
ata_piix               25088  3
libata                170856  3 pata_acpi,ata_generic,ata_piix
scsi_mod              130669  5 sg,usb_storage,libata,sd_mod,sr_mod
ehci_pci                4000  0
uhci_hcd               24795  0
ehci_hcd               59220  1 ehci_pci
usbcore               180136  4 uhci_hcd,usb_storage,ehci_hcd,ehci_pci
usb_common              1656  1 usbcore


Код: Выделить всё

v4l2-ctl --list-devices
Prolink Pixelview MPEG 8000GT (PCI:0000:03:02.0):
    /dev/video0
    /dev/radio0
    /dev/vbi0

Интересно, где шляется /dev/audio1 ???
бывает же такое ???
Спасибо сказали:
kotnaton
Сообщения: 234

Re: mpv tv://

Сообщение kotnaton »

вобщем, единственное решение вопроса, которое нарыл, это запуск такой командой:

Код: Выделить всё

((sox -t alsa hw:1,0 -t alsa hw:0,0 &) && mpv tv:// )&&killall sox

Но... если активны другие источники звука, например flash, или какие-либо плагины в браузере, то снова молчок:

Код: Выделить всё

$ ((sox -t alsa hw:1,0 -t alsa hw:0,0 &) && mpv tv:// )&&killall sox
sox FAIL formats: can't open output file `hw:0,0': snd_pcm_open error: Device or resource busy

Как заставить sox микшироваться ???
бывает же такое ???
Спасибо сказали:
kotnaton
Сообщения: 234

Re: mpv tv://

Сообщение kotnaton »

Подниму тему. Возникла необходимость в записи с композитного входа, пишу такой командой:

Код: Выделить всё

mencoder tv:///1 -tv driver=v4l2:width=640:height=480:normid=13:alsa:adevice=hw.1,0:forceaudio -o запись_с_тюнера_за-$(date +%d-%m-%Y-%H-%A-%H:%M:%S).avi -ovc xvid -vf pp=lb -oac mp3lame -lameopts cbr:preset=128:mode=1 -mc 0 -noskip


Звук идёт от тв-тюнера, как сделать звук с композитного входа ?

выхлоп arecord -l такой:

Код: Выделить всё

**** List of CAPTURE Hardware Devices ****
card 0: Intel [HDA Intel], device 0: VT1705 Analog [VT1705 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: CX8801 [Conexant CX8801], device 0: CX88 Digital [CX88 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0



Люди, H-E-L-P, тону !
бывает же такое ???
Спасибо сказали:
kotnaton
Сообщения: 234

Re: mpv tv://

Сообщение kotnaton »

В общем, не могу нормально запустить тв-тюнер MPEG8000GT2

Нашел вики, там посоветовали провериться на совместимость:

Код: Выделить всё

gst-launch-1.0 --gst-debug=alsa:5 alsasrc device=$AUDIO_DEVICE ! fakesink 2>&1 | sed -une '/returning caps/  s/[s;] /\n/gp'


в моём случае:

Код: Выделить всё

gst-launch-1.0 --gst-debug=alsa:5 alsasrc device=hw.1.0
0:00:00.016005525 [334m 1443[00m      0x1bdca60 [37mDEBUG  [00m [00m                alsa gstalsaplugin.c:74:plugin_init:[00m binding text domain gst-plugins-base-1.0 to locale dir /usr/share/locale
0:00:00.016299662 [334m 1443[00m      0x1bdca60 [37mDEBUG  [00m [00m                alsa gstalsasrc.c:267:gst_alsasrc_init:<GstAlsaSrc@0x1bf12e0>[00m initializing
0:00:00.017214629 [334m 1443[00m      0x1bdca60 [33;01mWARN   [00m [00m                alsa pcm.c:2266:snd_pcm_open_noupdate:[00m alsalib error: Unknown PCM hw.1
0:00:00.017336480 [334m 1443[00m      0x1bdca60 [33;01mWARN   [00m [00m                alsa gstalsasrc.c:744:gst_alsasrc_open:<alsasrc0>[00m error: Не удалось открыть устройство для записи.
0:00:00.017348133 [334m 1443[00m      0x1bdca60 [33;01mWARN   [00m [00m                alsa gstalsasrc.c:744:gst_alsasrc_open:<alsasrc0>[00m error: Recording open error on device 'hw.1': Нет такого файла или каталога
ОШИБКА: Конвейер не хочет становиться на паузу.
ОШИБКА: из элемента /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0: Не удалось открыть устройство для записи.
Дополнительная отладочная информация:
gstalsasrc.c(744): gst_alsasrc_open (): /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0:
Recording open error on device 'hw.1': Нет такого файла или каталога


Пытаюсь искать устройство так, как там сказано:

Код: Выделить всё

arecord -L | grep ^hw:


Ничего не находит.

бывает же такое ???
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: mpv tv://

Сообщение Bizdelnick »

audio device (hw:CARD=<id>,DEV=<number>)

kotnaton писал(а):
29.02.2016 14:50
device=hw.1.0

Почему точки?

kotnaton писал(а):
29.02.2016 14:50
Ничего не находит.

А полный вывод aplay -L смотрели? Вероятно, формат изменился со времён написания статьи на вики, поэтому ничего не грепается.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
kotnaton
Сообщения: 234

Re: mpv tv://

Сообщение kotnaton »

Перешёл с арча, на котором сидел последние 4 года, на Debian Stretch... Решил заняться любимой проблемкой, на, которую казалось бы, легче плюнуть и забыть, но всё-таки, но всё-таки неплохо бы оцифровать кое-какие личные видеокассеты.... Всё то же самое.

Bizdelnick писал(а):
29.02.2016 15:13
audio device (hw:CARD=<id>,DEV=<number>)

kotnaton писал(а):
29.02.2016 14:50
device=hw.1.0

Почему точки?


Код: Выделить всё

$ gst-launch-1.0 --gst-debug=alsa:5 alsasrc device=hw:1,0
0:00:00.043362446  2900      0x21f66f0 DEBUG                   alsa gstalsaplugin.c:78:plugin_init: binding text domain gst-plugins-base-1.0 to locale dir /usr/share/locale
0:00:00.043848195  2900      0x21f66f0 DEBUG                   alsa gstalsasrc.c:267:gst_alsasrc_init:<GstAlsaSrc@0x220bbe0> initializing
Установка конвейера в состояние PAUSED…
Конвейер работает и не требует состояния PREROLL…
0:00:00.046124499  2900      0x206ed40 INFO                    alsa gstalsasrc.c:312:gst_alsasrc_getcaps:<alsasrc0> template caps audio/x-raw, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]
Установка конвейера в состояние PLAYING…
0:00:00.046442509  2900      0x206ed40 DEBUG                   alsa gstalsa.c:49:gst_alsa_detect_rates:<alsasrc0> Min. rate = 48000 (48000)
New clock: GstAudioSrcClock
0:00:00.046574164  2900      0x206ed40 DEBUG                   alsa gstalsa.c:50:gst_alsa_detect_rates:<alsasrc0> Max. rate = 48000 (48000)
0:00:00.046601916  2900      0x206ed40 DEBUG                   alsa gstalsa.c:384:gst_alsa_detect_channels:<alsasrc0> Min. channels = 2 (2)
0:00:00.046672742  2900      0x206ed40 DEBUG                   alsa gstalsa.c:385:gst_alsa_detect_channels:<alsasrc0> Max. channels = 2 (2)
0:00:00.046801643  2900      0x206ed40 INFO                    alsa gstalsasrc.c:322:gst_alsasrc_getcaps:<alsasrc0> returning caps audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)48000, channels=(int)2, channel-mask=(bitmask)0x0000000000000003
0:00:00.046970460  2900      0x206ed40 DEBUG                   alsa gstalsasrc.c:372:set_hwparams:<alsasrc0> buffer time 200000, min 5333, max 5461334
0:00:00.047046521  2900      0x206ed40 DEBUG                   alsa gstalsasrc.c:378:set_hwparams:<alsasrc0> period time 10000, min 5333, max 5334
0:00:00.047115547  2900      0x206ed40 DEBUG                   alsa gstalsasrc.c:383:set_hwparams:<alsasrc0> periods min 1, max 1024
0:00:00.047204508  2900      0x206ed40 DEBUG                   alsa gstalsasrc.c:391:set_hwparams:<alsasrc0> buffer time 170666
0:00:00.047273263  2900      0x206ed40 DEBUG                   alsa gstalsasrc.c:397:set_hwparams:<alsasrc0> period time 5333
0:00:00.047435918  2900      0x206ed40 DEBUG                   alsa gstalsasrc.c:778:gst_alsasrc_prepare:<alsasrc0> Hardware setup:
  stream       : CAPTURE
  access       : RW_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 2
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 16
  buffer_size  : 8192
  period_size  : 256
  period_time  : 5333

0:00:00.047715587  2900      0x206ed40 DEBUG                   alsa gstalsasrc.c:783:gst_alsasrc_prepare:<alsasrc0> Software setup:
  tstamp_mode  : ENABLE
  tstamp_type  : MONOTONIC
  period_step  : 1
  avail_min    : 256
  period_event : 0
  start_threshold  : 0
  stop_threshold   : 8192
  silence_threshold: 0
  silence_size : 0
  boundary     : 4611686018427387904

0:00:00.047974709  2900      0x206ed40 WARN                    alsa pcm_hw.c:1241:snd_pcm_hw_get_chmap: alsalib error: Cannot read Channel Map ctl
: Нет такого файла или каталога
Перераспределение латентности…
ОШИБКА: из элемента /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0: Внутренняя ошибка передачи данных.
Дополнительная отладочная информация:
gstbasesrc.c(2948): gst_base_src_loop (): /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0:
streaming task paused, reason not-linked (-1)
Execution ended after 0:00:00.009840577
Установка конвейера в состояние PAUSED…
Установка конвейера в состояние READY…
Установка конвейера в состояние NULL…
Освобождение конвейера…


Bizdelnick писал(а):
29.02.2016 15:13
kotnaton писал(а):
29.02.2016 14:50
Ничего не находит.

А полный вывод aplay -L смотрели? Вероятно, формат изменился со времён написания статьи на вики, поэтому ничего не грепается.


Не изменилось: Debian Stretch вроде тоже не со старым софтом, но уже находит:

Код: Выделить всё

$ arecord -L | grep ^hw:
hw:CARD=Intel,DEV=0
hw:CARD=CX8801,DEV=0


Я только не понимаю, почему адреса устройств однинаковые (нулевые). Как развести их по разным аресам ?
бывает же такое ???
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: mpv tv://

Сообщение Bizdelnick »

Адреса разные, всё правильно. Адрес состоит из двух компонент — карта и устройство.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
kotnaton
Сообщения: 234

Re: mpv tv://

Сообщение kotnaton »

Подниму тему. Через pulseaudio. Завести mplayer в пульсе удалось через loopback:

Код: Выделить всё

pactl load-module module-loopback source="alsa_input.pci-0000_03_02.1.analog-stereo" source_dont_move=true ;


Но mencoder не даётся: устройство занято:

Код: Выделить всё

mencoder tv:// -tv driver=v4l2:width=640:height=480:normid=13:normid=13:alsa:adevice=hw.1,0:forceaudio \
  -o запись_с_тюнера_за-$(date +%d-%m-%Y-%H-%A-%H:%M:%S).avi -oac mp3lame \
  -ovc xvid -xvidencopts bitrate=1200:quant_type=mpeg -lameopts abr=128 -vf pp=h1/v1/d,harddup


Можно, конечно, остановить пульсу, но можно-ли как-нибудь через пульсу это сделать ? Попробовал такой ~/.asoundrc:

Код: Выделить всё

pcm.!default {
        type pulse
}

ctl.!default {
        type pulse
}

# Create softvol devices for intelHDA and iMic.
# For intelHDA, its "PCM" control controls its default (not used) softvol.
# For "tvtuner", its "PCM" control controls its hardware directly.
pcm.intelHDA {
        type softvol
        slave.pcm "hw:0,0"
        control.name "Master"
        control.card 0
}

pcm.tvtuner {
        type softvol
        slave.pcm "hw:1,0"
        control.name "Master"
        control.card 1
}

# It seems we require these dummies as pulseaudio tries to look up mixer devices.
ctl.intelHDA {
        type hw
        card 0
}

ctl.tvtuner {
        type hw
        card 1
}


Псевдоним tvtuner в поле adevice даёт то же самое: устройство занято :(
бывает же такое ???
Спасибо сказали:
Ответить