1 Star 0 Fork 0

老衲不出家 / LQFStreamer

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
BSD-3-Clause

LQFStreamer

项目特点

  • 基于C++11开发,避免使用裸指针
  • 支持桌面录制,声卡和麦克风录制
  • 支持RTMP推流
  • 支持RSP推流(在开发中)
  • 支持桌面录制保存到本地
  • 目前只支持Windows平台,后续再扩展到Linux平台

编译平台

visual studio 2015 + win10 ,目前只编译了win32的lib或dll,所以请使用x86 debug模式进行编译。

集成的第三方库

  • fdk-aac AAC编码库
  • x264 H264编码库
  • FFmpeg 用来记录 、转换数字音频、视频,并能将其转化为流的开源计算机程序,它包括了目前领先的音/视频编码库libavcodec。
  • librtmp 开源的RTMP库,支持推流和拉流
  • openssl SSL 密码库工具
  • portaudio 跨平台的音频播放和录音库

功能清单

  • 屏幕录制
  • 声音录制
  • RTMP推流
  • MP4文件保存
  • Streamer支持RTP推送视频
  • MediaPlayer支持RTP接收视频并播放
  • MediaPlayer支持RTP接收音频并播放

后续任务

  • 完善RTMP推流的异常处理
  • 集成支持RTSP推流
  • 集成RTMP服务器,供局域网客户端之间访问。
  • RTSP推流器实现
  • RTSP播放器实现
  • RTMP播放器实现

编译要求

  • vs2015或以上

使用方法

  1. dll目录说明
  • 运行程序需要的dll文件,请拷贝到编译目录(Debug目录)
  1. 推送rtmp
  • 启动桌面和声卡的采集
  • 设置RTMP推流链接
  • 启动RTMP推流
  1. 录制MP4
  • 启动桌面和声卡的采集
  • 启动MP4视频录制
  1. 目前的应用已在main.cpp里

测试

RTP接收视频码流

使用MediaPlayer接收码流,使用ffmpeg进行推送

  1. 使用ffmpeg进行推送

ffmpeg -re -i out.h264 -vcodec libx264 -f rtp rtp://192.168.100.67:9000>test.sdp. 192.168.100.67为自己的ip地址

  1. 使用ffplay确认推流没有问题

ffplay -protocol_whitelist "file,http,https,rtp,udp,tcp,tls" test.sdp

  1. 使用MediaPlayer进行拉流播放

需要修改RTP_Player.cpp中的 RTP_PlayerTest函数的listen_port端口为9000 可以接收ffmpeg推送的码流。

  1. 使用Stream去推送桌面捕获的码流,配置main.cpp中的main_rtp_send_video()的dest_ip设置IP地址,以及dest_port端口。

RTP接收音频码流

  1. MediaPlayer中RTP_AAC_Receiver.cpp的RTP_AAC_Receiver_Test函数,用来测试接收音频码流,目前只支持AAC码流,默认支持的是LC AAC,44.1KHz,2通道。
  2. 使用ffmpeg进行推送码流,统一设置输出为44.1kHz,2通道
// 
// 推送AAC文件
ffmpeg -re -i out.aac -c:a  aac -flags +global_header -ar 44100 -ac 2  -f rtp rtp://192.168.100.61:9004>audio.sdp

// 将MP3转成AAC格式
ffmpeg -re -i buweishui.mp3 -c:a  aac -flags +global_header -ar 44100 -ac 2  -f rtp rtp://192.168.100.61:9004>audio.sdp

// 推送音视频文件中的audio
ffmpeg -re -i dp19.mp4 -vn -c:a  aac -flags +global_header -ar 44100 -ac 2  -f rtp rtp://192.168.100.61:9004>audio.sdp
  1. 测试的时候可以先用ffplay进行播放测试
ffplay -protocol_whitelist "file,http,https,rtp,udp,tcp,tls" audio.sdp

版权问题

本项目自有代码可以自由应用于各自商用、非商业的项目。 但是本项目也使用了部分其他的开源代码,在商用的情况下请自行替代或剔除; 由于使用本项目而产生的商业纠纷或侵权行为一概与本项项目及开发者无关,请自行承担法律风险。

联系方式

BSD 3-Clause License Copyright (c) 2020, 老衲不出家 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

简介

暂无描述 展开 收起
BSD-3-Clause
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/LaoNaBuChuJia/LQFStreamer.git
git@gitee.com:LaoNaBuChuJia/LQFStreamer.git
LaoNaBuChuJia
LQFStreamer
LQFStreamer
master

搜索帮助