rtmp推流和拉流

提前说明,文章所用主要摘自网络,本文只是整合。鉴于来源太多,不进行引用说明

NGINX

安装nginx及安装nginx模块

nginx下载地址

http://nginx.org/download/nginx-1.20.1.tar.gz

nginx-rtmp模块

组件下载地址

https://github.91chifun.workers.dev/https://github.com//arut/nginx-rtmp-module/archive/refs/tags/v1.2.1.tar.gz

注:模块版本号必须等于nginx版本号

解压和安装

tar -zxvf ${nginx}/nginx.tar.gz
tar -zxvf ${nginx-module}/nginx-rtmp.tar.gz
cd ${nginx}/nginx
./configure --add-module=${nginx-module}/nginx-remp.tar.gz
make && make install
cd /usr/lcoal/nginx/conf
vim nginx.conf
# 修改nginx.conf,具体修改信息下文叙述
cd ..
./sbin/nginx -c conf/nginx.conf

nginx配置

#user  nobody;
worker_processes  1;error_log  logs/error.log;
error_log  logs/error.log  notice;
error_log  logs/error.log  info;pid        logs/nginx.pid;events {worker_connections  1024;
}rtmp {server {listen 1935;chunk_size 4096;application play {play /usr/local/nginx/html/play;}application /hls {live on;hls on;hls_path /usr/local/nginx/html/hls;hls_fragment 1s;hls_playlist_length 4s;}application /live {live on;}application rtmp {live on;}}
}http {include       mime.types;default_type  application/octet-stream;#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#gzip  on;server {listen       80;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location /stat {rtmp_stat all;rtmp_stat_stylesheet stat.xsl;}location /stat.xsl {# XML stylesheet to view RTMP stats.# Copy stat.xsl wherever you want# and put the full directory path hereroot /usr/local/nginx-rtmp-module;}location /hls {# Serve HLS fragmentstypes {application/vnd.apple.mpegurl m3u8;video/mp2t ts;}root /usr/local/nginx/html;add_header Cache-Control no-cache;}location / {root   html;index  index.html index.htm;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {#    listen       8000;#    listen       somename:8080;#    server_name  somename  alias  another.alias;#    location / {#        root   html;#        index  index.html index.htm;#    }#}# HTTPS server##server {#    listen       443 ssl;#    server_name  localhost;#    ssl_certificate      cert.pem;#    ssl_certificate_key  cert.key;#    ssl_session_cache    shared:SSL:1m;#    ssl_session_timeout  5m;#    ssl_ciphers  HIGH:!aNULL:!MD5;#    ssl_prefer_server_ciphers  on;#    location / {#        root   html;#        index  index.html index.htm;#    }#}}

解释

nginx.conf->rtmp模块配置详解

Application 创建一个RTMP应用,这里有点区别于http的location
Timeout 60s
stocket超时,可以配合keepalive和ping值来实现不让服务器端长期处于监听连接客户端状态,实现快速关掉socket
Ping 3m
ping_timeout 30s
RTMP ping用于检查活动连接的协议。发送一个特殊的包远程连接,在ping_timeout指定时间内期待一个回复,如果没有收到回复,连接断开
max_streams 32
设置RTMP流的最大数目,单一流数据最大限制,一般默认的32就可以了
ack_window 5000000
设置RTMP窗口的大小
chunk_size 4096
数据块大小 设置值越大CPU负载就越小
max_queue
最大队列数,一般默认即可
max_message 1M
输入数据消息的最大大小。所有输入数据消息都会保存在内存中,等待完成流媒体转发。在理论上传入的消息可以是非常大,对服务器稳定性影响较大,所以一般默认即可。
out_queue
out_cork
Buflen 5s
设置默认缓冲区长度。通常客户端发送播放前RTMP set_buflen命令并重置该设置访问控制
Access
Allow/deny
允许来自指定地址或者所有地址发布/播放
Allow public 127.0.0.1
Deny publish all;
Allow play 192.168.0.0/24
Deny play all;Exec命令
Exce
exec_options on;
启动一些exec指令选项,通过一些exec事件来干预整个RTMP流
可以仔细一些外部编解码功能
Exec ffmpeg -i rtmp://localhost?src/$name -vcodec libx264 -vprofile baseline -g 10 -s 300x200 -acodec libfaac -ar 44100 -ac 1 -f flv rtmp://localhost/hls/$name 2>> /var/log/ffmpeg-$name.log;
Exce_statc
类似exce,属于静态命令,不支持传递上下文参数
Exec_kill_signal term;
Exec_kill_signal user1;
Exec_kill_signal 3;
Exec_pull
Exec_push
Exec_publish
指定与参数外部命令要在发布事件执行。
Exec_play
指定与要在打开事件执行外部命令
Exec_play_done
指定要在打开完成事件执行外部命令
Exec_publish_done
Exec_record_done
例子
exec_play bash -c “echo $addr $pageurl >> /tmp/clients”
Exec_publish base -c “echo $addr $flashver >> /tmp/publishers”
转录
Exec_record_done ffmpeg -y -i $path -acodec libmp31ame -ar 44100 -ac 1 -vcodec libx264 $dirname/$basename.mp4Live 模式
Live on
切换直播模式,即一对多广播
Meta on/copy/off
奇幻发送元数据到客户端 默认on
Interleave on/off
切换交叉模式。在该模式下,音视频会在同一个RTMPchunk流中传输。默认为off
wait_key on|off
使视频流从一个关键帧开始,默认为off
wait_video on|off
在一个视频帧发送前禁用音频。默认off
通过wait_key/wait_video进行组合以使客户端可以收到具有所有其他数据的视频关键帧。但这样会增加连接延迟。不过可以通过编解码器中调整关键帧间隔来减少延迟。
Publish_notify on
发送NetStream.Publish.Start和NetStream.Publish.Stop给用户,默认off
Drop_idle_publisher 10s
终止指定时间内闲置(没有音频、视频)的发布连接,默认为off。注意这个仅仅对于发布模式的连接起作用(发送publish命令之后)
Sync 10ms
同步音视频流。如果用户带宽不足以接收发布率,服务器会丢弃一些帧。这将导致同步问题。当时间戳差超过sync指定值,将会发送一个绝对帧来解决这个问题,默认为300ms
Play_restart off
使nginx-rtmp能够在发布启动或者停止时发送NetStream.Play.Start 和 NetStrem.Play.Stop到每个用户。如果关闭的话,那么每个用户就只能在回放的开始结束时收到该通知了。默认为onRecord 模式
Record off|all|audio|video|keyframes|manual
切换录制模式,流可以被记录到flv文件
Off 不录制
All 录制音频和视频
Audio
Video
Keyframes 只录制关键视频帧
Manual 不自动启动录制,使用控制接口来进行启动和停止
Record_path /tmp/rec
指定录制的flv文件存放目录
Record_suffix -%d-%b-%y-%T.flv
录制后缀strftime格式
Record_unique on|off
是否添加时间戳到录制文件,防止文件被覆盖,默认off
record_append on|off
切换文件附加模式。开启后,录制时将新数据附加到旧文件后面。默认off
record_lock on|off
锁定文件,调用系统的fcntl
record_max_size 128K
设置录制文件的最大值
Record_max_frames 2
设置每个录制文件的视频帧最大数量
Record_interval 1s/15m
在这个指令指定的时间之后重启录制。默认off设置为0表示录制中无延迟。如果record_unique为off时所有的记录都会被写到同一个文件中。否则就会以时间戳区分在不同文件
Record_notify on|off
奇幻当定义录制启动或者停止文件时发送NetStream.Record.Start和NetStream.Record.Stop状态信息onStatus到发布者。应用
Application rtmp{
Live on;
Record all;
Record_path /var/rec;Recorder audio{
Record audio;
Record_suffix .audio.flv;
}
Recorder chunked{
Record all;
Record_interval 15s;
Record_path /var/rec/chunked;
}
}
创建录制块。可以在单个application中创建多个记录 。VOD媒体
Play dir|http://loc
播放指定目录或者HTTP地址的flv或者mp4文件。注意HTTP播放是要在整个文件下载完后才开始播放。同一个play可以播放多个视频地址(用于负载)。MP4格式要在编解码都被RTMP支持才可以播放。一般常见的就是H264/AAC
Application vod{
Play /var/flvs;
}
Application vod_http{
Play http://localhost/vod;
}
Play_temp_path /www
设置远程VOD文件完全下载之后复制于play_temp_path之后的路径。空值的话禁用此功能。
Play_local_path dir
在播放前设置远程存储VOD文件路径,默认/tmp
Play_local_path /tmp/videos;
Paly /tmp/videos http://localhost/videos
表示播放视频,先播放本地缓存,如果没有的话,从localhost/videos下载到本地/tmp/videos后,在进行播放Relay模式
Pull url [key=value]
创建pull中继。主要是从远程服务器拉取流媒体。并进行重新发布。
Url语法 [rtmp://]host[:port][/app[/playpath]] 如果application找不到那么将会使用本地application名,如果找不到playpath那么久用当前流名称。
参数如下(使用Key=Value方式)
app 明确application名
Name 捆绑到relay的bending流名称。如果为空,那么会使用application中所有本地流
tcUrl
pageUrl
swfUrl
flashVer
playPath
Live
Start
Stop
Static
Pull rtmp://cdn.example.com/main/ch?id=1234 name=channel;
Push url [key=value]
与pull类似,只是push推送发布流到远程服务器。
Push_reconnect 1s
在断开连接后,在push重新连接钱等待的时间,默认3秒
Session_relay on;
切换会话relay模式。在这种情况下关闭时relay销毁。Notify 模式
这个功能主要是提供HTTP回调。当发送一些连接操作是,一个HTTP请求异步发送。命令处理会被暂停挂起,知道它返回结果代码。当HTTP返回2xx成功状态码时,RTMP会话继续。3xx状态码会使RTMP重定向到另一个从HTTP返回头获取到的application,否则连接丢失。其他状态码,连接断开。目前用来做简单的鉴权。
On_connect url
设置HTTP连接回调。当客户分发连接命令时。
例子:
On_connect http://localhost/my_auth;
Location /on_connect{
If($arg_flashver != “my_secret_flashver”){
Rewrite ^.*$ fallback?permanent;
}
}
On_play url
设置HTTP播放回调。分发客户分发播放命令时。
http {
Location /redirect {
Rewrite ^.*$ newname?permanent;
}
}
Rtmp{
Application myqpp{
Live on;
On_play http://localhost/redirect;
}
}
On_publish
On_doone
On_play_done
On_publish_done
On_record_done
On_update
Notify_update_timeout
设置on_update回调时间
Notify_update_strict on|off
Notify_relay_redirect on
Notify_method get
设置HTTP方法通知,默认是application/x-www-form-urlencodeed 的POST内容类型。有时候可能会需要GET方法,在nginx的http{}部分处理调用。在这种情况下可以使用arg_*变量去访问参数。
例如如果是method为get时
Location /on_play{
If($arg_pageUrl ~* localhost){
Return 200;
}
Return 500;
}HLS 模式
Hls on|off
使application 切换HLS协议直播
Hls_path /tmp/hls;
设置HLS播放列表和分段目录。这一目录必须在nginx启动前就已经存在。
Hls_fragment 15s;
设置HLS分段长度,默认5秒,这个跟直播延迟有比较大的影响
Hls_playlist_length 20m;
设置HLS播放列表长度,默认30秒。这个跟直播缓存有关。
Hls_sync time
设置HLS时间戳同步阈值。默认2ms。这个功能防止由低分辨率RTMP(1KHz)转换到高分辨率MPEG-TS(90KHz)之后出现的噪音。
Hls_continuous on|off
切换HLS连续模式,默认off。
Hls_nested on|off
切换HLS嵌套模式。默认off。
Hls_cleanup on|off;
切换HLS清理。默认onAccessLog日志
Access_log off|path [format_name]
Log_format new_format ‘$remote_addr’;
Access_log logs/rtmp_access.log new_format;
Log_format 指定日志格式
创建指定的日志格式。日志格式看起来很像 nginx HTTP 日志格式。日志格式里支持的几个变量有:
* connection - 连接数。
* remote_addr - 客户端地址。
* app - application 名。
* name - 上一个流名。
* args - 上一个流播放/发布参数。
* flashver - 客户端 flash 版本。
* swfurl - 客户端 swf url。
* tcurl - 客户端 tcUrl。
* pageurl - 客户端页面 url。
* command - 客户端发送的播放/发布命令:NONE、PLAY、PUBLISH、PLAY+PUBLISH。
* bytes_sent - 发送到客户端的字节数。
* bytes_received - 从客户端接收到的字节数。
* time_local - 客户端连接结束的本地时间。
* session_time - 持续连接的秒数。
* session_readable_time - 在可读格式下的持续时间。
默认的日志格式叫做 combined。这里是这一格式的定义:
$remote_addr [$time_local] $command "$app" "$name" "$args" -
$bytes_received $bytes_sent "$pageurl" "$flashver" ($session_readable_time)Limits限制
max_connections number;
设置rtmp引擎最大连接数,默认offApplication hls{
Live on;
Hls on;
Hls_path /tmp/hls;
Hls_fragment 15s;
}

推流工具

OBS

下载地址

https://cdn-fastly.obsproject.com/downloads/OBS-Studio-27.0.1-Full-Installer-x64.exe

安装过程略

推流设置

在这里插入图片描述
串流密钥即为该流的名

JAVACV

pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>RTMP-practive</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platform</artifactId><version>1.5.2</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><phase>package</phase><goals><goal>repackage</goal></goals></execution></executions><configuration><includeSystemScope>true</includeSystemScope><mainClass>com.me.rtmp.util.ConvertVideoPacket</mainClass></configuration></plugin></plugins></build>
</project>

运行demo

package com.me.rtmp.util;import org.bytedeco.ffmpeg.avcodec.AVPacket;
import org.bytedeco.ffmpeg.avformat.AVFormatContext;
import org.bytedeco.ffmpeg.global.avcodec;
import org.bytedeco.ffmpeg.global.avutil;
import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.FFmpegFrameRecorder;
import org.bytedeco.javacv.FFmpegLogCallback;
import org.bytedeco.javacv.FrameRecorder;import java.io.IOException;
import java.util.HashMap;
import java.util.Map;/*** 转换流** @author admin*/
public class ConvertVideoPacket {FFmpegFrameGrabber grabber = null;FFmpegFrameRecorder record = null;int width = -1, height = -1;// 视频参数protected int audiocodecid;protected int codecid;protected double framerate;// 帧率protected int bitrate;// 比特率/*** 选择视频源.*/public ConvertVideoPacket from(String src) throws Exception {// 采集/抓取器grabber = new FFmpegFrameGrabber(src);if(src.indexOf("rtsp")>=0) {grabber.setOption("rtsp_transport","tcp");}grabber.start();// 开始之后ffmpeg会采集视频信息,之后就可以获取音视频信息if (width < 0 || height < 0) {width = grabber.getImageWidth();height = grabber.getImageHeight();}// 视频参数audiocodecid = grabber.getAudioCodec();return this;}/*** 选择输出.*/public ConvertVideoPacket to(String out) throws IOException {// 录制/推流器record = new FFmpegFrameRecorder(out, width, height);record.setGopSize(2);record.setFrameRate(framerate);record.setVideoBitrate(bitrate);AVFormatContext fc = null;if (out.indexOf("rtmp") >= 0 || out.indexOf("flv") > 0) {// 封装格式flvrecord.setFormat("flv");record.setAudioCodecName("aac");fc = grabber.getFormatContext();}record.start(fc);return this;}/*** 转封装.*/public ConvertVideoPacket go() throws IOException {long err_index = 0;//采集或推流导致的错误次数test//连续五次没有采集到帧则认为视频采集结束,程序错误次数超过1次即中断程序for(int no_frame_index=0;no_frame_index<5||err_index>1;) {AVPacket pkt=null;try {//没有解码的音视频帧pkt=grabber.grabPacket();if(pkt==null||pkt.size()<=0||pkt.data()==null) {//空包记录次数跳过no_frame_index++;continue;}//不需要编码直接把音视频帧推出去//如果失败err_index自增1err_index+=(record.recordPacket(pkt)?0:1);avcodec.av_packet_unref(pkt);}catch (Exception e) {//推流失败err_index++;}}return this;}public static void main(String[] args) throws Exception, IOException {//运行,设置视频源和推流地址new ConvertVideoPacket().from(args[0]).to(args[1]).go();}
}

注意事项

  • 不能修改文件后缀
  • 编码格式必须为H264
  • 视频格式FL测试成功的
  • to()的地址为nginx本机测试成功

拉流工具

VLC

下载地址

https://plug-mirror.rcac.purdue.edu/vlc/vlc/3.0.14/win32/vlc-3.0.14-win32.exe

安装过程略

打开网络串流,填写流的路径/${流名}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/27404.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用nginx进行rtmp直播推流拉流

使用nginx进行rtmp直播推流拉流 现在社会&#xff0c;直播越来越普通&#xff0c;网红流量社会&#xff0c;到底直播是怎么进行的呢&#xff0c;我们来尝试在本地搭建直播环境 搭建服务器 服务器我们选用高稳定性、高并发的web服务器nginx&#xff0c;利用nginx中的rtmp模块进…

【视频】使用VLC采集摄像头,以RTSP协议发送流到网络上

【目录】郭老二博文之:图像视频汇总 1、VLC官网 http://www.videolan.org/ 1.1 VLC3.0.1搭建失败 本人使用VLC3.0.1,搭建失败,总报无法打开URL 1.2 VLC2.1.5搭建成功 VLC2.1.5官网地址及下载地址 www.videolan.org/vlc/releases/2.1.5.html http://get.videolan.org/v…

视频推流与拉流

视频推流拉流概念&#xff0c;我认为这个哥们的图挺不错 概念 推流 推流&#xff0c;指的是把采集阶段封包好的内容传输到服务器的过程。 主流的推送协议和优缺点 RTMP RTMP是Real Time Messaging Protocol&#xff08;实时消息传输协议&#xff09;的缩写&#xff0c;是Ado…

视频-摄像机-推流

本文主要介绍使用 WVPZLMediaKitMediaServerUI 实现通过 GB28181 进行海康、大华、宇视等品牌的 IPC、NVR 、DVR 接入&#xff0c;完成摄像头监控播放&#xff0c;控制&#xff0c;录制。 一、概念 IPC是&#xff08;IP Camera 即网络摄像机&#xff09;缩写&#xff0c;由网…

RTP协议转发视频流

RTP转发 做完上次的读取摄像头之后&#xff0c;项目需要将视频转发给客户端&#xff0c;所以研究了下RTP并且做了一个小程序测试功能&#xff0c;现在分享出来。 原料&#xff1a;VS2017&#xff0c;RTP.NET&#xff0c;摄像头 语言&#xff1a;C# 标签&#xff1a;EmguCV&…

实时视频流播放 和 流 推流器

ffmpeg学习&#xff08;二&#xff09; 通过rtsp获取H264裸流并保存到mp4文件 顾文锦 2014-9-24 11:06:51 阅读(2853) 评论(0) 本篇将使用上节http://www.cnblogs.com/wenjingu/p/3977015.html中编译好的库文件通过rtsp获取网络上的h264裸流并保存到mp4文件中。 1、VS2010建…

RTMP推流平台/视频直播点播分析平台/人脸识别系统EasyDSS如何实现RTMP负载均衡?

负载均衡实际上是我们集群的时候提到的一个概念&#xff0c;作为有集群需要的视频直播点播平台EasyDSS&#xff0c;我们在实现多路推流的时候&#xff0c;也需要做到RTMP负载均衡。如何在EasyDSS上实现RTMP负载均衡将是我们在本文中主要讨论的问题。 负载均能能够提供一种廉价、…

基于Gstreamer的实时视频流的分发

1 Overview Gstreamer是一款功能强大、易扩展、可复用的、跨平台的用流媒体应用程序的框架。 该框架大致包含了应用层接口、主核心框架以及扩展插件三个部分。 Fig 1.0Gstreamer 应用层接口主要是给各类应用程序提供接口如&#xff1a;多媒体播放器、流媒体服务器、视频编辑…

ChatGPT还没玩明白,自主人工智能已经来了

Datawhale干货 最新&#xff1a;AutoGPT&#xff0c;来源&#xff1a;机器之心 OpenAI 的 Andrej Karpathy 都大力宣传&#xff0c;认为 AutoGPT 是 prompt 工程的下一个前沿。 近日&#xff0c;AI 界貌似出现了一种新的趋势&#xff1a;自主人工智能。 这不是空穴来风&#x…

炸裂!Hugging Face 发布重磅更新,人手一个 AutoGPT!

公众号关注 “GitHubDaily” 设为 “星标”&#xff0c;每天带你逛 GitHub&#xff01; Hugging Face&#xff0c;作为 AI 开源圈最为知名的「网红」创业公司&#xff0c;成立仅几年&#xff0c;便在 GitHub 开源了诸多实用开源项目&#xff0c;受到了不少开发者的赞赏。 其中影…

这对情侣火了,你猜是因为啥

注意看&#xff0c;这张情侣照在网上转疯了&#xff1a; —— 本文转载自量子位 旧厂街风格&#xff0c;带着浓浓90年代氛围感&#xff0c;但是&#xff0c;他俩一夜爆火的原因&#xff0c;你可能想象不到—— 这二位并不是真人&#xff01;而是由AI一键生成的&#xff01; &am…

OpenAI 发布 GPT-4 ,功能炸裂!网友:真人工智能更近一步!

编辑&#xff1a;金磊 梦晨转自&#xff1a;量子位 | 公众号 QbitAI 一觉醒来&#xff0c;万众期待的GPT-4&#xff0c;它来了&#xff01; OpenAI老板Sam Altman直接开门见山地介绍说&#xff1a; 这是我们迄今为止功能最强大的模型&#xff01; 有多强&#xff1f; 根据OpenA…

Redis Plus 来了,性能炸裂!

点击关注公众号&#xff0c;Java干货及时送达 学习 Spring Cloud 微服务的正确姿势&#xff01; 用上 ChatGPT 啦&#xff0c;强的离谱&#xff01; 博客园在绝境求生。。 来源&#xff1a;https://developer.aliyun.com/article/705239 1 什么是KeyDB&#xff1f; KeyDB是Redi…

OpenAI 重磅发布 GPT-4 !ChatGPT 炸裂大升级,直接能考上哈佛,抢先体验后我慌了...

公众号关注 「奇妙的 Linux 世界」 设为「星标」&#xff0c;每天带你玩转 Linux &#xff01; ​ 一觉醒来&#xff0c;万众期待的GPT-4&#xff0c;它来了&#xff01; OpenAI老板Sam Altman直接开门见山地介绍说&#xff1a; 这是我们迄今为止功能最强大的模型&#xff01; …

QQ、微信、lol自动发消息工具

写了一个电脑自动发消息的工具&#xff0c;脱离双手&#xff0c;让我们聊天更方便跟简洁&#xff01; 电脑软件。 自动发消息&#xff0c;双手离开键盘&#xff01;能设置次数和发送间隔。 ​​​​​​链接在这&#xff1a;阿里云盘分享提取码&#xff1a;51ar 一定要先看…

AIGC的下一步,AIGA改写企业软件

▎在AIGC产品里&#xff0c;我们已经证明了生成式自动化在大模型和超级自动化时代是完全可行的。 编者按&#xff1a; 贾岿博士是弘玑Cyclone首席产品官&#xff0c;曾担任UiPath全球研发中心高级研发总监、微软Azure云计算主任架构师。弘玑Cyclone 是一家专注于RPA的厂商&…

zblog仿站必看!附加zblog所有必备标签调用规则和中文说明

Z-Blog是一个开源的PHP博客程序&#xff0c;具有轻量、简洁、易用等特点&#xff0c;非常适合新手搭建个人博客。以下是Z-Blog仿站教程&#xff0c;包含了基本的代码示例。 1. 下载Z-Blog程序并安装 首先&#xff0c;需要到官网下载Z-Blog程序&#xff0c;解压缩后上传到服务器…

老板用了ChatGPT后,决定扩招40%程序员...

作者| Mr.K 编辑| Emma 来源| 技术领导力(ID&#xff1a;jishulingdaoli) 陆奇在最近的分享中提出一个观点&#xff1a;“生成式AI&#xff0c;不会抢程序员的饭碗&#xff0c;相反会增加程序员的岗位。” 理由很简单&#xff0c;AI大幅提升程序员的工作效率&#xff0c;同样…

只需要两步就能快速接入GPT

缘起 最近一个朋友提出&#xff0c;让我出个关于如何快速接入GPT的教程&#xff0c;今天就给大家安排上。 需要的工具 经过实测&#xff0c;这是迄今为止最便捷的接入方式&#xff0c;而且亲测有效。 首先&#xff0c;第一步你需要下载最新版的微软Edge浏览器&#xff0c;去…

强推宝藏网站

最近还是有很强烈的感受&#xff0c;方法大于努力。最近就整理了一下大学期间比较好用的网站&#xff0c;也陪我度过了一段时间了&#xff0c;排名不分先后&#xff0c;把压箱底的东西拿出来了。 ChatGPT WeTab 新标签页https://www.wetab.link/ 这个就不用多说&#xff0c;最…