学习大神的“ 最简单的基于FFmpeg的推流器(以推送RTMP为例) ” 心得总结
来源:互联网 发布:守望传输数据遇到问题 编辑:程序博客网 时间:2024/05/22 14:20
这两天在学习研究ffmpeg,在“ 最简单的基于FFmpeg的推流器(以推送RTMP为例) ” 遇到几个问题,把解决方法分享一下。
首先附上链接 博文链接 http://blog.csdn.net/leixiaohua1020/article/details/39803457
github链接 https://github.com/leixiaohua1020/simplest_ffmpeg_streamer
源代码工程是win平台的,把文件simplest_ffmpeg_streamer.cpp单独提出稍微修改一下即可在Linux下编译,
添加头文件
修改目标文件和路径(把demo.flv放在main.out 相同路径)
out_filname 的URL随后再说。
Makefile中指定好头文件和LIB的路径即可编译成功。
OBJDIR = objOBJS = $(OBJDIR)/ffmpeg_streamer.oCC = gccCFLAGS = -Wall -o -gTARGET = main.outSRC_FILES=\ ffmpeg_streamer.cppFFMPEG_CFLAGS = -I/usr/local/include -L/usr/local/libFFMPEG_LIBS = -lavformat -lavcodec -lavutilGLIB_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/includeGLIB_LIBS = -lgobject-2.0 -lglib-2.0INC_DIRS = \ $(GLIB_CFLAGS) \ $(FFMPEG_CFLAGS)SYMBOLS =LIBS = \ $(FFMPEG_LIBS) \ $(GLIB_LIBS) \ -lpthreadall: clean defaultdefault:$(CC) $(CFLAGS) $(INC_DIRS) $(SYMBOLS) $(SRC_FILES) -o $(TARGET) $(LIBS)clean:rm -rf *.o main.out
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
原文中没有rtmpserver的内容,我使用的是开源的crtmpserver
附上github https://github.com/j0sh/crtmpserver
把源码Clone下来,按照README中的内容编译即可
After you compiled the package, it's time to test it. Run the following command:./crtmpserver/crtmpserver crtmpserver/crtmpserver.lua屏幕上打印出蓝色字体的列表就说明成功
然后是编辑文件 crtmpserver/crtmpserver.lua (路径 /builders/cmake)
在 flvplayback 中添加
{
ip="0.0.0.0",
port=7776,
protocol="inboundRtmp"
},
保存之后
Run the following command:
./crtmpserver/crtmpserver crtmpserver/crtmpserver.lua打印的蓝色字体列表中有如下内容表示成功
+---+---------------+-----+-------------------------+-------------------------+
|tcp| 0.0.0.0| 7776| inboundRtmp| flvplayback|
+---+---------------+-----+-------------------------+-------------------------+
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
然后再回到前面 out_filname 的URL
out_filename ="rtmp://127.0.0.1:7776/flvplayback/demo";
127.0.0.1 表示本机地址
7776 是刚才为crtmpserver添加的一个rtmp通道的端口号
flvplayback 是crtmpserver中的“实例” (叫实例可能不妥,但不知道该如何称呼)
demo (不其清楚该叫什么)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
到推流这一步我遇到了两个问题,都是通过这篇文章解决的,就不详说了
“CrtmpServer支持Android与IOS进行RTMP直播遇到的_checkbw问题"
http://blog.csdn.net/fengyily/article/details/34422913
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
先在一个终端中运行
./crtmpserver/crtmpserver crtmpserver/crtmpserver.lua在另一个终端中运行
./main.out
即可看到推流成功
在另一个终端中运行
ffplay "rtmp://localhost/flvplayback/demo"
即可播放视频
- 学习大神的“ 最简单的基于FFmpeg的推流器(以推送RTMP为例) ” 心得总结
- 最简单的基于FFmpeg的推流器(以推送RTMP为例)
- 最简单的基于FFmpeg的推流器(以推送RTMP为例)
- 最简单的基于FFmpeg的推流器(以推送RTMP为例)
- 最简单的基于FFmpeg的推流器(以推送RTMP为例)
- 最简单的基于FFmpeg的推流器(以推送RTMP为例)
- 最简单的基于FFmpeg的推流器(以推送RTMP为例)
- 最简单的基于FFmpeg的推流器(以推送RTMP为例)
- 最简单的基于FFmpeg的推流器(以推送RTMP为例)
- 最简单的基于FFmpeg的推流器(以推送RTMP为例)
- 最简单的基于FFmpeg的推流器(以推送RTMP为例)
- 最简单的基于FFmpeg的推流器(以推送RTMP为例)
- 最简单的基于FFmpeg的推流器(以推送RTMP为例)
- 最简单的基于FFmpeg的推流器(以推送RTMP为例)
- 最简单的基于FFmpeg的推流器(以推送RTMP为例)
- 基于FFmpeg的推流器 [本地文件推送至RTMP]
- 最简单的基于Flash的流媒体示例:RTMP推送和接收(ActionScript)
- 最简单的基于Flash的流媒体示例:RTMP推送和接收(ActionScript)
- 修改浏览器user-agent
- static函数与普通函数
- 为IDOC创建tRFC连接
- Element.getNodeValue()值为null的问题分析
- 设计原则-单一职责原则
- 学习大神的“ 最简单的基于FFmpeg的推流器(以推送RTMP为例) ” 心得总结
- 使用Linq、ef查询全表的语句
- 从高考到程序员
- 利用Ubuntu将c++文件生成.so库
- kotlin习惯用法——kotlin官方文档学习
- WPF之跳动字体链接
- Leetcode Unique Paths
- 分布式 Spring Cloud 基于 Spring Boot 开发一整套
- TexLive runs slow on Windows machine, TexLive编译的很慢