Audio 需要帮助才能运行libjitsi示例

Audio 需要帮助才能运行libjitsi示例,audio,audio-streaming,jitsi,Audio,Audio Streaming,Jitsi,我正在尝试使用libjitsi来流式传输一些音频,但我无法让它工作。我在Windows10上。以下是我所做的: 克隆 作为Maven项目导入Eclipse。一切都很好 通过查看Ant构建文件,我最终意识到我需要一些本机lib,因此我将/lib/native中的lib添加到java.library.path中 我使用--本地端口基=5100--远程主机=本地主机--远程端口基=5200运行AVTransmit2,使用--本地端口基=5200--远程主机=本地主机--远程端口基=5100运行AVRe

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

  • 克隆
  • 作为Maven项目导入Eclipse。一切都很好
  • 通过查看Ant构建文件,我最终意识到我需要一些本机lib,因此我将
    /lib/native
    中的lib添加到
    java.library.path
  • 我使用
    --本地端口基=5100--远程主机=本地主机--远程端口基=5200
    运行
    AVTransmit2
    ,使用
    --本地端口基=5200--远程主机=本地主机--远程端口基=5100
    运行
    AVReceive2
  • 当我运行任何一个文件时,都会出现类似的错误。首先我明白了

    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)
    
    警告:未能初始化org.jitsi.impl.neomedia.device.DirectShowSystem
    java.lang.reflect.UndeclaredThrowableException
    位于org.jitsi.impl.neomedia.device.DeviceSystem.invokeDeviceSystemInitialize(DeviceSystem.java:441)
    位于org.jitsi.impl.neomedia.device.DeviceSystem.invokeDeviceSystemInitialize(DeviceSystem.java:348)
    位于org.jitsi.impl.neomedia.device.DeviceSystem.(DeviceSystem.java:493)
    位于org.jitsi.impl.neomedia.device.DeviceSystem.(DeviceSystem.java:475)
    位于org.jitsi.impl.neomedia.device.DirectShowSystem.(DirectShowSystem.java:61)
    位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
    位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    位于java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    位于java.lang.Class.newInstance(Class.java:442)
    位于org.jitsi.impl.neomedia.device.DeviceSystem.initializeDeviceSystems(DeviceSystem.java:288)
    在org.jitsi.impl.neomedia.device.DeviceSystem.initializeDeviceSystems(DeviceSystem.java:230)上
    位于org.jitsi.impl.neomedia.MediaServiceImpl.getDevices(MediaServiceImpl.java:577)
    位于org.jitsi.impl.neomedia.MediaServiceImpl.getDefaultDevice(MediaServiceImpl.java:500)
    位于org.jitsi.examples.AVTransmit2.start(AVTransmit2.java:119)
    位于org.jitsi.examples.AVTransmit2.main(AVTransmit2.java:359)
    原因:java.lang.NoClassDefFoundError:无法初始化类org.jitsi.impl.neomedia.jmfext.media.protocol.directshow.DataSource
    位于org.jitsi.impl.neomedia.device.DirectShowSystem.doInitialize(DirectShowSystem.java:97)
    在org.jitsi.impl.neomedia.device.DeviceSystem.initialize(DeviceSystem.java:642)上
    位于org.jitsi.impl.neomedia.device.DeviceSystem$1.run(DeviceSystem.java:393)
    线程“main”java.lang.IllegalArgumentException中的异常:方向
    位于org.jitsi.service.neomedia.AbstractMediaStream.assertDirection(AbstractMediaStream.java:105)
    位于org.jitsi.impl.neomedia.MediaStreamImpl.setDirection(MediaStreamImpl.java:2831)
    位于org.jitsi.examples.AVTransmit2.start(AVTransmit2.java:128)
    位于org.jitsi.examples.AVTransmit2.main(AVTransmit2.java:359)
    
    因为我在不满意的链接错误中看到了“ffmpeg”,所以我尝试从下载ffmpeg。我之所以选择“共享”一个,是因为它有我认为需要链接JNI接口的DLL。我将ffmpeg安装的bin文件夹添加到java.library.path,但没有相同的错误。他们的安装程序似乎并没有“安装”任何东西——他们只是将文件解压缩到磁盘上

    从错误堆栈中,我猜不知何故我遗漏了DirectShow所需的一些本机库,但我无法确定它们应该是什么


    有人能够运行这些示例吗?是否需要安装一些东西才能使其正常工作?

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

    if(mediaType != MediaType.AUDIO) continue;
    
    MediaType
    循环中(仅使用音频),我能够让示例正常工作