【发布时间】:2026-01-11 15:25:01
【问题描述】:
我用 ffmpeg 制作了一个 rtp 链接,并尝试收听和播放此流。 VLC 和 ffmpeg 可以播放 rtp 流,两者都运行良好,但 jmf 不行。
虽然没有任何错误,但是jmf没有播放rtp流,也没有声音。
我的 rtp 流(http:.. 是一个广播链接,而 rtp:... 我的流)
ffmpeg -i http://airspectrum.cdnstream1.com:8114/1648_128 -acodec copy -f rtp "rtp://127.0.0.1:10000/audio/1"
public void play() {
MediaLocator mediaLocator = new MediaLocator("rtp://127.0.0.1:10000/audio/1");
try {
if (mediaLocator == null) {
System.err.println("null locator");
}
player = Manager.createRealizedPlayer(mediaLocator);
player.start();
} catch (CannotRealizeException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (NoPlayerException e) {
e.printStackTrace();
}
}
- 操作系统 ubuntu 16.08
- java jdk 1.8
- javax.media.jmf 2.1.1e(maven repo 版本)
【问题讨论】:
-
是这些格式之一吗? -> oracle.com/technetwork/java/javase/…
-
我将 ffmpeg 编解码器更改为 jmf 支持的 mp2 (Audio: MPEG Layer I, II),但仍然没有声音。这是用于服务器端(产生 rtp 流)。和客户端我发现>> Format input1 = new AudioFormat(AudioFormat.MPEG_RTP);格式输出 = new AudioFormat(ContentDescriptor.RAW_RTP); PlugInManager.addPlugIn("com.sun.media.codec.audio.mp3.JavaDecoder", new Format[] {input1}, new Format[] {output}, PlugInManager.CODEC );但没有变化。
-
com.sun.media.codec.audio.mp3.JavaDe编码器用于输出? Idk,但这是对的吗?
-
是的,它是正确的,没有变化。我发现了这个>>在 JMF 的全 Java 版本中,不支持视频捕获,只有在 J2SE 1.3(捆绑了 Java Sound API)上运行时才支持音频捕获。 Direct Audio 渲染器和捕获器仅在 Windows 上受支持。 (oracle.com/technetwork/java/javase/issues-139827.html) 也许我在 Windows 上尝试使用 J2SE 1.3 而不是 ubuntu
标签: java ffmpeg stream rtp jmf