前面一篇文章简单的介绍了下如何利用SRS自带的播放地址进行观看RTMP直播流,也就是说是使用SRS的内置demo进行Test,但是进行视频直播肯定不可能使用那样的去开发,不开源的东西肯定不好用。由于在研究的过程中很少关于C#方面的资料,大部分都是自己慢慢磨出来的。觉得那些刚开始入门的人很有帮助,所以决定贴出来,方便那些刚入门的学者,因为毕竟有些资料写的太专业,而且有些刚入门的虽说写的很详尽,但是没有一个完整的概念,很难理解,本文着重讲解下如何使用C#进行编码推送RTMP至服务器,以及取流播放。让刚入门的菜鸟一看就懂。

1.准备材料:VMware Workstation 12 Player或更高版本(用于搭建Ubuntu)、Ubuntu(linux环境) 、SRS(linux下搭建的服务器)、VLC(播放器)或者ffplay、FFMPEG。

  2. 语言:C#;

  3.工具:VS2015

  4.可以参考的资料:https://github.com/ossrs/srs  SRS服务器搭建。

前面第4点已经给出了github的git地址,请大家在搭建好ubuntu(关于如何搭建ubuntu请参考我的前一篇)之后,开机使用内置的浏览器进行下载,如下图所示:

使用过github的人不需要多废话,可以通过git的方式,或者直接点击【Download ZIP】的方式下载到ubuntu上,然后最重要的,也是其他人资料都是轻描淡写的步骤很关键:

1.从官网这里指的是(https://github.com/ossrs/srs)这边git或者下载下来保存在ubuntu上。(git地址:https://github.com/ossrs/srs.git)

2.获取之后要进行编译(很多资料写编译仅仅是列出一条指令,并不说明是在什么环境下,什么地方进行编译,因为根本没资料参考也没接触过这个东西只能自己磨,所以花了整整2天时间才磨透)这个对初学者非常重要。

在ubuntu下打开下载好的文件,然后打开文件夹:本人下载的是srs-2.0-b4》trunk,然后比较关键的一步,很多资料也不说清楚是怎么编译的,对于没接触过的初学者来讲难度很大;空白处右键:出现【在终端打开(T)】然后开始编译,使用命令:./configure && make然         后回车,回车完成之后有提示输入密码就输入密码(可能会看不见输入的密码,不管它)。然后再回车,继续编译,耐心等待它编译完成,编译完成之后再启动服务器SRS.

3.启动命令:scripts/run.sh然后回车,当然这条指令必须要明确路径,我是在第2条的基础上进行启动的。

4.至此服务SRS就已经编译并且完成启动了。接下来就开始准备另一个工具FFMPEG进行视频推送。

5.到官方网站:https://ffmpeg.zeranoe.com/builds/  根据自己的系统下载相应的版本。(速度稍微有点慢,耐心等待完成)。

6.下载完成之后打开文件夹bin目录下会有三个可执行文件分别是ffmpeg.exe/ffpaly.exe/ffprobe.exe,本文着重介绍推流跟播放。

7.接下来就是C#编写调用ffmpeg.exe了,网上的参考资料非常少,还是自己编译的通过了,一定要跟大家分享,代码如下:

  /// <summary>
/// 推流至服务器SRS
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
//第一步检测读取的地址是否为空
if (this.textBox1.Text.Trim() != "")
{
//第二步读取后缀名是否为flv
//string path = Path.GetExtension(this.textBox1.Text.Trim());
//if (path != "flv")
//{
//第三步检测服务器SRS是否正常开启
string strpath = System.IO.Directory.GetCurrentDirectory(); //文件名
//string strpath = "d:\\我的文档\\visual studio 2015\\Projects\\SRS_RTMP\\SRS_RTMP\\bin\\Debug\\ffmpeg.exe"; Process p = new Process();//创建进程
p.StartInfo.FileName = @"" + strpath + "" + "\\ffmpeg.exe";//ffmpeg的绝对路径可以自由更改
p.StartInfo.Arguments = "-i " + this.textBox1.Text.Trim().ToString() + " -vcodec copy -acodec copy -f flv -y rtmp://192.168.61.128/live/livestream";//ffmpeg参数
//F:\ffmpeg-20170214-8fa18e0-win64-static\bin\ffmpeg.exe -i F:\mytest.flv
p.StartInfo.UseShellExecute = false;//不使用操作系统外壳程序启动线程
p.StartInfo.RedirectStandardError = true;//把外部程序错误输出写到StandardError流中
p.StartInfo.CreateNoWindow = true; //设置置不显示示窗口
//p.ErrorDataReceived += new DataReceivedEventHandler(Output);//外部程序(这里是FFMPEG)输出流时候产生的事件
p.Start();//启动线程
p.BeginErrorReadLine();//开始异步读取
p.WaitForExit();//阻塞等待进程结束
p.Close();//关闭进程
p.Dispose();//释放资源
MessageBox.Show("推流完成,推流的同时可以使用播放器进行观看!"); ffplay(); //}
//else
//{
// MessageBox.Show("请先进行转码后再进行推送!");
//}
}
else
{
MessageBox.Show("先打开文件后再进行推流!");
}
}

8.这是一个简单的Winform推流代码,希望对大家有帮助,推流完成之后,我们就可以开始使用第三方播放器VLC取流进行播放,这边暂时还没使用内置播放器ffpaly进行播放。效果图如下:

9.至此推流完成,可以实时进行推流播放,目前还在学习ffmpeg中,还有很多需要研究,这边只是做一个备注作用以防忘记。希望对刚入门的所有菜鸟们有个更好的理解。

C#推送RTMP到SRS通过VLC进行取流播放!!的更多相关文章

  1. 最简单的基于FFmpeg的推流器(以推送RTMP为例)

    ===================================================== 最简单的基于FFmpeg的推流器系列文章列表: <最简单的基于FFmpeg的推流器(以 ...

  2. EasyRTMP手机直播推送rtmp流flash无法正常播放问题

    本文转自EasyDarwin团队Kim的博客:http://blog.csdn.net/jinlong0603/article/details/52960750 问题简介 EasyRTMP是EasyD ...

  3. EasyNVR摄像机网页直播中,推流组件EasyRTMP推送RTMP扩展支持HEVC(H.265)的方案

    众所周知,RTMP标准协议实际是不支持HEVC(H.265)编码格式的,同样,现行的H5标准里面,也没有对H.265的描述,所以,在很大程度上,H5网页浏览器是无法接入HEVC(H.265)的,但是, ...

  4. 最简单的基于Flash的流媒体示例:RTMP推送和接收(ActionScript)

    ===================================================== Flash流媒体文章列表: 最简单的基于Flash的流媒体示例:RTMP推送和接收(Acti ...

  5. 使用vlc实现视频TS流的推送

    鉴于Mpeg TS流播放的需求,使用 VLC作为Server来实现输出Mpeg TS    本文仅涉及如何使用VLC的Command来实现作为视频流Server通常可以使用下述四种方式来推送Mpeg ...

  6. 使用VLC推送TS流(纯图版)

    在没有编码器的情况下,可以使用VLC进行推送TS+UDP流 操作步骤如下: 一.UDP方式: 媒体-->流 选用要播放的文件,可以选择多个来播放,选择串流播放 这里直接点击下一步 需要选择在本地 ...

  7. RTSP安防摄像机(海康大华宇视等)如何推送到RTMP流媒体服务器进行直播

    方案介绍 目前互联网直播的CDN和标准RTMP流媒体服务器通常只能接收RTMP格式的音视频推流.目前市场上有一些自带RTMP推流的摄像机和编码器,可以直接在其rtmp推流配置里面配置推送到RTMP流媒 ...

  8. EasyRTMP安卓Android手机直播之AAC采集、编码与RTMP推送

    本文转自EasyDarwin团队Kim的博客:http://blog.csdn.net/jinlong0603/article/details/52963378 EasyRTMP Android版de ...

  9. ffmpeg推送,EasyDarwin转发,vlc播放 实现整个RTSP直播

    部署EasyDarwin流媒体服务器 ffmpeg推送摄像机视频到EasyDarwin VLC播放 第一步:部署EasyDarwin流媒体服务器 EasyDarwin的部署过程我们就不再赘述了,在Ea ...

随机推荐

  1. 自然语言处理高手_相关资源_开源项目(比如:分词,word2vec等)

    (1) 中科院自动化所的博士,用神经网络做自然语言处理:http://licstar.net (2) 分词项目:https://github.com/fxsjy/jieba(3) 清华大学搞的中文分词 ...

  2. DWR3.0框架入门(1) —— 实现ajax

    框架简介:DWR(Direct Web Remoting)      是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏 ...

  3. 理解Twisted与非阻塞编程

    先来看一段代码: # ~*~ Twisted - A Python tale ~*~ from time import sleep # Hello, I'm a developer and I mai ...

  4. Myeclipse SVN 修改用户名和密码

    转自:http://blog.csdn.net/chow__zh/article/details/7731497 解决方案: 在Eclipse使用SVN的过程中大多数人往往习惯把访问SVN的用户名密码 ...

  5. sql server mdf碎片级数据库修复,数据库碎片级提取

    sql server mdf碎片级数据库修复,数据库碎片级提取   大家都知道MDF数据库文件一般都比较大,在磁盘中往往被存放到不连续的逻辑簇中,久而久之就形成了文件碎片,当文件被误删除或者格式化后, ...

  6. ubuntu 安装chrome浏览器

    对于一个一直用chrome的人来说,真的很不习惯用firefox,虽然firebug很好用.. 好吧,心情不佳,直接上命令: 下载命令(有墙,下不下来,多试几次): wget https://dl.g ...

  7. bmp图片显示

    文件IO项目: 在开发板屏幕上循环显示目录里的图片 a.按照一定的间隔循环显示目录里的bmp图片 b.实现手指滑动来显示目录里的图片(bmp,jpg)上一张,下一张 d1: 1.能操控屏幕(查询开发板 ...

  8. 关于自己封装Web前端框架的思考和探索

    一.引言 首先这些年关于前端技术层出不穷,从最早的只用js做简单验证,到现在发现好像大前端已经无所不能了的感觉.特别是为了降低前端开发复杂度,涌现了一大批 的MVC/MVVM模式的前端框架,不停了刷新 ...

  9. 关于ExtJS必输框,多选项

    必填项: //页面内传值用ID,和后台联系用name <div class="col-xs-4">                     <div class= ...

  10. TortoiseSVN使用简介

    TortoiseSVN使用简介 2009-04-24 来源: dev.idv.tw 1.安装及下载client 端 2.什么是SVN(Subversion)? 3.为甚么要用SVN? 4.怎么样在Wi ...