ChinaFFmpeg

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9916|回复: 8

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

[复制链接]
发表于 2017-12-8 16:12:28 | 显示全部楼层 |阅读模式
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 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
[flv @ 0x1b8e4d0] 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,否则不能成功。
                                但如此,拉流时却识别不了单声道。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|Archiver|ChinaFFmpeg

GMT+8, 2024-4-26 21:26 , Processed in 0.050269 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表