ffmpeg -Video прямой эфир - PullRequest
       6

ffmpeg -Video прямой эфир

0 голосов
/ 22 июня 2019

Я использую камеру безопасности AMCREST у себя дома.Моя цель - получить прямую трансляцию с IP-камеры, подключенной к моему NVR, к веб-порталу, используя rtsp: // Моя среда - Raspberry pi.

Я могу успешно запустить ffserver, но преобразование не удается, когда яя пытаюсь передать входное видео и передать его в video.ffm

Я пробовал различные комбинации параметров в команде, но приведенный ниже, кажется, очень близко, где я получил только одну ошибку (av_interleaved_write_frame (): соединениесброс по пиру)


$ffmpeg  -thread_queue_size 800  -i "rtsp://home:Home1234@192.168.1.32:554/cam/realmonitor?channel=4&subtype=0" -f lavfi -i aevalsrc=0  http://127.0.0.1:8090/video.ffm 

******* Содержимое файла конфигурации сервера ffmpeg: etc / livestream.conf


#Default port
HTTPPort 8090
HTTPBindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 100000
CustomLog -

#############################################################

<Feed video.ffm>
  File /tmp/video.ffm                    # this creates a temp video.ffm file where streams are read/write
  FileMaxSize 0.5G
  ACL allow localhost
  ACL allow 127.0.0.1
  ACL allow 192.168.0.0 192.168.255.255
</Feed>

<Stream stream>
# streaming for webm file
# run : ffserver -f /etc/ffserver.conf
# run : ffmpeg -i videoname.mp4 http://localhost:8090/video.ffm
# error : encoder setup failed
  Feed video.ffm
  Format webm

# Audio settings
  AudioCodec vorbis
  AudioBitRate 64                             # Audio bitrate

# Video settings
  VideoCodec libvpx
  VideoSize 720x486                           # Video resolution
  VideoFrameRate 30                           # Video FPS
  AVOptionVideo flags +global_header          # Parameters passed to encoder

  AVOptionVideo cpu-used 0
  AVOptionVideo qmin 10                       # lower the better, min 0
  AVOptionVideo qmax 42                       # higher outputs bad quality, max 63
  AVOptionVideo quality good
  AVOptionAudio flags +global_header
  PreRoll 15
  StartSendOnKey
  VideoBitRate 400                            # Video bitrate
</Stream>



###########################################################################

# Audio only
# run ffmpeg -i audio.mp3 http://localhost:8090/audio.ffm
# run http://localhost:8090/audio in vlc or browser

<Feed audio.ffm>
  File /tmp/audio.ffm
  FileMaxSize 1G
  ACL allow localhost
  ACL allow 127.0.0.1
  ACL allow 192.168.0.0 192.168.255.255
</Feed>

<Stream audio>
  Feed audio.ffm
  Format mp2                                     #audio format
  AudioCodec libmp3lame                          #audio codec
  AudioBitRate 64                                #audio bitrate
  AudioChannels 1                                #audio channel, 1 for mono and 2 for stereo
  AudioSampleRate 44100
  NoVideo                                        #discard video
</Stream>

####################################################################
#view status of ffserver
<Stream stat.html>
  Format status
  ACL allow localhost
  ACL allow 192.168.0.0 192.168.255.255
</Stream>



# Redirect index.html to the appropriate site

<Redirect index.html>
  URL http://www.ffmpeg.org/
</Redirect>


***** Вывод запущенного сервера ffmpegуспешно на отдельной консоли ***

$ ffserver -f /etc/livestream.conf

ffserver версии 3.2.14-1 ~ deb9u1 + rpt1 Copyright (c) 2000-2019 разработчики FFmpeg, созданные с помощью gcc 6.3.0 (Raspbian 6.3.0-18+ rpi1 + deb9u1) конфигурация 20170516: --prefix = / usr --extra-version = '1 ~ deb9u1 + rpt1' --toolchain = усиленный --libdir = / usr / lib / arm-linux-gnueabihf --incdir =/ usr / include / arm-linux-gnueabihf --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libebur128 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-omx-rpi --enable-mmal --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libiec61883 --arch = armhf --enable-chromaprint --enable-frei0r -enable-libopencv --enable-libx264 --enable-shared libavutil 55. 34.101 / 55. 34.101 libavcodec 57. 64.101 / 57. 64.101 libavformat 57. 56.101 / 57. 56.101 libavdevice 57. 1.100 / 57. 1.100 libavfilter 6. 65.100 / 6. 65.100 libavresample 3. 1. 0 / 3. 1. 0 libswscale 4. 2.100 / 4. 2.100 libswresample 2. 3.100 / 23.100 libpostproc 54. 1.100 / 54. 1.100 /etc/livestream.conf:45: Установка значения по умолчанию для частоты дискретизации звука = 22050. Используйте NoDefaults, чтобы отключить его./etc/livestream.conf:45: Установка значения по умолчанию для количества аудиоканалов = 1. Используйте NoDefaults, чтобы отключить его./etc/livestream.conf:45: Установка значения по умолчанию для допуска скорости передачи видео = 100000. Используйте NoDefaults, чтобы отключить его./etc/livestream.conf:45: Установка значения по умолчанию для уравнения управления скоростью видео = tex ^ qComp.Используйте NoDefaults, чтобы отключить его./etc/livestream.conf:45: Установка значения по умолчанию для максимальной скорости видео = 13749264. Используйте NoDefaults, чтобы отключить его./etc/livestream.conf:45: Установка значения по умолчанию для размера видеобуфера = 800000. Используйте NoDefaults, чтобы отключить его.Пт Июн 21 19:43:59 2019 FFserver запущен.


2-я Консоль


$$ffmpeg  -thread_queue_size 800  -i "rtsp://home:Home1234@192.168.1.32:554/cam/realmonitor?channel=4&subtype=0" -f lavfi -i aevalsrc=0  http://127.0.0.1:8090/video.ffm 

************************* Вывод **********


Input #0, rtsp, from 'rtsp://home:Home1234@192.168.1.32:554/cam/realmonitor?channel=4&subtype=0':
  Metadata:
    title           : Media Server
  Duration: N/A, start: 0.290000, bitrate: N/A
    Stream #0:0: Video: h264 (High), yuvj420p(pc, bt709, progressive), 2304x1296 [SAR 1:1 DAR 16:9], 20 fps, 250 tbr, 90k tbn, 40 tbc
Input #1, lavfi, from 'aevalsrc=0':
  Duration: N/A, start: 0.000000, bitrate: 2822 kb/s
    Stream #1:0: Audio: pcm_f64le, 44100 Hz, mono, dbl, 2822 kb/s
[swscaler @ 0x256dd80] deprecated pixel format used, make sure you did set range correctly
[libvpx @ 0x2564190] v1.6.1
Output #0, ffm, to 'http://127.0.0.1:8090/video.ffm':
  Metadata:
    title           : Media Server
    creation_time   : now
    encoder         : Lavf57.56.101
    Stream #0:0: Audio: vorbis (libvorbis), 22050 Hz, mono, fltp, 64 kb/s
    Metadata:
      encoder         : Lavc57.64.101 libvorbis
    Stream #0:1: Video: vp8 (libvpx), yuv420p, 720x486 [SAR 6:5 DAR 16:9], q=10-42, 400 kb/s, 20 fps, 1000k tbn, 30 tbc
    Metadata:
      encoder         : Lavc57.64.101 libvpx
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 800000 vbv_delay: -1
Stream mapping:
  Stream #1:0 -> #0:0 (pcm_f64le (native) -> vorbis (libvorbis))
  Stream #0:0 -> #0:1 (h264 (native) -> vp8 (libvpx))
Press [q] to stop, [?] for help
frame=    2 fps=1.2 q=0.0 size=       8kB time=00:00:00.03 bitrate=1966.0kbits/s dup=1 drop=0 speed=0.0av_interleaved_write_frame(): Connection reset by peer
Error writing trailer of http://127.0.0.1:8090/video.ffm: Connection reset by peer frame=    2 fps=1.1 q=0.0 Lsize=      40kB time=00:00:00.03 bitrate=9830.2kbits/s dup=1 drop=0 speed=0.0189x    
video:29kB audio:0kB subtitle:0kB other streams:0kB global headers:4kB muxing overhead: 36.183796%
Conversion failed

Я ожидаю, что ffmpeg начнет записывать данные в video.ffm, расположенный в каталоге / tmp, чтобы я мог читатьданные из нашего браузера или VLC Media Player, просто перейдя по следующей ссылке http://localhost:8090/stream

****** Обновление через 2 часа ******

Я сделал небольшое изменениек параметру команды, и мой выход также изменился. Как выглядит временный видеофайл, сгенерированный в папке / tmp, не получает расход по video.ffm (я могу ошибаться в своем анализе)

ffmpeg  -thread_queue_size 1200  -i "rtsp://home:Home1234@192.168.1.32:554/cam/realmonitor?channel=4&subtype=0" -f lavfi -i aevalsrc=0 -override_ffserver  http://127.0.0.1:8090/video.ffm

***************** Вывод ****

Past duration 0.660332 too large     376kB time=00:00:01.03 bitrate=2978.9kbits/s dup=3 drop=5 speed=0.171x    
Past duration 0.637352 too large     840kB time=00:00:03.72 bitrate=1847.5kbits/s dup=14 drop=5 speed=0.213x    
Past duration 0.678307 too large
Past duration 0.713280 too large    1180kB time=00:00:05.52 bitrate=1749.0kbits/s dup=21 drop=5 speed=0.218x    
Past duration 0.901085 too large    1372kB time=00:00:06.72 bitrate=1670.4kbits/s dup=26 drop=5 speed=0.22x     
Past duration 0.948051 too large    2456kB time=00:00:12.97 bitrate=1551.1kbits/s dup=51 drop=5 speed=0.226x    
[rtsp @ 0x1fd7670] Thread message queue blocking; consider raising the thread_queue_size option (current value: 1200)
Past duration 0.713280 too large    3336kB time=00:00:17.64 bitrate=1549.0kbits/s dup=70 drop=5 speed=0.228x    
[rtsp @ 0x1fd7670] max delay reached. need to consume packetbitrate=1537.0kbits/s dup=76 drop=5 speed=0.229x    
[rtsp @ 0x1fd7670] RTP: missed 30 packets
[rtsp @ 0x1fd7670] max delay reached. need to consume packetbitrate=1533.3kbits/s dup=78 drop=5 speed=0.228x    
[rtsp @ 0x1fd7670] RTP: missed 134 packets
[rtsp @ 0x1fd7670] max delay reached. need to consume packetbitrate=1539.5kbits/s dup=82 drop=5 speed=0.229x    
[rtsp @ 0x1fd7670] RTP: missed 111 packets
[rtsp @ 0x1fd7670] max delay reached. need to consume packetbitrate=1526.3kbits/s dup=84 drop=5 speed=0.229x    
[rtsp @ 0x1fd7670] RTP: missed 19 packets
[rtsp @ 0x1fd7670] max delay reached. need to consume packetbitrate=1521.7kbits/s dup=92 drop=5 speed=0.23x     
[rtsp @ 0x1fd7670] RTP: missed 626 packets
Past duration 0.651329 too large    4408kB time=00:00:23.64 bitrate=1527.0kbits/s dup=94 drop=5 speed=0.23x    
[rtsp @ 0x1fd7670] max delay reached. need to consume packetbitrate=1516.7kbits/s dup=94 drop=5 speed=0.23x    
[rtsp @ 0x1fd7670] RTP: missed 134 packets
[rtsp @ 0x1fd7670] max delay reached. need to consume packetbitrate=1521.3kbits/s dup=98 drop=5 speed=0.231x    
[rtsp @ 0x1fd7670] RTP: missed 123 packets
Past duration 0.633354 too large    4608kB time=00:00:24.98 bitrate=1511.0kbits/s dup=99 drop=5 speed=0.23x     
[rtsp @ 0x1fd7670] max delay reached. need to consume packetbitrate=1523.4kbits/s dup=99 drop=5 speed=0.231x    

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...