本文与csdn博客同步:https://blog.csdn.net/Hanghang_/article/details/104893135,欢迎关注,点赞,评论。

前言

音视频系列:

HectoorZ:音视频系列1:ffmpeg+rtmp拉流​zhuanlan.zhihu.com

HectoorZ:音视频系列2:ffmpeg将H.264解码为RGB​zhuanlan.zhihu.com

有兴趣的朋友可以看看。

上一节我们采用ffmpeg拉取芒果台视频,并处理成rgb,奈何芒果台不给力,拉流卡卡的,这样就不知道是我代码的问题,还是芒果台服务器的问题了,为了杜绝这个问题发生,我们这一节在本地搭建nginx服务器,用ffmpeg进行本地推流,再用自己的代码和VLC播放器进行PK测试。

为啥要这么做,因为本地推流,本地接收,可以保证推出来的流肯定是流畅的,这样自己代码出了问题(比如很卡)那么就能够第一时间知道,等于排除了服务器的问题。

实际操作

nginx+nginx-rtmp-module安装

nginx下载地址:http://nginx.org/en/download.html

我自己是下载了Mainline version,下载完进行解压,会发现有个configue可执行文件,等下我们要用它生成Makefile文件。

然后这是编译nginx的参数说明:http://nginx.org/en/docs/configure.html

nginx-rtmp-module下载:直接用git clone命令 git clone https://github.com/arut/nginx-rtmp-module.git

由于我们只需要实现推流,而不需要其他的module和环境,所以编译的时候,我们只需要安装nginx-rtmp-module,以及openssl证书。

首先我们看看openssl,在哪。

查看openssl位置命令:

which openssl

显示:/usr/local/openssl/bin/openssl

去掉bin/openssl,在nginx目录下,使用configure指令:

./configure --with-openssl=/usr/local/openssl/ --add-module=nginx-rtmp-module

注意,--with-openssl=填写刚刚获取的openssl路径,去掉bin/openssl--add-module=填写nginx-rtmp-module的路径。

运行发现有问题:

'/usr/local/openssl/.openssl/include/openssl/ssl.h' failed

说是没发现.openssl/目录,修改nginx目录下,auto/lib/openssl/conf文件 ,修改成正确的路径。

CORE_INCS="$CORE_INCS $OPENSSL/include"CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libssl.a"CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libcrypto.a"

再运行:

./configure --with-openssl=/usr/local/openssl/ --add-module=nginx-rtmp-module
make -j2
sudo make install

安装完成。

配置nginx的rtmp应用

sudo vim /usr/local/nginx/conf/nginx.conf

修改nginx.conf,增加rtmp的application

rtmp {server {listen 1935;chunk_size 4096;application rtmplive {live on;max_connections 1024;allow publish all; # control access privilegeallow play all; # control access privilege}}
}

其中: application的名字为rtmplive; 最大可连接数为1024; chunk_size分开数据大小为4096; 监听的端口为1935。

打开nginx服务,(注意要使用sudu,不然不够权限)

sudo /usr/local/nginx/sbin/nginx

报错,bind() to 0.0.0.0:80 failed (98: Address already in use)

原因是nginx已经启用,使用ps -e | grep nginx查看有无启动nginx服务,有的话,可以先sudo kill -9 PID号

再启动nginx:

sudo /usr/local/nginx/sbin/nginx

或者你也可以重载nginx程序:

/usr/local/nginx/sbin/nginx -s reload

到这里nginx就配置好了。

启动ffmpeg推流

ffmpeg -re -i sss.mp4 -c copy -f flv  rtmp://localhost:1935/live/rtmplive

出现错误:

rtmp://localhost:1935/live/mytv: Input/output error

实际上是地址写错了。 重新来:

ffmpeg -re -i sss.mp4 -c copy -f flv  rtmp://localhost:1935/rtmplive

本地推流大功告成。

拉流测试

终于到了PK的时候了,VLC播放器我的代码(详见上一节)进行PK,究竟胜利会花落谁家呢?

我觉得,应该是我的代码会赢。

VLC打开网络串流,输入rtmp://localhost:1935/live/mytv: Input/output error 我的代码也修改rtmp地址,然后开启。

测试半小时,VLC落后一大截,于是我重开VLC串流,发现,还是慢。

两小时过去了,代码仍在跑中,没有崩溃,速度仍比VLC快,我估摸着大概快个几秒钟。

测试效果如下图:左侧为我的代码,右侧为VLC播放器,使用OPENCV显示,可以看到左侧已经写了下面一行,而右侧还没写,显然慢于左侧。

所以,最后胜利归我,嘿嘿。

好了,本节到这里就完了,做好这些基本工作,接下来我可能会修改上一节中的代码,使其搭配最新的api,而不再警告,要么就是引入ROS系统。

如果我的文章对你有帮助,欢迎点赞、评论、关注。

ffmpeg rtmp 不清晰_音视频系列3:使用ffmpeg + nginx搭建本地转发服务器相关推荐

  1. ffmpeg rtmp 花屏_音视频系列6:ffmpeg多线程拉流

    本文与csdn博客同步:https://blog.csdn.net/Hanghang_/article/details/105302384,欢迎关注,点赞,评论. 前言 本篇博客是音视频系列的续集与改 ...

  2. datagrid 重载本地数据_音视频系列3:使用ffmpeg + nginx搭建本地转发服务器

    本文与csdn博客同步:https://blog.csdn.net/Hanghang_/article/details/104893135,欢迎关注,点赞,评论. 前言 音视频系列: HectoorZ ...

  3. 音视频系列2:ffmpeg将H.264解码为RGB

    音视频系列2:ffmpeg将H.264解码为RGB 前言 源码 前言 喜大普奔,终于更新啦,上期说到,如何使用ffmpeg+rtmp进行拉流,不熟悉的小伙伴们,可以先看上一期.今天我们要实现的是使用f ...

  4. ffmpeg rtmp 不清晰_知识储备:理解RTMP、HttpFlv和HLS的正确姿势

    需求比协议重要,理解你的需求在前,选择应用的协议在后! 第一.是什么? 解释这个问题有很大的难度,你所处的角度不同,决定了所需答案的不同.不管怎么样,协议是为了解决问题而生的,它有着天然的指向性.同时 ...

  5. 音视频开发(8)---nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器

    nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/redstarofsle ...

  6. 音视频基本概念和FFmpeg的简单入门(新手友好+FFmpeg资料分享)

    音视频基本概念和FFmpeg的简单入门 基本概念 容器/文件(Conainer/File): 即特定格式的多媒体文件,一般来说一个视频文件是由视频,音频,字幕等按特定的格式/规则组合到一起的,常见如: ...

  7. 音视频命令转换工具 - FFmpeg

    随着自媒体兴起,许多人会自拍视频或者找视频素材裁剪,配上背景音乐或解说,加上各种特效边框,处理后再生成新的视频文件,发布到各大平台.生成的原始视频文件都很大,我们需要转换格式或者压缩大小,便于上传或者 ...

  8. 网页测试本地服务器_音视频开发搭建一个直播服务器

    现在抖音.快手等直播实在是太火了,因此对音视频的开发非常感兴趣.查阅了相关资料,使用Nginx搭建一个简单的直播跟点播流媒体服务器,能够实时推流到服务器,同时在网页端播放直播的视频. 先上效果 使用O ...

  9. 实验一 利用ffmpeg进行视音频信息提取 |音视频技术

    实验一 利用ffmpeg进行视音频信息提取 |音视频技术 一.实验目的 1.深入掌握视音频的基本参数信息 2.掌握ffmpeg编译环境配置 3.掌握和熟悉提取视音频文件的基本方法 二.实验要求 1.对 ...

最新文章

  1. Lombok经常用,却不知道它的原理是什么
  2. 计算机网络连接设备的有什么,常用网络连接设备有哪些?
  3. 一行文章让你搞懂什么是前缀、中缀、后缀表达式以及它们之间的相互转换
  4. 如何下载python2.7.16_CENTOS6.5 安装PYTHON2.7.16
  5. Type(类型判断)
  6. 比尔 · 盖茨即将在美国商会发表演讲 系离婚后首次亮相
  7. JavaScript数据类型之数字型(4)
  8. python中引用javascript代码块
  9. mysql学习书籍推荐
  10. 微信卡券开发具体的步骤,不会踩坑
  11. word 中巧妙添加分隔线
  12. 市面上主流RTC竞品对比分析
  13. 程序员离职原因的最佳回答_转行面试,高情商回答“你为什么要离职?”(建议收藏)...
  14. 计算机远程桌面连接如何设置密码,远程桌面连接密码
  15. 流行音乐混音风格 流行音乐混音的压缩技巧
  16. ADO.NET中五个对象
  17. 探秘嫦娥一号背后的软件开发故事
  18. wps加载失败模板文件损坏_WPS文件因操作不当被损坏怎么办?
  19. 安卓开发之集成微信登录以及分享群聊,朋友圈功能。
  20. 【数据分析/商业分析】数据分析中使用的商业模型(学习总结)

热门文章

  1. php如何识别flac文件,去伪存真 这几招教你辨析真假无损音乐
  2. 【6.20校内test】
  3. Bilibili漫画抓取思路
  4. 整理:poj 基本搜索
  5. 粤语(广东话)全译-对广东话最全面、详细的介绍
  6. 五大改编金曲唱出股民心声
  7. 点线面的意义_浅析点线面在平面设计中作用与意义.doc
  8. 数据库天才Jim Gray 先生“失踪一年”绝世经典
  9. 香港大学的计算机专业,面试香港大学的计算机专业该怎么表现?
  10. Oracle PL/SQL基础语法学习13:比较运算符