Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: запись видео со звуком с веб камеры используя avconv и alsa  (Прочитано 4512 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн uniusz

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
доброго времени суток всем! всю неделю ломаю голову над, как казалось с начала, простой командой.
задача такова: писать видео и звук в один фаил с USB камеры
система ubuntu 12.04 server, creative VF0640 Live! Cam Socialize
вариантов миллион, объявляю короткую команду
sudo avconv -f video4linux2 -i /dev/video0 -f alsa -i plughw:0 test.mpg <--- в принципе должна работать с любой  системой и любым железом;
ешё использую аргументы для видео: -s, -t,...; аудио -ar, -ab; -vcodec, -acodec разные комбинации, но как-то ничего дельного не получается

получаю на выходе:
kamera@kamerine:~$ sudo avconv -f video4linux2 -i /dev/video0 -f alsa -i plughw:0 test.mpg
[sudo] password for kamera:
avconv version 0.8.5-4:0.8.5-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav developers
  built on Jan 24 2013 18:03:14 with gcc 4.6.3
[video4linux2 @ 0x8fa5b00] Estimating duration from bitrate, this may be inaccurate
Input #0, video4linux2, from '/dev/video0':
  Duration: N/A, start: 231370.901795, bitrate: 147456 kb/s
    Stream #0.0: Video: rawvideo, yuyv422, 640x480, 147456 kb/s, 30 tbr, 1000k tbn, 30 tbc
[alsa @ 0x8fa6240] capture with some ALSA plugins, especially dsnoop, may hang.
[alsa @ 0x8fa6240] Estimating duration from bitrate, this may be inaccurate
Input #1, alsa, from 'plughw:0':
  Duration: N/A, start: 231372.999953, bitrate: N/A
    Stream #1.0: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s
Incompatible pixel format 'yuyv422' for codec 'mpeg1video', auto-selecting format 'yuv420p'
[buffer @ 0x8fb0d80] w:640 h:480 pixfmt:yuyv422
[avsink @ 0x8fb1320] auto-inserting filter 'auto-inserted scaler 0' between the filter 'src' and the filter 'out'
[scale @ 0x8fa8c60] w:640 h:480 fmt:yuyv422 -> w:640 h:480 fmt:yuv420p flags:0x4
[mpeg @ 0x8fa8360] VBV buffer size not set, muxing may fail
Output #0, mpeg, to 'test.mpg':
  Metadata:
    encoder         : Lavf53.21.1
    Stream #0.0: Video: mpeg1video, yuv420p, 640x480, q=2-31, 200 kb/s, 90k tbn, 30 tbc
    Stream #0.1: Audio: mp2, 48000 Hz, 2 channels, s16, 128 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo -> mpeg1video)
  Stream #1:0 -> #0:1 (pcm_s16le -> mp2)
Press ctrl-c to stop encoding
ALSA buffer xrun. 0 q=2.0 size=       0kB time=2.57 bitrate=   0.0kbits/s dup=76 drop=0 <----- тут, как я понемаю, показывает аудио input bits
^Cframe=  543 fps= 38 q=6.6 Lsize=     986kB time=13.73 bitrate= 588.4kbits/s dup=448 drop=0<----- тут, опять-же, как я понемаю, видео input bits
video:761kB audio:214kB global headers:0kB muxing overhead 1.107445% <-- здесь тоже вроде показывает, что аудио сколько-то битoв записало
Received signal 2: terminating.

так вот проблема: видео биты меняются, прыгают, и видео пишет без проблем, всё понятно, но аудио биты на нуле, и проигрывая фаил звук страшно отстаёт. секунды на 4-5. помогите разобраться, бо в интернете у многих такая проблема. так может раз и навсегда разберёмся коллективно :)

p.s. с микрофоном всё в порядке, и система его может использовать, бо
sudo arecord -f S16_LE -D plughw:0 test.wav команда пишет звук идеально, но в отдельный фаил
p.p.s plughw: работает с 0 и 1, но 2 и выше выкидывает эрор:
ALSA lib pcm_hw.c:1401:(_snd_pcm_hw_open) Invalid value for card
arecord: main:682: audio open error: No such file or directory
я представляю, что если микрофон один, то он и должен работать с одним значением, а тут работает с двумя, как буд-то микрофонов 2  :idiot2:

ешё было-бы неплохо приписать аргумент, чтобы стримило видео в веб, чтобы в real-time можно было посмотреть что происходит или в браузере, или vlc, не важно, и звук в стриме не важен  :'(

Оффлайн v!tax

  • Старожил
  • *
  • Сообщений: 4154
  • Gentoo x64 bspwm
    • Просмотр профиля
господь ведет твою руку, сын мой....

Оффлайн uniusz

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
хотелось-бы с avconv, а то с mplayer на первом-же тесте mplayer tv:// -tv driver=v4l2:width=352:height=288:device=/dev/video0 кидает ошибки, ругается
опять надо искать проблемы с нуля. и главное всё это на сервере, без GUI, только командная строка


Пользователь решил продолжить мысль 15 Февраля 2013, 14:29:18:
кстати тестирую на 2 камерах:
Creative HD c310                                         - ютуб - https://www.youtube.com/watch?v=hGII4XqorFc
и
creative VF0640 Live! Cam Socialize - ютуб - https://www.youtube.com/watch?v=yieJysSGJaA

успользую одинаковую команду 
sudo avconv -f video4linux2 -i /dev/video0 -f alsa -i plughw:0 test.mpg  - перезагружая комп, т.е. в обоих случаях железо /dev/video0
с Live! почему-то звук перестал отстовать после того, как пару раз подключил HD, но HD чювствуется отстование звука

может просто нада добавить аргумент для звука типа offset на пару секунд? ....хммммм...ИДЕЯ :)

РЕБЯТА! страшно нужен аргумент для avconv для видео стрима, на HTTP или UDP протоколе в назначеном порту!

а вообше супер круто было-бы использовать motion. видео пишет отлично, но не пишет по умолчанию звук в видео фаил, я использую аргуманет
on_event_start arecord -f S16_LE -r 22050 -d 3600 -D plughw:%t /var/www/motion/data/zvuk_%Y.%m.%d---%H:%M:%S_%t.wav

может этот аргумент кто-нибуть поможет отредактировать так, чтобы звук ложился на .avi фаил
....
target_dir /var/www/motion/data
....
movie_filename %Y.%m.%d---%H:%M:%S
....
ffmpeg_video_codec mpeg4
« Последнее редактирование: 15 Февраля 2013, 14:29:18 от uniusz »

 

Страница сгенерирована за 0.042 секунд. Запросов: 25.