av_interleaved_write_frame():对等连接重置-使用连接到本地nginx的ffmpeg

时间:2019-04-06 18:44:56

标签: nginx ffmpeg rtmp

我有一个安装了nginx-rtmp-module的本地nginx Web服务器。

我有2个RTMP源,分别从rtmp://127.0.0.1/live-videortmp://127.0.0.1/live-audio馈入本地网络。然后,这两个将被合并并再次馈入rtmp://127.0.0.1/live中。后者将是我将要使用的那个。

我这样做的原因是我想通过sox进行降噪。

设置如下

  1. rtmp://127.0.0.1/live-video-它使用ffmpeg仅捕获屏幕(视频),然后使用命令将其输出到此类URL

    ffmpeg -analyzeduration 0 -video_size 1280x1080 -framerate 25 -f x11grab -i :0.0 -vcodec libx264 -flags +global_header -preset ultrafast -minrate 7200 -maxrate 8k -vsync 1 -f flv -metadata streamName=ZombieHeroLiveStream rtmp://127.0.0.1/live-video
    
  2. rtmp://127.0.0.1/live-audio-它使用sox进行降噪,然后使用ffmpeg通过命令将其输入这样的URL

     ffmpeg -f alsa -ac 1 -i default -preset ultrafast -f flac - | sox - -p noisered /tmp/noise.prof 0.21 | ffmpeg -analyzeduration 0 -thread_queue_size 2 -i - -f flv -preset ultrafast rtmp://127.0.0.1/live-audio
    
  3. rtmp://127.0.0.1/live-它使用ffmpeg组合上述两个源,然后输出到这样的URL中,这是我测试过的通过VLC(可以正常使用)命令查看的URL

     ffmpeg -analyzeduration 0 -thread_queue_size 512 -rtmp_live live -flags +global_header -i "rtmp://127.0.0.1/live-video" -analyzeduration 0 -thread_queue_size 512 -rtmp_live live -flags +global_header -i "rtmp://127.0.0.1/live-audio" -c:v copy -c:a copy -map 0:v -map 1:a -async 1 -vsync 1 -video_size 1280x1080 -fflags +genpts -framerate 30 -preset ultrafast -minrate 7200 -maxrate 8k -flags +global_header -segment_list_flags +live -rtmp_live live -f flv -metadata streamName=ZombieHeroLiveStream "rtmp://127.0.0.1/live"
    

设置工作正常,我测试并通过VLC定位到URL为3进行了查看。问题在于,在上述所有三分之三运行之后,有时会退出1.从而使整个编码停止。显示的错误是

av_interleaved_write_frame(): Connection reset by peer29.88 bitrate=2021.8kbits/s dup=1791 drop=0 speed=0.998x    
    Last message repeated 2 times
...

Error writing trailer of rtmp://127.0.0.1/live-video: Connection reset by peer

无论我如何更改和修改命令行的标志/选项,它都会像上面的错误一样结束。请注意,我已经对标志做了很多修改,因此可能不需要某些标志。

来自1的完整错误日志是here

nginx服务器的配置为here。这是非常基本的,但是以后我将进一步使用它中继到多个目标RTMP服务器。

我使用的是Ubuntu 18.04、4.18.0-17-generic,具有8 GB的RAM,具有ffmpeg ffmpeg version 3.4.4-0ubuntu0.18.04.1 Copyright (c) 2000-2018 the FFmpeg developers built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)和Nginx的4个CPU内核

nginx version: nginx/1.14.2
built by gcc 7.3.0 (Ubuntu 7.3.0-27ubuntu1~18.04) 
built with OpenSSL 1.1.0g  2 Nov 2017 (running with OpenSSL 1.1.1b  26 Feb 2019)
TLS SNI support enabled
configure arguments: --with-http_ssl_module --add-module=../nginx-rtmp-module-1.2.1

那么,问题又来了,我该如何解决这个问题? 任何建议将不胜感激。

重要修改:我刚刚发现我为3输入了错误的重复命令,现在已更正!抱歉。

更新:我可以使用ffmpeg录制音频,然后使用sox进行噪声过滤,然后使用ffmpeg传输到目标rtmp。但是降噪还不令我满意。有关更新的命令,请参见上面的2.。根据{{​​3}},sox在理解几个字节方面存在问题,因此我在管道中使用flac格式。仍然有我的问题,因为此更新是为了改进2中的命令。

0 个答案:

没有答案