zoukankan      html  css  js  c++  java
  • 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窗体中
    }
    ————————————————
    版权声明:本文为CSDN博主「迷失彩虹海」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_38069903/article/details/114403597

  • 相关阅读:
    声明、定义本质的区别:有无内存的分配
    typedef 与 define 的区别
    Linux内核中链表的学习
    C语言数据类型的转换
    状态机
    170311php添加留言页面
    170314网络编程之TCP聊天窗口
    php课堂2简单作业+文件上传之案例
    php案例2——用户列表页
    学生管理系统
  • 原文地址:https://www.cnblogs.com/javalinux/p/14506199.html
Copyright © 2011-2022 走看看