FFmpeg RTP 100ms以下超低音频流推送设置

编程入门 行业动态 更新时间:2024-10-15 18:24:57

FFmpeg RTP 100ms以下<a href=https://www.elefans.com/category/jswz/34/1738122.html style=超低音频流推送设置"/>

FFmpeg RTP 100ms以下超低音频流推送设置

FFmpeg RTP超低音频流推送设置

由于使用obs推流音频始终有各种各样的问题,所以目前打算直接使用FFmpeg推送音频流,期间遇到了各种坑,特此记录。
原文链接:

视频+音频

首先安装好FFmpeg,然后可以用以下命令测试,我们转发服务器用的是janus,也可以用其他vlc等。

ffmpeg  -re -i C:\Users\rong\Videos\xxx.mp4 -an -vcodec copy -vcodec hevc -f rtp rtp://10.33.250.241:8004 -vn -acodec copy -acodec opus -strict -2 -f rtp rtp://10.33.250.241:8002

音频推流

ffmpeg  -re -i C:\Users\rong\Videos\xxx.mp4 -vn -acodec copy -f rtp rtp://10.33.250.241:8002
ffmpeg  -re -i C:\Users\rong\Videos\1.opus -vn -acodec copy -f rtp rtp://10.33.250.241:8002

获取输入设备列表

ffmpeg -devices
ffmpeg -f dshow -list_devices true -i ""

采集麦克风并录制

这里先查看输入设备名称,中文可能会乱码,就用id代替如下,"@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{56E9ADCA-F789-4439-BE53-5C6DCC324AAA}",我的设备id

ffmpeg -f dshow -i audio="@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{56E9ADCA-F789-4439-BE53-5C6DCC324AAA}"  C:\Users\rong\Videos\1.opus

采集麦克风编码并录制

ffmpeg -f dshow  -i audio="@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{56E9ADCA-F789-4439-BE53-5C6DCC324AAA}" -acodec opus -strict experimental  -preset:v ultrafast  C:\Users\rong\Videos\1.opus

采集麦克风并rtp推流

ffmpeg -f dshow -i audio="@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{56E9ADCA-F789-4439-BE53-5C6DCC324AAA}" -vn -acodec copy -f rtp rtp://10.33.250.241:8002

麦克风推流音频opus编码

因为云游戏要求超低延迟所以采用opus编码

ffmpeg -f dshow -i audio="@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{56E9ADCA-F789-4439-BE53-5C6DCC324AAA}" -vn -acodec copy -acodec opus -strict -2 -f rtp rtp://10.33.250.241:8002

扬声器推流音频opus编码

扬声器采集得下载采集软件 screen capture recorder。
官网链接:/

ffmpeg -f dshow -i audio="virtual-audio-capturer" -vn -acodec copy -acodec opus -strict -2 -f rtp rtp://10.33.250.241:8002

扬声器推流音频opus编码并设置时间戳调整降低延迟。

ffmpeg -f dshow  -itsoffset -0.1 -i audio="virtual-audio-capturer" -vn -acodec copy -acodec opus -strict -2 -f  rtp rtp://10.33.250.241:8002

采集屏幕编码并推流

 ffmpeg -rtbufsize 2000M -f dshow  -i video="screen-capture-recorder" -vcodec copy -vcodec nvenc_h264 -zerolatency 1 -f rtp rtp://10.33.250.241:8004   

低延迟设置

以下参数为降低延迟设置,一个个调整花费了我大量时间。

-rtbufsize 1000k

设置缓冲区大小,太小会爆缓存,并且引起丢帧,而且容易引起传输卡死,太大没有明显影响

-audio_buffer_size 1k

设置一秒内音频处理包缓存大小,太小会导致同一个时间段音频数据分为多个数据包处理导致延迟加大,太大会设置失败,如果给流加上此设置貌似不起作用

-itsoffset -0.1

//设置时间戳向左偏移,如果不是储存视频文件,或者视频文件推流貌似不起效果

-max_muxing_queue_size 0

设置最大处理音频流的数量

-bufsize 0

设置单一处理音频流的大小,以上设置结合如下:

ffmpeg -f dshow -rtbufsize 1000M -audio_buffer_size 1k -itsoffset 0.08 -i audio="virtual-audio-capturer" -vn -audio_buffer_size 1 -max_muxing_queue_size 1 -bufsize 1  -acodec copy -acodec libopus -ar 48000 -strict -2 -b:a 64K -f  rtp rtp://10.33.250.241:8002

-itsscale 1

设置输入数据速度,坑点,此参数不当会引起视频流的延迟,最后的设置如下:

ffmpeg -f dshow -rtbufsize 1000M -audio_buffer_size 1k -itsoffset 0.08 -itsscale 1 -i audio="virtual-audio-capturer" -vn -ss 0.08 -audio_buffer_size 1 -max_muxing_queue_size 1 -bufsize 1  -acodec copy -acodec libopus -ar 48000 -strict -2 -b:a 64K -f  rtp rtp://10.33.250.241:8002

先推视频再推音频超低延迟的另一种设置,测试通过

ffmpeg  -f dshow -rtbufsize 4.5k -itsscale 1 -itsoffset -0.1 -i audio="virtual-audio-capturer" -vn -acodec copy -ss 0.08 -acodec libopus -strict -2 -ar 48000 -b:a 96K -compression_level 0 -frame_duration 10 -application lowdelay -copyts -f  rtp rtp://10.33.250.241:8002

更多推荐

FFmpeg RTP 100ms以下超低音频流推送设置

本文发布于:2024-02-23 10:47:14,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1695341.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:超低   音频   RTP   FFmpeg   ms

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!