使用 VLC 从其他计算机上的 ffmpeg 接收 rtp (opus) 流
Posted
技术标签:
【中文标题】使用 VLC 从其他计算机上的 ffmpeg 接收 rtp (opus) 流【英文标题】:Receive rtp (opus) stream from ffmpeg on other computer with VLC 【发布时间】:2013-04-06 01:32:24 【问题描述】:我目前正在尝试使用 VLC 在单独的计算机上播放作品流。
目前设置如下:
运行 ffmpeg 的 Odroid-U2 捕获音频并作为 rtp opus 流发送到远程计算机.... 使用的命令:ffmpeg -f alsa -ac 1 -i hw:0 -acodec libopus -ab 32k -ac 1 -f rtp rtp://192.168.0.115:2032
远程计算机(在同一本地网络上)位于 192.168.0.115 Odroid 位于 192.168.0.124
如果我在 libopus 的位置使用 libmp3lame,那么流将毫无问题地运行,并且不会提示它需要 sdp....
远程计算机上的 VLC 输出:
SDP required: A description in SDP format is required to receive the RTP stream. Note that rtp:// URIs cannot work with dynamic RTP payload format (97).
如果我使用放入 vlc 的 *.sdp 文件来播放流,它什么也不做(没有错误也没有播放)
使用的 SDP 文件:
SDP:
v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 192.168.0.115
t=0 0
a=tool:libavformat 55.2.100
m=audio 2032 RTP/AVP 97
b=AS:32
a=rtpmap:97 opus/48000
Odroid 上的 ffmpeg 输出:
linaro@linaro-ubuntu-desktop:~$ ffmpeg -f alsa -ac 1 -i hw:0 -acodec libopus -ab 32k -ac 1 -f rtp rtp://192.168.0.115:2032
ffmpeg version git-2013-04-13-87dd62e Copyright (c) 2000-2013 the FFmpeg developers
built on Apr 13 2013 09:47:34 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
configuration: --enable-gpl --enable-libmp3lame --enable-libopencore-amrnb --enable- libopencore-amrwb --enable-libspeex --enable-librtmp --enable-libtheora --enable-libvorbis --enable-libvpx --enable-x11grab --enable-libx264 --enable-nonfree --enable-version3 --enable-libopus
libavutil 52. 26.100 / 52. 26.100
libavcodec 55. 2.100 / 55. 2.100
libavformat 55. 2.100 / 55. 2.100
libavdevice 55. 0.100 / 55. 0.100
libavfilter 3. 53.101 / 3. 53.101
libswscale 2. 2.100 / 2. 2.100
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 3.100 / 52. 3.100
Guessed Channel Layout for Input Stream #0.0 : mono
Input #0, alsa, from 'hw:0':
Duration: N/A, start: 1365868129.196234, bitrate: 768 kb/s
Stream #0:0: Audio: pcm_s16le, 48000 Hz, mono, s16, 768 kb/s
Output #0, rtp, to 'rtp://192.168.0.115:2032':
Metadata:
encoder : Lavf55.2.100
Stream #0:0: Audio: opus, 48000 Hz, mono, s16, 32 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (pcm_s16le -> libopus)
SDP:
v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 192.168.0.115
t=0 0
a=tool:libavformat 55.2.100
m=audio 2032 RTP/AVP 97
b=AS:32
a=rtpmap:97 opus/48000
非常感谢任何帮助....
问候
【问题讨论】:
【参考方案1】:只需删除“SDP:”行,以便您的 sdp 文件仅包含:
v=0 o=- 0 0 IN IP4 127.0.0.1 s=没有名字 c=IN IP4 192.168.0.115 t=0 0 a=工具:libavformat 55.2.100 m=音频 2032 RTP/AVP 97 b=AS:32 a=rtpmap:97 opus/48000
【讨论】:
以上是关于使用 VLC 从其他计算机上的 ffmpeg 接收 rtp (opus) 流的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 VLC 或 FFMPEG 命令行将外部音轨添加到视频文件