我正在尝试使用SharpFFMpeg

http://sourceforge.net/projects/sharpffmpeg/

我在网上某处发现了avcodec-52.dll和avformat-52.dll ...

当我使用SharpFFMpeg并进行类似av_init_packet的调用时

我收到这样的PInvoke错误

检测到PInvokeStackImbalance
消息:对PInvoke函数'WpfApplicationFFMpegTest!FFmpegSharp.Interop.FFmpeg :: av_init_packet'的调用已使堆栈不平衡。这可能是因为托管PInvoke签名与非托管目标签名不匹配。检查PInvoke签名的调用约定和参数是否与目标非托管签名匹配。

简而言之,我试图解码H264并显示来自摄像机的传入流...

只是想知道是否有人能够在C#中成功做到这一点?

谢谢

最佳答案

本杰明想说的是,您应该尝试打开SharpFFmpeg源并在AVFormat.cs行内进行更改

[DllImport("avformat.dll"), SuppressUnmanagedCodeSecurity]
public static extern void av_init_packet(IntPtr pAVPacket);


进入

[DllImport("avformat.dll", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
public static extern void av_init_packet(IntPtr pAVPacket);


并重新编译SharpFFmpeg项目。我没有进行测试,因为我没有DLL。

如果这样做有帮助(av_init_packet在异常消息中消失),请尝试在每个PInvoke方法上添加CallingConvention.Cdecl

关于c# - FFMPeg Windows C#H264,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4160589/

10-09 14:18