Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当包含在另一个项目中时,Android视频解码和编码示例不起作用_C#_Android_Video_Xamarin_Xamarin.android - Fatal编程技术网

C# 当包含在另一个项目中时,Android视频解码和编码示例不起作用

C# 当包含在另一个项目中时,Android视频解码和编码示例不起作用,c#,android,video,xamarin,xamarin.android,C#,Android,Video,Xamarin,Xamarin.android,下面我们将用Xamarin对Android上的视频进行转码。该项目成功地转码了视频(无音频)。但是,当我们将类复制到现有Xamarin项目并尝试使用它们时,OutputSurface.cs中的这段代码中会抛出自定义运行时异常(“帧等待超时”): const int TIMEOUT_MS = 1000; System.Threading.Monitor.Enter(_frameSyncObject); while (!IsFrameAvailable) {

下面我们将用Xamarin对Android上的视频进行转码。该项目成功地转码了视频(无音频)。但是,当我们将类复制到现有Xamarin项目并尝试使用它们时,OutputSurface.cs中的这段代码中会抛出自定义运行时异常(“帧等待超时”):

const int TIMEOUT_MS = 1000;

System.Threading.Monitor.Enter(_frameSyncObject);
while (!IsFrameAvailable)
            {
                try
                {
                    // Wait for onFrameAvailable() to signal us.  Use a timeout to avoid
                    // stalling the test if it doesn't arrive.
                    System.Threading.Monitor.Wait(_frameSyncObject, TIMEOUT_MS);

                    if (!IsFrameAvailable)
                    {
                        if (returnOnFailure)
                        {
                            return false;
                        }
                        // TODO: if "spurious wakeup", continue while loop
                        throw new RuntimeException("frame wait timed out");
                    }
                }
                catch (InterruptedException ie)
                {
                    if (returnOnFailure)
                    {
                        return false;
                    }
                    // shouldn't happen
                    throw new RuntimeException(ie);
                }
            }
IsFrameAvailable = false;

System.Threading.Monitor.Exit(_frameSyncObject);
以下代码将
IsFrameAvailable
设置为true,并将其设置为SurfaceTexture FrameAvailable事件:

private void FrameAvailable(object sender, SurfaceTexture.FrameAvailableEventArgs e)
        {
            System.Threading.Monitor.Enter(_frameSyncObject);
            if (IsFrameAvailable)
            {
                throw new RuntimeException("mFrameAvailable already set, frame could be dropped");
            }
            IsFrameAvailable = true;
            System.Threading.Monitor.PulseAll(_frameSyncObject);
            System.Threading.Monitor.Exit(_frameSyncObject);
        }
同样,当我们在同一设备上运行示例项目时,不会发生这种情况

同样,我们测试了一个。这包括非常类似的代码,但包括音频,这是一个Java项目。我们创建了一个绑定库,并在Xamarin项目中引用了它。它还抛出此自定义运行时异常

这似乎与线程或阻塞有关,但我们无法完全理解。为什么同一个代码线程可以在项目中正常运行,而另一个却不能

请让我知道,如果我可以包括任何其他信息来帮助