在C#project中使用FFmpeg

在C#project中使用FFmpeg,c#,ffmpeg,video-streaming,desktop,live-streaming,C#,Ffmpeg,Video Streaming,Desktop,Live Streaming,我正在尝试用C#创建一个桌面直播应用程序。程序必须在Windows下运行,并将图像从用户桌面流式传输到rtmp。还必须有帧率、视频大小、质量和编解码器(h263和h264)选项。我认为FFmpeg是最好的选择(如果不是这样,请写评论)。我已经使用控制台通过ffmpeg.exe完成了上面提到的所有操作。所以我想知道,我是否可以将FFmpeg库包含到C#project中(作为.lib或.dll)以使用它而不是.exe,从而为我的任务保存合适的功能?如果有任何例子,我将不胜感激 注意:以下是我使用的一

我正在尝试用C#创建一个桌面直播应用程序。程序必须在Windows下运行,并将图像从用户桌面流式传输到rtmp。还必须有帧率、视频大小、质量和编解码器(h263和h264)选项。我认为FFmpeg是最好的选择(如果不是这样,请写评论)。我已经使用控制台通过ffmpeg.exe完成了上面提到的所有操作。所以我想知道,我是否可以将FFmpeg库包含到C#project中(作为.lib或.dll)以使用它而不是.exe,从而为我的任务保存合适的功能?如果有任何例子,我将不胜感激

注意:以下是我使用的一些命令示例:

ffmpeg -f dshow -i video=UScreenCapture -vcodec h264 -pix_fmt yuv420p -s 320x240 -f flv rtmp://[my adr]/desc

ffmpeg -f dshow -i video=UScreenCapture -vcodec h264 -r 15 -t 0:1:00 -q 12 -pix_fmt yuv420p -s 320x240 -f flv rtmp://[my adr]/desc
这是,希望这有帮助

您可以像这样使用.exe文件:

ffmpeg.StartInfo.UseShellExecute = false;
ffmpeg.StartInfo.RedirectStandardOutput = true;
ffmpeg.StartInfo.FileName = Server.MapPath("~/Video_Clips/ffmpeg.exe");

ffmpeg.StartInfo.Arguments = String.Format(@"-i ""{0}"" -threads 8 -f webm -aspect 16:9 -vcodec libvpx -deinterlace -g 120 -level 216 -profile 0 -qmax 42 -qmin 10 -rc_buf_aggressivity 0.95 -vb 2M -acodec libvorbis -aq 90 -ac 2 ""{1}""",
                                           Server.MapPath("~/Video_Clips/" + sNameWithoutExtension + ".wmv"),
                                           Server.MapPath("~/Video_Clips/" + sNameWithoutExtension + ".webm"));
ffmpeg.Start();

ffmpeg.WaitForExit();

我知道这是一个有点旧的线程,但如果我在这里其他人也看到了这一点。您不应该使用它的进程信息来启动ffmpeg。这与它有很大关系。只要使用任何包装。我犯了这个错误,浪费了我将近一年的生命。。。实际上,你可以通过跑步来做到这一点

await Conversion.New().Start(@"-i ""{0}"" -threads 8 -f webm -aspect 16:9 -vcodec libvpx -deinterlace -g 120 -level 216 -profile 0 -qmax 42 -qmin 10 -rc_buf_aggressivity 0.95 -vb 2M -acodec libvorbis -aq 90 -ac 2 ""{1}");

但这只是一个基本用法,因为它提供了流畅的API来使用FFmpeg。

在某个时候,您应该调用
Close
Dispose
on
FFmpeg
(看起来是
进程
)来释放进程句柄。From:句柄是非常有价值的资源,因此泄漏句柄比泄漏内存更有害。不,样品不能这样做。我已经提交了他们的反馈。谢谢你的回答,这真的很有帮助。问题是,我不能用VS-2010打开你的项目,也不能用VS-2012打开。事实上,我并不需要它来理解你的答案(你的评论很充分),但我很有兴趣去看它。我怎样才能打开你的项目?它看起来很奇怪,让我再次尝试打开它,稍后我会告诉你。