搭建论坛网站多长时间,wordpress邮件新文章,英孚做网络作业的网站,阿里云域名购买官网开源地址
最近增加了OpenRTPServer#xff0c; 已经修改完成一版放在了目录下#xff0c;window和linux下编译都成功了#xff0c;不过由于修改代码CMakefile 需要修改#xff0c;先放放
OpenRTP开源地址
vlc得纠错传输方式
我发现我代码写错以后#xff0c;vlc 依然能…开源地址
最近增加了OpenRTPServer 已经修改完成一版放在了目录下window和linux下编译都成功了不过由于修改代码CMakefile 需要修改先放放
OpenRTP开源地址
vlc得纠错传输方式
我发现我代码写错以后vlc 依然能够从错误的RTP包中解出关键信息 sps 和 pps 这一点vlc 确实做得前无古人后无来者由于纠错他也多费了一些资源但对于越来越强大得cpu 和 gpu 来说感觉并不是不行所以OpenRTP 需要加强包纠错能力
修改代码 桌面端口为6004 if (pkt ! NULL){bool isKeyframe pkt-flags AV_PKT_FLAG_KEY;GETALLPointAnalyseNalu(pkt-data, pkt-size, sps, spslen, pps, ppslen, se, selen, frame, framelen);uint32_t ts convertToRTPTimestamp();if (isKeyframe sps ! NULL pps!NULL){pos GETPointRemoveStartcode(sps, spslen, retlen);v_rtp_desktop.send_video(pos, retlen, ts, isKeyframe);pos GETPointRemoveStartcode(pps, ppslen, retlen);v_rtp_desktop.send_video(pos, retlen, ts, isKeyframe);}pos GETPointRemoveStartcode(frame, framelen, retlen);v_rtp_desktop.send_video(pos, retlen, ts, isKeyframe);av_packet_free(pkt);}由于RTP协议并不发送 00 00 00 01 得startcode但是我写手误将第一个sps发送写成了sps开头而不是实际探测出来得pos位置所以接收器接收不到画面。修改代码如下 v_rtp_desktop.send_video(sps, retlen, ts, isKeyframe);//改成v_rtp_desktop.send_video(pos, retlen, ts, isKeyframe);这样接收器正常接收 接收器换成端口6004正常播放。接收存储得h264文件也正常播放
区别
但vlc 在错误包得情况下探测一段时间后强力纠错将桌面放出来了 虽然有时候探测不到放不出来在尝试几次后概率百分之50以后能够播放这个佩服确实在vlc团队这上面用了心希望自己能好好向他们学习。
增加OpenRTPserver 这次增加了OpenRTPServer协议为RTMP HTTP协议websocket协议 RTP协议直传ps流RTP协议直传ts流RTP协议直传RTMP转发RTP bridge 协议 规划增加ssdp协议dlna 协议最后是要增加三维场景传输也就是像素流传输当然OpenRTPServer自身已经携带得RTMP协议是为了让使用tcp 得程序能够直接拉流或者转成web端直接播放。
udp桥接转发 uint16_t port_udp 6000;std::string port_udp_ip 127.0.0.1;uint16_t port_udp_bridge 8000;c_udpserver::getInstance()-start(port_udp, port_udp_ip, port_udp_bridge);如代码所示udp接收端口6000 转发到8000而receiver接收在8000正常收流
成熟度
注意OpenRTPServer 还没有成熟代码在linux上编译也通过了通过了一阶段得RTMP 协议测试不过代码一直在改增加RTP直传和排序代码等等CMakeLists文件已经错误了先放下这个主要还是在调试问题上面主要像通过这样得方式能够找到程序员们一起合作。 采用此种方式得原因是推流转储后Receiver不直接进行主动拉流而在于接收流进行下一步得动作。
OpenRTPServer 存储和解码
OpenRTPServer增加解码方式将会增加各类硬件解码为了让代码更容易编译并不直接增加解码而是通过调用动态库进行解码解码后得数据统一为nv12 和 BGR24方式。 上图为经过发送器到OpenRTPServer OpenRTPServer 提供rtmp 转flv到网页再次通过OpenRtpServer转发到RtpReceive 测试程序整个流通是成功得。现在最重要得是再OpenRtpServer上解码传递给python以及存储成DBAIDBAI得意思是要将很多识别物体存储到db中元数据和识别号码等存储到数据库中这里得数据库我会自己编写并不使用现有得数据库可能有些工作量
发送器得音频
发送器得音频刚加上系统音频只是为了做直播得程序员能够比较方便地做出像obs这样得软件前面得音频也只是采集了话筒也只是在windows上测试而已各类兼容还没有开始有很多不到之处。
后续
一直在找合作希望能做出像vlc obs ffmpeg这样良好得作品考虑了很多望大家加入。