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

  • 相关阅读:
    下载Instagram的图片
    golang写一个简单的爬虫
    [转载]Go的50度灰:Golang新开发者要注意的陷阱和常见错误
    无法获得锁 /var/lib/dpkg/lock
    RouterOS 设定NAT loopback (Hairpin NAT)回流
    Fix-Dell iDRAC 7 error: RAC0218: The maximum number of user sessions is reached
    Nginx Location配置总结
    vcenter6.7将ESXI所有的端口组迁移到分布式交换机的步骤
    什么是DSCP,如何使用DSCP标记搭配ROS策略
    MTR追踪的好工具
  • 原文地址:https://www.cnblogs.com/javalinux/p/14506199.html
Copyright © 2011-2022 走看看