以辅助进程通过CMD启动FFMPEG推流(需要启动nginx流服务器(或者其他流服务器),否则FFMPEG会报错)
 FFMPEG = new Process();
            FFMPEG.StartInfo.FileName = “cmd.exe”;
            FFMPEG.StartInfo.CreateNoWindow = true;//在已存在控制台时,此参数无效
            FFMPEG.StartInfo.UseShellExecute = false;
            FFMPEG.StartInfo.RedirectStandardInput = true;
            FFMPEG.StartInfo.RedirectStandardOutput = true;
            if (FFMPEG.Start())
            {
              //重定向
              FFMPEG.StandardInput.WriteLine(“cd /d ” +”……\FFPEMG\bin”);
              FFMPEG.StandardInput.Flush();
              //以下方式选一个
              //此为USB摄像头
              FFMPEG.StandardInput.WriteLine(“ffmpeg -thread_queue_size 1000 -r 30 -f dshow -i video=’Cam’ -vcodec libx264 -acodec copy -preset:v ultrafast -tune:v zerolatency -max_delay 10 -g 50 -sc_threshold 0 -f flv rtmp://127.0.0.1:1935/live/home1”);//video=摄像头名称
              FFMPEG.StandardInput.Flush();
              //此为网络摄像头
              FFMPEG.StandardInput.WriteLine(“ffmpeg -thread_queue_size 1000 -r 30 -i rtsp://” + UserName + “:” + Password + “@” + IP + ” -vcodec libx264 -acodec copy -preset:v ultrafast -tune:v zerolatency -max_delay 10 -g 50 -sc_threshold 0 -f flv rtmp://127.0.0.1:1935/live/home1″);
              FFMPEG.StandardInput.Flush();
              //此为屏幕推流
              FFMPEG.StandardInput.WriteLine(“ffmpeg -thread_queue_size 1000 -r 30 -f gdigrab -i desktop -vcodec libx264 -acodec copy -preset:v ultrafast -tune:v zerolatency -max_delay 10 -g 50 -sc_threshold 0 -f flv rtmp://127.0.0.1:1935/live/home1”);
              FFMPEG.StandardInput.Flush();
            } 
通过CMD使用FFPLAY拉流播放
 			FFPlay = new Process();
            FFPlay.StartInfo.FileName = “cmd.exe”;
            FFPlay.StartInfo.CreateNoWindow = true;
            FFPlay.StartInfo.UseShellExecute = false;
            FFPlay.StartInfo.RedirectStandardInput = true;
            FFPlay.StartInfo.RedirectStandardOutput = true;
            if (FFPlay.Start())
            {
                FFPlay.StandardInput.WriteLine(“cd /d ” “…..\FFPEMG\bin”);
                FFPlay.StandardInput.Flush();
                FFPlay.StandardInput.WriteLine(“ffplay -fflags nobuffer rtmp://127.0.0.1:1935/live/home1”);
                FFPlay.StandardInput.Flush();
                //拉流成功会弹出以“rtmp://127.0.0.1:1935/live/home1”为标题的窗口
                //通过查找标题得到窗口句柄,可以嵌入c# WinForm/WPF窗体中
            }
————————————————
版权声明:本文为CSDN博主「迷失彩虹海」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38069903/article/details/114403597