卧室台灯 发表于 2017-12-8 16:12:28

树莓派自建nginx服务器,自推自拉,纯音频延迟750mm,求优化

Rt,在树莓派3B上自建了一个nginx服务器,外挂声卡收音,自推自拉,纯音频,延迟750mm左右,似乎有些长了,求指点如何优化!

使用命令如下:
推流↓
ffmpeg -f alsa -channel_layout stereo -i hw:0,0 -acodec aac -ar 8000 -ac 2 -b:a 32k -vn -sn -f flv rtmp://192.168.73.168:1935/live/abc
拉流↓
ffplay -vn -sync audio -probesize 32 -infbuf “rtmp://192.168.73.168:1935/live/abc live=1"

卧室台灯 发表于 2017-12-11 12:06:51

上班啦!

孙悟空 发表于 2017-12-11 15:32:43

拉流 加上-fflags nobuffer试试看

卧室台灯 发表于 2017-12-12 13:31:08

孙悟空 发表于 2017-12-11 15:32
拉流 加上-fflags nobuffer试试看

大师兄,加上-fflags nobuffer还是有这么多的延迟。
我想问的是:我在局域网推拉流,网络延迟几乎不存在,这个几百毫秒的延迟是不是rtmp协议在握手和建立连接的时候产生的?又或者是在声卡收音和ffmpeg转码的时候产生的?
这个延时值在最理想状况下,一般可以减小到多少呢?

孙悟空 发表于 2017-12-12 16:22:54

卧室台灯 发表于 2017-12-12 13:31
大师兄,加上-fflags nobuffer还是有这么多的延迟。
我想问的是:我在局域网推拉流,网络延迟几乎不存在 ...

判断是不是采集产生的,可以直接用ffmpeg从设备播放,用ffplay可以测试
如果不是,就可以用ffmpeg转码通过udp推给本地的ffplay播放,这部分延迟应该也不会大
十有八九是网络

卧室台灯 发表于 2017-12-12 17:31:12

大师兄:
   1、用ffplay -f alsa -i hw:0,0 直接播放没有延迟。
   2、推流:ffmpeg -f alsa -channel_layout stereo -i hw:0,0 -codec copy -vn -f ADTS udp://192.168.73.168:1234
         拉流:ffplay udp://192.168.73.168:1234报错“udp://192.168.73.168:1234: Invalid data found when processing input”
   3、推流时转编码aac
          ffmpeg -f alsa -channel_layout stereo -i hw:0,0 -codec aac -b:a 32k -vn -f ADTS udp://192.168.73.168:1234
          ffplay可以拉流播放,但延迟超过1.5秒
    4、推流时再增加-ac 1
          ffmpeg -f alsa -channel_layout stereo -i hw:0,0 -codec aac -ac 1 -b:a 32k -vn -f ADTS udp://192.168.73.168:1234
          竟然没有延迟了!?
    5、同样的思路用rtmp推:
         ffmpeg -f alsa -i hw:0,0 -acodec aac -ar 8000 -ac 1 -b:a 32k -f flv rtmp://192.168.73.168:1935/live/abc
      ffplay拉流报错:“SDL_OpenAudio (1 channels, 8000 Hz): ALSA: Couldn't set audio channels
No more combinations to try, audio open failed
Failed to open file 'rtmp://192.168.73.168:1935/live/aba live=1' or configure filtergraph”
       不知道什么原因,rtmp不能识别单声道,所以无法测试延迟是否真的跟单双声道有关。。。

卧室台灯 发表于 2017-12-12 17:46:03

大师兄:
   1、用ffplay -f alsa -i hw:0,0 直接播放没有延迟。
   2、推流:ffmpeg -f alsa -channel_layout stereo -i hw:0,0 -codec copy -vn -f ADTS udp://192.168.73.168:1234
         拉流:ffplay udp://192.168.73.168:1234报错“udp://192.168.73.168:1234: Invalid data found when processing input”
   3、推流时转编码aac
          ffmpeg -f alsa -channel_layout stereo -i hw:0,0 -codec aac -b:a 32k -vn -f ADTS udp://192.168.73.168:1234
          ffplay可以拉流播放,但延迟超过1.5秒
    4、推流时再增加-ac 1
          ffmpeg -f alsa -channel_layout stereo -i hw:0,0 -codec aac -ac 1 -b:a 32k -vn -f ADTS udp://192.168.73.168:1234
          竟然没有延迟了!?
    5、同样的思路用rtmp推:
         ffmpeg -f alsa -i hw:0,0 -acodec aac -ar 8000 -ac 1 -b:a 32k -f flv rtmp://192.168.73.168:1935/live/abc
      ffplay拉流报错:“SDL_OpenAudio (1 channels, 8000 Hz): ALSA: Couldn't set audio channels
No more combinations to try, audio open failed
Failed to open file 'rtmp://192.168.73.168:1935/live/aba live=1' or configure filtergraph”
       不知道什么原因,rtmp不能识别单声道,所以无法测试延迟是否真的跟单双声道有关。。。

孙悟空 发表于 2017-12-12 19:12:57

         ffmpeg -f alsa -i hw:0,0 -acodec speex -b:a 32k -f flv rtmp://192.168.73.168:1935/live/abc

卧室台灯 发表于 2017-12-14 17:26:29

大师兄:
      1、 ffmpeg -f alsa -i hw:0,0 -acodec speex -b:a 16k -f flv rtmp://192.168.73.114:1935/live/abc
          报错:flv @ 0x1b8e4d0] FLV only supports wideband (16kHz) Speex audio
Audio codec speex not compatible with flv
Could not write header for output file #0 (incorrect codec parameters ?): Function not implemented
Error initializing output stream 0:0 --
      2、 ffmpeg -f alsa -channel_layout stereo -i hw:0,0 -acodec speex -ar 16000 -ac 1 -b:a 16k -vn -f flv rtmp://192.168.73.114:1935/live/abc
         可以推,但是ffplay拉流不成功
         ffplay "rtmp://192.168.73.114:1935/live/abc live=1"
         报错:SDL_OpenAudio (1 channels, 16000 Hz): ALSA: Couldn't set audio channels
No more combinations to try, audio open failed
Failed to open file 'rtmp://192.168.73.114:1935/live/abc live=1' or configure filtergraph
         3、现在问题是:推流时必须加-ar 16000 -ac 1,否则不能成功。
                              但如此,拉流时却识别不了单声道。
页: [1]
查看完整版本: 树莓派自建nginx服务器,自推自拉,纯音频延迟750mm,求优化