小编Ken*_*man的帖子

Android NSD - 永久挂起/运行 - 特定于设备?

我正在尝试在我公司的专有硬件设备上执行服务发现,该设备拥有自己的WiFi网络,并在该网络上宣传一项bonjour服务.当我连接到那个WiFi网络时,我正在使用NSD来发现该服务并解决它.

代码非常简单,通常效果很好而且很快.除了我有一个相当反复出现的问题(10次尝试中有5次)到目前为止本地化我的三星S8 +.到目前为止无法在S6或Pixel XL上重现.

问题是DiscoveryListener除了onDiscoveryStarted()之外从未做过任何事情,它只是永远运行.如果我杀了应用程序并重新开始,有时候它会继续挂起.

这就像有一个被阻塞的线程或东西,但是在日志中没有有用的信息(我能找到),而且我还没有发现任何东西可以锁定,因为我可以做些什么来从中恢复.

我添加了一个超时,它将在30秒后停止监听器,但通常在我重试之后它仍然无效.

服务发现过程包含在LiveData中,LiveData在活动时启动.

    const val SERVICE_TYPE_FOO = "_foo._tcp."

    private val serviceDiscoveryListener = ServiceDiscoveryListener()

    override fun onActive() {
        super.onActive()
        stopRunnable = StopDiscoveryRunnable()
        nsdManager.discoverServices(
            SERVICE_TYPE_FOO,
            NsdManager.PROTOCOL_DNS_SD,
            serviceDiscoveryListener
        )
        handler.postDelayed(stopRunnable, SERVICE_DISCOVERY_TIMEOUT_MS)
    }

private lateinit var stopRunnable: Runnable

private inner class StopDiscoveryRunnable : Runnable {
    override fun run() {
        try {
            nsdManager.stopServiceDiscovery(serviceDiscoveryListener)
            Timber.w("service discovery timed out")
            postValue(ServiceDiscoveryState.Error)
        } catch (e: Throwable) {
            // no-op
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

听众很简单......

private inner class ServiceDiscoveryListener : NsdManager.DiscoveryListener {
    override fun onServiceFound(serviceInfo: NsdServiceInfo?) …
Run Code Online (Sandbox Code Playgroud)

android mdns bonjour dns-sd nsd

15
推荐指数
0
解决办法
494
查看次数

Ffmpeg 命令创建可共享到 Instagram 等的 mp4 视频

我正在通过将静态 1080x1080 .png 图像与 24/48 .wav 音频相结合,在我的 Android 应用程序中创建一个 mp4 视频,尝试生成一个与社交媒体平台兼容并可共享到社交媒体平台(例如 Facebook 和 Instagram)的文件(喂养)。

当我尝试分享我创建的视频时,它们会在 Instagram 应用程序中加载和预览(在 Android 和 iOS 上均已测试),但在最后一步点击“分享”按钮后,UI 返回到我的提要和上传进度立即切换到"Not Posted Yet. Try Again". 如果我然后点击重试按钮,我会立即收到一个对话框,说明"Couldn't Post Video" "There was a problem rendering your video. If this keeps happening, you may have to use another video."

我正在使用ffmpeg(通过 tanersener 的 mobile-ffmpeg 库)来做到这一点。

到目前为止,我发现的所有文档都没有显示 Instagram 上传要求的高度具体细节。我在音频中使用 AAC,libx264在视频中使用 h.264 ( )。我使用的示例的持续时间为 30 秒。如上所述,PNG 为 1080x1080。

我通过在我的 Mac 上使用 cmd-line ffmpeg 使用相同的输入文件并测试了许多参数变体,使 Android 脱离了图片,这些变体都没有创建可上传的视频。

我有一个由我们的 iOS …

android ffmpeg instagram

10
推荐指数
1
解决办法
4991
查看次数

标签 统计

android ×2

bonjour ×1

dns-sd ×1

ffmpeg ×1

instagram ×1

mdns ×1

nsd ×1