下载服务器端

git clone https://github.com/Coolpy7/Coolpy7.git && cd Coolpy7

解压文件

unzip go_build_Coolpy7_go_linux.zip

提权

chmod -R 777 go_build_Coolpy7_go_linux

启动Coolpy7

./go_build_Coolpy7_go_linux

后台运行:
(/home/Coolpy7/go_build_Coolpy7_go_linux &)
(/home/Coolpy7/go_build_Coolpy7_ws_go_linux &)

启动成功后会打印如下信息,即说明服务端已正常启动,host于1883端口,请确保相关防火墙配置可用

2018/10/29 12:59:55 Coolpy7 tcp is listening on [::]:1883

测试:
https://github.com/Coolpy7/coolpy7_benchmark
git clone https://github.com/Coolpy7/coolpy7_benchmark.git
cd coolpy7_benchmark/bin

//sub test
./go_build_cp7_bench_sub_go_linux -workers=4000000 -cid=tqy -topic=null -qos=0 -url=tcp://103.196.127.19:1883 -keepalive=60000s -clear=true

//pub test
./go_build_cp7_bench_pub_go_linux -cid=cp7 -clear=true -keepalive=300s -qos=0 -s=256 -topic=a/b/c -url=tcp://103.196.127.19:1883 -workers=500

本应用示例使用Coolpy7作为Mqtt服务器并启用Websocket代理完美支持高并发大流量即时通过能力,本示以即时通信聊天为为例。还可以应用到其他软件应用如:网页客服系统、网站信息通知、网页即时通信系统、网页游戏等等

MQTT服务端程序(Coolpy7)
WebSocket代理服务端 (Coolpy7_ws)
Html5聊天室前端

Coolpy7核心服务运行后会自行构当前目录下的data文件夹,此文件夹存放MQTT运行期所需求持久化的数据信息,使用的是开源项目 https://github.com/jacoblai/yiyidb,支持10亿级秒op的高性能数据库,数据库内核使用的是Leveldb技术。

下载服务器端

git clone https://github.com/Coolpy7/Coolpy7.git && cd Coolpy7

解压文件

unzip go_build_Coolpy7_go_linux.zip

提权

chmod -R 777 go_build_Coolpy7_go_linux

启动Coolpy7 启动参数

l 当前服务Host地址 (默认为:1883即本地1883端口,此参数一般默认即可,无需配置)

a 连接接入调度器最大线程,此值可防止暴力连接攻击,对已连接客户端进行优先保护 (默认值128)

./go_build_Coolpy7_go_linux

启动成功后会打印如下信息,即说明服务端已正常启动,host于1883端口,请确保相关防火墙配置可用

2018/10/29 12:59:55 Coolpy7 tcp is listening on [::]:1883
一般需为程序提权才可以运行Linux服务,指令:chmod -R 777 go_build_Coolpy7_go_linux

运行Coolpy7 WS代理服务

此功能即为Coolpy7核心服务提供WebSocket接入功能。通过ssh进入服务器192.168.200.203,并确保你已经按照 https://coolpy7.gitbook.io/coolpy7book/kai-shi-shi-yong/start 配置服务器操作系统的网络优化配置。

千万级WebSocket代理服务器
支持防爆力攻击

下载服务器端

git clone https://github.com/Coolpy7/Coolpy7.git && cd Coolpy7

解压文件

unzip go_build_Coolpy7_ws_go_linux.zip

提权

chmod -R 777 go_build_Coolpy7_ws_go_linux

启动Coolpy7 WS Poxy

r启动参数 CP7核心服务器所在ip或域名 (例:core.coolpy.net:1883 or 192.168.200.201:1883)

l启动参数 当前服务Host地址 (默认为:8083即本地8083端口,此参数一般默认即可,无需配置)

./go_build_Coolpy7_ws_go_linux

启动成功后会打印如下信息,即说明服务端已正常启动,host于8083端口,请确保相关防火墙配置可用

2018/10/29 12:59:55 upstream 192.168.200.201:1883 ok
2018/10/29 12:59:55 Coolpy7 ws is listening on [::]:8083
运行Html5前端聊天室应用示例

下载开源项目:https://github.com/Coolpy7/Cp7Chat
修改连接地址为上一步服务器端ip和端口(具体ip和端口按阁下真实环境,全套程序运行于本机可统一使用127.0.0.1为连接地址)
通过Webstorm等web调试工具运行代码
以WebStorm为例

1.下载源代码
填写git地址下载源代码

2.修改连接信息本示例以本机运行整套系统为例输入127.0.0.1,端口号8083,假设把服务器端Coolpy7和Coolpy7-ws已经运行于阿里云之类的云服务器上改写为服务器的公网IP地址和端口即可,如果已绑定域名可直接填写域名如: test.coolpy.net
代码位于chat.html第55行

3.修改完毕后选中工程中的index.html点击
至此已完成运行部署。以下是测试运行演示

项目开源信息
服务器端开源地址: https://github.com/Coolpy7
聊天室前端开源地址:https://github.com/Coolpy7/Cp7Chat

1、安装 java sdk
https://www.oracle.com/java/technologies/downloads/#java8-windows

2、服务端安装 gitblit:
2.1 http://gitblit.github.io/gitblit/ 下载最新版本
2.2 修改配置 data\defaults.properties,其中目录配置时注意用正斜杠!

  • git.repositoriesFolder = C:/GitRepository
  • server.httpsPort = 8821
  • server.httpBindInterface = 0.0.0.0
    // - server.certificateAlias = domain.com
  • git.sshPort = 8822

2.3 修改服务配置 installService.cmd

  • SET ARCH=amd64
  • SET CD=D:\tools\gitblit-1.9.1
  • 清空启动参数:--StartParams="" ^

2.4 以管理员身份运行 installService.cmd 安装服务,并到服务中启动服务。

3、windows 客户端:

git clone ssh://admin@domain.com:8822/proj.git

如果出现证书问题报错 SSL certificate problem: self signed certificate in certificate chain,可以设置不认证:

git config --global http.sslVerify false 

如果 ssh 错误提示 no matching host key type found. Their offer: ssh-rsa,是因为 .ssh/known_hosts 下面没有相关信息,使用命令行执行一次点接受即可:

ssh admin@domain.com -p 8822

如果还不行,则 C:\Users\用户名.ssh\ 目录下增加文件:config

Host office.belltrip.net
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa

恢复本地被删除的文件
git reset --hard HEAD

修改忽略列表,改完后:

git rm -r --cached . 
git add .
git commit -am "Remove ignored files"
git pull origin master
git push origin master

查看所有配置:git config -l

分支:

git checkout -b branch    #创建分支
git checkout branch    #切换分支
git merge master    #将master合并到当前分支

合并时忽略部分文件:
建立 .gitattributes 文件,写入需要忽略的文件列表,支持通配符,跟 .gitignore 一样,只是每一行后面可以加“ merge=ours",表示 出現衝突時永遠使用我的版本,“ merge=theirs" 使用别人版本

git config --global merge.ours.driver true    #开启功能

剪切视频:
ffmpeg -ss 00:00:00 -t 00:09:23 -i fuli.mp4 -vcodec copy -acodec copy output.mp4

  • -ss 指定从什么时间开始
  • -t 指定需要截取多长时间,如果不指定,则剪切到最后
  • -i 指定输入文件

合并视频,list.txt 中,每一行一个文件,格式:file './split.mp4'
ffmpeg -f concat -i list.txt -c copy concat.mp4
如果不是MP4要重新编码:ffmpeg -f concat -i list.txt -y -c:v libx264 -strict -2 concat.mp4
另一种方式:ffmpeg -i "concat:input1.mpg|input2.mpg|input3.mpg" -c copy output.mpg

旋转视频,2种方式:
1、重新编码,很耗时,但效果最好(很多视频还能优化编码后在保留效果的前提下使文件变得更小)。其中transspose:0-逆时针旋转90度,垂直翻转;1-顺时针90度;2-逆时针旋转90度;3-顺时针旋转90度,垂直翻转。
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
2、仅仅更改元数据中的旋转设置
ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=90 output.mp4
如果希望保留源视频的日期、摄像机等详细信息,则:
ffmpeg -i input.mp4 -map_metadata 0 -metadata:s:v rotate="90" -codec copy output.mp4

将文件当做直播送至live
ffmpeg -re -i localFile.mp4 -c copy -f flv rtmp://server/live/streamName

将直播媒体保存至本地文件
ffmpeg -i rtmp://server/live/streamName -c copy dump.flv

将其中一个直播流,视频改用h264压缩,音频不变,送至另外一个直播服务流
ffmpeg -i rtmp://server/live/originalStream -c:a copy -c:v libx264 -vpre slow -f flv rtmp://server/live/h264Stream

将其中一个直播流,视频改用h264压缩,音频改用faac压缩,送至另外一个直播服务流
ffmpeg -i rtmp://server/live/originalStream -c:a libfaac -ar 44100 -ab 48k -c:v libx264 -vpre slow -vpre baseline -f flv rtmp://server/live/h264Stream

将其中一个直播流,视频不变,音频改用faac压缩,送至另外一个直播服务流
ffmpeg -i rtmp://server/live/originalStream -acodec libfaac -ar 44100 -ab 48k -vcodec copy -f flv rtmp://server/live/h264_AAC_Stream

将一个高清流,复制为几个不同视频清晰度的流重新发布,其中音频不变
ffmpeg -re -i rtmp://server/live/high_FMLE_stream -acodec copy -vcodec x264lib -s 640×360 -b 500k -vpre medium -vpre baseline rtmp://server/live/baseline_500k -acodec copy -vcodec x264lib -s 480×272 -b 300k -vpre medium -vpre baseline rtmp://server/live/baseline_300k -acodec copy -vcodec x264lib -s 320×200 -b 150k -vpre medium -vpre baseline rtmp://server/live/baseline_150k -acodec libfaac -vn -ab 48k rtmp://server/live/audio_only_AAC_48k

功能一样,只是采用-x264opts选项
ffmpeg -re -i rtmp://server/live/high_FMLE_stream -c:a copy -c:v x264lib -s 640×360 -x264opts bitrate=500:profile=baseline:preset=slow rtmp://server/live/baseline_500k -c:a copy -c:v x264lib -s 480×272 -x264opts bitrate=300:profile=baseline:preset=slow rtmp://server/live/baseline_300k -c:a copy -c:v x264lib -s 320×200 -x264opts bitrate=150:profile=baseline:preset=slow rtmp://server/live/baseline_150k -c:a libfaac -vn -b:a 48k rtmp://server/live/audio_only_AAC_48k

将当前摄像头及音频通过DSSHOW采集,视频h264、音频faac压缩后发布
ffmpeg -r 25 -f dshow -s 640×480 -i video="video source name":audio="audio source name" -vcodec libx264 -b 600k -vpre slow -acodec libfaac -ab 128k -f flv rtmp://server/application/stream_name

将一个JPG图片经过h264压缩循环输出为mp4视频
ffmpeg.exe -i INPUT.jpg -an -vcodec libx264 -coder 1 -flags +loop -cmp +chroma -subq 10 -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -flags2 +dct8x8 -trellis 2 -partitions +parti8x8+parti4x4 -crf 24 -threads 0 -r 25 -g 25 -y OUTPUT.mp4

将普通流视频改用h264压缩,音频不变,送至高清流服务(新版本FMS live=1)
ffmpeg -i rtmp://server/live/originalStream -c:a copy -c:v libx264 -vpre slow -f flv "rtmp://server/live/h264Stream live=1"

把文件转成m3u8 方法(原样拷贝)
ffmpeg -re -i /root/video.mpg -codec copy -map 0 -f segment -segment_list playlist.m3u8 -segment_list_flags +live -segment_time 10 out%03d.ts

play_url
读取rtmp流转成m3u8
ffmpeg -rw_timeout 8000000 -v verbose -i rtmp://*.com/ -force_key_frames "expr:gte(t,n_forced1)" -c:v libx264 -c:a aac -ac 1 -strict -2 -crf 20 -profile:v main -maxrate 2500k -bufsize 1835k -pix_fmt yuv420p -flags -global_header -hls_time 5 -start_number 1 -f segment -segment_list D:\rev\playlist.m3u8 -segment_list_flags +live -segment_time 5 D:\rev\out%04d.ts

将视频转码为mp4
ffmpeg -i 本地视频地址 -y -c:v libx264 -strict -2 转换视频.mp4

将mp4格式转换为ts格式
ffmpeg -y -i 本地视频.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 转换视频.ts

将ts文件进行切片
ffmpeg -i 本地视频.ts -c copy -map 0 -f segment -segment_list 视频索引.m3u8 -segment_time 5 前缀-%03d.ts

截屏保存为图片(ss后面为时间,秒为单位,0为第一侦):
ffmpeg -i C:\Video\test.mp4 -ss 0 -f image2 C\:Image\out.jpg