c#_FFMPEG使用心得(推流与拉流)

以辅助进程通过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窗体中
            }
  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值