audio - 需要帮助来运行 libjitsi 示例

标签 audio audio-streaming jitsi

我正在尝试使用 libjitsi 流式传输一些音频,但我无法让它工作。我在 Windows 10 上。这是我所做的:

  • 克隆https://github.com/jitsi/libjitsi.git
  • 作为 Maven 项目导入 Eclipse。一切都编译得很好。
  • 我最终意识到(通过查看 Ant 构建文件)我需要一些本地库,所以我在 /lib/native 中添加了这些库。到java.library.path .
  • 我正在运行AVTransmit2--local-port-base=5100 --remote-host=localhost --remote-port-base=5200AVReceive2--local-port-base=5200 --remote-host=localhost --remote-port-base=5100 .

  • 当我运行任一文件时,我都会收到类似的错误。首先我看到
    WARNING: Failed to initialize org.jitsi.impl.neomedia.device.DirectShowSystem
    java.lang.reflect.UndeclaredThrowableException
        at org.jitsi.impl.neomedia.device.DeviceSystem.invokeDeviceSystemInitialize(DeviceSystem.java:441)
        ...
        at org.jitsi.service.libjitsi.LibJitsi.getMediaService(LibJitsi.java:124)
        at org.jitsi.examples.AVTransmit2.start(AVTransmit2.java:104)
        at org.jitsi.examples.AVTransmit2.main(AVTransmit2.java:359)
    Caused by: java.lang.UnsatisfiedLinkError: org.jitsi.impl.neomedia.codec.FFmpeg.av_get_pix_fmt(Ljava/lang/String;)I
        at org.jitsi.impl.neomedia.codec.FFmpeg.av_get_pix_fmt(Native Method)
        ...
    

    然后在我看到的日志中
    WARNING: Failed to initialize org.jitsi.impl.neomedia.device.DirectShowSystem
    java.lang.reflect.UndeclaredThrowableException
        at org.jitsi.impl.neomedia.device.DeviceSystem.invokeDeviceSystemInitialize(DeviceSystem.java:441)
        at org.jitsi.impl.neomedia.device.DeviceSystem.invokeDeviceSystemInitialize(DeviceSystem.java:348)
        at org.jitsi.impl.neomedia.device.DeviceSystem.<init>(DeviceSystem.java:493)
        at org.jitsi.impl.neomedia.device.DeviceSystem.<init>(DeviceSystem.java:475)
        at org.jitsi.impl.neomedia.device.DirectShowSystem.<init>(DirectShowSystem.java:61)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at java.lang.Class.newInstance(Class.java:442)
        at org.jitsi.impl.neomedia.device.DeviceSystem.initializeDeviceSystems(DeviceSystem.java:288)
        at org.jitsi.impl.neomedia.device.DeviceSystem.initializeDeviceSystems(DeviceSystem.java:230)
        at org.jitsi.impl.neomedia.MediaServiceImpl.getDevices(MediaServiceImpl.java:577)
        at org.jitsi.impl.neomedia.MediaServiceImpl.getDefaultDevice(MediaServiceImpl.java:500)
        at org.jitsi.examples.AVTransmit2.start(AVTransmit2.java:119)
        at org.jitsi.examples.AVTransmit2.main(AVTransmit2.java:359)
    Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.jitsi.impl.neomedia.jmfext.media.protocol.directshow.DataSource
        at org.jitsi.impl.neomedia.device.DirectShowSystem.doInitialize(DirectShowSystem.java:97)
        at org.jitsi.impl.neomedia.device.DeviceSystem.initialize(DeviceSystem.java:642)
        at org.jitsi.impl.neomedia.device.DeviceSystem$1.run(DeviceSystem.java:393)
    
    Exception in thread "main" java.lang.IllegalArgumentException: direction
        at org.jitsi.service.neomedia.AbstractMediaStream.assertDirection(AbstractMediaStream.java:105)
        at org.jitsi.impl.neomedia.MediaStreamImpl.setDirection(MediaStreamImpl.java:2831)
        at org.jitsi.examples.AVTransmit2.start(AVTransmit2.java:128)
        at org.jitsi.examples.AVTransmit2.main(AVTransmit2.java:359)
    

    由于在不满意的链接错误中看到“ffmpeg”,我尝试从 https://ffmpeg.zeranoe.com/builds/win64/shared/ffmpeg-4.1-win64-shared.zip 下载 ffmpeg .我选择了“共享”的,因为它有我认为需要链接 JNI 接口(interface)的 DLL。我将 ffmpeg 安装的 bin 文件夹添加到 java.library.path,但没有任何乐趣 - 同样的错误。似乎他们的任何安装程序都没有“安装”任何东西——他们只是将文件解压缩到磁盘上。

    从错误堆栈中,我猜想我错过了一些 DirectShow 所需的 native 库,但我无法弄清楚它们应该是什么。

    有没有人能够让这些示例运行?我需要安装什么东西才能让它工作吗?

    最佳答案

    显然,在我尝试过的每台笔记本电脑上都有一些东西阻止了视频媒体流的初始化。但是音频流很好。通过增加

    if(mediaType != MediaType.AUDIO) continue;
    

    里面MediaType循环(仅使用音频),我能够让示例工作。

    关于audio - 需要帮助来运行 libjitsi 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54016070/

    相关文章:

    python 合唱效果和音频数据的含义

    jitsi - 如果主持人设置了 session 密码,Jibri 无法录制

    java - 如何在构建期间修复此 Duplicate class 错误?

    java - 是否可以让 MediaPlayer 播放一个音频文件并在播放完后播放下一个?

    c# - 复制并更新主动录制Wav文件的内容到一个新文件

    audio - 实时3D音频流和播放

    ios - Objective-C 无法使用 AVAudioPlayer 播放声音

    audio - PCM/RAW音频容器,用于流式传输

    c# - 如何在播放 mp3 文件时快进或快退?