Потоковая передача FFServer H.264 от Logitech C920

У меня возникли проблемы с реализацией веб-трансляции из моей веб-камеры Logitech C920 с кодировкой H.264 с использованием ffmpeg / ffserver .

Вот файл конфигурации, который я использую для ffserver :

 # Port on which the server is listening. You must select a different # port from your standard HTTP web server if it is running on the same # computer. Port 8090 # Address on which the server is bound. Only useful if you have # several network interfaces. BindAddress 0.0.0.0 # Number of simultaneous HTTP connections that can be handled. It has # to be defined *before* the MaxClients parameter, since it defines the # MaxClients maximum limit. MaxHTTPConnections 2000 # Number of simultaneous requests that can be handled. Since FFServer # is very fast, it is more likely that you will want to leave this high # and use MaxBandwidth, below. MaxClients 1000 # This the maximum amount of kbit/sec that you are prepared to # consume when streaming to clients. MaxBandwidth 1000 # Access log file (uses standard Apache log file format) # '-' is the standard output. CustomLog - ################################################################## # Definition of the live feeds. Each live feed contains one video # and/or audio sequence coming from an ffmpeg encoder or another # ffserver. This sequence may be encoded simultaneously with several # codecs at several resolutions. <Feed feed.ffm> # You must use 'ffmpeg' to send a live feed to ffserver. In this # example, you can type: # File /tmp/feed.ffm FileMaxSize 100M # You could specify # ReadOnlyFile /saved/specialvideo.ffm # This marks the file as readonly and it will not be deleted or updated. # Only allow connections from localhost to the feed. ACL allow 127.0.0.1 </Feed> ################################################################## # Now you can define each stream which will be generated from the # original audio and video stream. Each format has a filename (here # 'test1.mpg'). FFServer will send this stream when answering a # request containing this filename. <stream stream.mp4> Feed feed.ffm Format mp4 # Audio settings NoAudio # Video Settings #VideoSize 1280x720 # Video resolution #VideoFrameRate 30 # Video FPS #AVOptionVideo flags +global_header # Parameters passed to encoder #AVOptionVideo cpu-used 0 #AVOptionVideo qmin 10 #AVOptionVideo qmax 42 #AVOptionVideo quality good PreRoll 0 StartSendOnKey #VideoBitRate 400 # Video bitrate </stream> # Server status <Stream stat.html> Format status # Only allow local people to get the status ACL allow localhost ACL allow 192.168.0.0 192.168.255.255 </Stream> 

И вот команда, которую я выдаю через командную строку и соответствующий вывод:

 $ ffmpeg -s 1280x720 -f video4linux2 -r 30 -vcodec h264 -re -i /dev/video0 \ -copyinkf -codec copy h**p://localhost:8090/feed.ffm ffmpeg version N-67036-g04a4fb8 Copyright (c) 2000-2014 the FFmpeg developers built on Oct 20 2014 17:39:50 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) configuration: --enable-gpl --enable-libx264 libavutil 54. 10.100 / 54. 10.100 libavcodec 56. 8.102 / 56. 8.102 libavformat 56. 9.101 / 56. 9.101 libavdevice 56. 1.100 / 56. 1.100 libavfilter 5. 2.100 / 5. 2.100 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 3.100 / 53. 3.100 Input #0, video4linux2,v4l2, from '/dev/video0': Duration: N/A, start: 12614.859199, bitrate: N/A Stream #0:0: Video: h264 (Constrained Baseline), yuvj420p(pc), 1280x720 [SAR 1:1 DAR 16:9], -5 kb/s, 30 fps, 30 tbr, 1000k tbn, 60 tbc Output #0, ffm, to 'h**p://localhost:8090/feed.ffm': Metadata: creation_time : now encoder : Lavf56.9.101 Stream #0:0: Video: h264, yuvj420p, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, -5 kb/s, 30 fps, 1000k tbn, 30 tbc Stream mapping: Stream #0:0 -> #0:0 (copy) Press [q] to stop, [?] for help [ffm @ 0x28c7ea0] Non-monotonous DTS in output stream 0:0; previous: 0, current: -166263; changing to 1. This may result in incorrect timestamps in the output file. [ffm @ 0x28c7ea0] Non-monotonous DTS in output stream 0:0; previous: 1, current: -134365; changing to 2. This may result in incorrect timestamps in the output file. [ffm @ 0x28c7ea0] Non-monotonous DTS in output stream 0:0; previous: 2, current: -102381; changing to 3. This may result in incorrect timestamps in the output file. [ffm @ 0x28c7ea0] Non-monotonous DTS in output stream 0:0; previous: 3, current: -66434; changing to 4. This may result in incorrect timestamps in the output file. [ffm @ 0x28c7ea0] Non-monotonous DTS in output stream 0:0; previous: 4, current: -34548; changing to 5. This may result in incorrect timestamps in the output file. [ffm @ 0x28c7ea0] Non-monotonous DTS in output stream 0:0; previous: 5, current: -2645; changing to 6. This may result in incorrect timestamps in the output file. [ffm @ 0x28c7ea0] Non-monotonous DTS in output stream 0:0; previous: 232857, current: 138514; changing to 232858. This may result in incorrect timestamps in the output file. [ffm @ 0x28c7ea0] Non-monotonous DTS in output stream 0:0; previous: 232858, current: 167942; changing to 232859. This may result in incorrect timestamps in the output file. [ffm @ 0x28c7ea0] Non-monotonous DTS in output stream 0:0; previous: 232859, current: 197415; changing to 232860. This may result in incorrect timestamps in the output file. [ffm @ 0x28c7ea0] Non-monotonous DTS in output stream 0:0; previous: 232860, current: 227037; changing to 232861. This may result in incorrect timestamps in the output file. [ffm @ 0x28c7ea0] Non-monotonous DTS in output stream 0:0; previous: 997959, current: 938599; changing to 997960. This may result in incorrect timestamps in the output file. [ffm @ 0x28c7ea0] Non-monotonous DTS in output stream 0:0; previous: 997960, current: 995052; changing to 997961. This may result in incorrect timestamps in the output file. [ffm @ 0x28c7ea0] Non-monotonous DTS in output stream 0:0; previous: 1240745, current: 1232841; changing to 1240746. This may result in incorrect timestamps in the output file. [ffm @ 0x28c7ea0] Non-monotonous DTS in output stream 0:0; previous: 1293561, current: 1282157; changing to 1293562. This may result in incorrect timestamps in the output file. frame= 69 fps= 34 q=-1.0 Lsize= 912kB time=00:00:02.01 bitrate=3702.1kbits/s 

Когда я пытаюсь воспроизвести поток с помощью VLC, например, vlc h**p://localhost:8090/stream.mp4 – появляется следующая ошибка:

[00007f5234003948] ошибка основного потока: не может предварительно заполнять буфер

И я не могу смотреть поток на стороне веб-браузера.

Может ли кто-нибудь дать мне намек на это?

2 Solutions collect form web for “Потоковая передача FFServer H.264 от Logitech C920”

Я играл с ffmpeg и logitech C920 на моем маршрутизаторе OpenWRT (TP-Link WDR3600, MIPS cpu на 560 МГц) с помощью вашей конфигурации. На 640×480 и выше моя система не работала надежно. Я попытался запустить ffmpeg в одиночку без транскодирования (мой маршрутизатор не способен транскодировать вообще, слишком слабый процессор) и просматривает поток с помощью VLC:

 ffmpeg -f v4l2 -input_format h264 -video_size 320x400 -i / dev / video0 -copyinkf -codec copy -f mpegts udp: //192.168.1.100: 20000

На 640×480 видео становилось искаженным, разрешение 800×600 или лучше вообще не работало, при этом ffmpeg выдавал тонны этих сообщений «Non-monotonous DTS …». 320×400 в порядке. Видеовыход MJPEG работал намного лучше, и я смог запустить C920 с разрешением 1920×1080 и 15 кадров / с, скорость передачи данных выше 50 Мбит / с, но MJPEG также не была на 100% безошибочной. Похоже, камера имеет некоторые проблемы на H264, по крайней мере, с ffmpeg. На H264 камера обеспечивала постоянный битрейт около 3,2 Мбит / с независимо от того, какое разрешение / частота кадров я пытался установить.

Но вернемся к делу. Чтобы получить работу h264 с файлом ffserver, я изменил раздел «Фид», изменив «Формат» и комментируя StartSendOnKey в разделе «поток»:

 Формат mpegts
 ...
 #StartSendOnKey

добавив строку ffmpeg «Launch» в разделе «Feed»:

 Запустить ffmpeg -f v4l2 -input_format h264 -video_size 320x400 -i / dev / video0 -copyinkf -codec copy

и изменение MaxBandwidth до 50000

Я использовал vlc как клиентское программное обеспечение.

Я использую эту конфигурацию и хорошо работает файл server.conf:

 HTTPPort 1235 RTSPPort 1234 HTTPBindAddress 0.0.0.0 MaxHTTPConnections 2000 MaxClients 1000 MaxBandwidth 100000 #CustomLog – ######################################### ## usb cam: logitec c920 ######################################### <Feed camfeed.ffm> File /tmp/camfeed.ffm FileMaxSize 500K #allow only localhost to publish feed ACL allow 192.168.1.149 </Feed> <Stream usbcam.mov> Feed camfeed.ffm Format rtp #cam defaults: VideoSize 800x600 VideoFrameRate 24 VideoBitRate 400 VideoCodec libx264 NoLoop NoAudio Preroll 0 StartSendOnKey </Stream> ###################################### # ffmpeg cmd: ###################################### # ffmpeg -y -s 800x600 -f video4linux2 -i /dev/video0 -c:v libx264 -tune zerolatency -an http://192.168.1.149:1235/camfeed.ffm 
  • Проблема с запуском vlc в Openindiana
  • Используя ffmpeg для записи подкаста, каждый источник звука в канале
  • Как развить поток ffmpeg, чтобы читать его с помощью ffplay?
  • Как я могу отредактировать мой скрипт bash для учета пробелов?
  • Как скачать самое высокое качество .mp3 с youtube-dl на Sierra?
  • при попытке выполнить второй раз при использовании ffmpeg
  • Как узнать, используется ли мой микрофон или нет?
  • Как добавить aac и libx264 в установку FFmpeg?
  • как конвертировать MOD-файл MOD без потери качества в современный популярный формат для телевизора
  • Создавать эскиз с видео в произвольный временной интервал
  • avconv прекращает потоковое вещание через некоторое время
  • Interesting Posts

    Исправить вход аудио Skype в Mint 17 Cinnamon

    Как я могу программировать vncserver для автоматической настройки моих оболочек для меня?

    Невозможно сдвоить загрузку Linux Mint и Windows 7

    Regex для поиска файловых систем NFS, которые не монтируются с помощью nosuid, кроме тех, которые имеют особые потребности

    Определить длину и масштаб изображения

    Does -q определенно отключить ведение журнала вывода wget?

    Видеовстреча на Fedora25 и Black Screen во время экрана

    Отправка настраиваемого контента на основе определенного поиска в файле журнала

    Отдельное состояние выполнения команд с каналами

    Непоследовательное поведение перенаправления ввода

    Если #head versionnumber.txt <#head lastversionnumber.txt, то: сделайте это

    Создание временной шкалы с помощью guvcview

    Пазл расширения

    Как преобразовать файл SELinux mypol.te в команды semanage для скрипта

    Сетевой инструмент для мониторинга фрагментации IP-пакетов

    Linux и Unix - лучшая ОС в мире.