我正在尝试使用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/