1.pjsip 本地视频预览怎么改变内容源的本地本地大小 iOS
2.Vue项目的部署
3.手机端如何打开html源代码?
pjsip 本地视频预览怎么改变内容源的大小 iOS
1 把视频源当然文件来处理,sample有。预览源码预览源码不过这种方法用的本地本地不多。
2 修改vid_stream.c,预览源码预览源码在put_frame和get_frame里,本地本地换上我们自己的预览源码预览源码戴维期货通道源码视频源。这种方法使用的本地本地最多,很多人在1.x版本里支持视频,预览源码预览源码就用这种方法。本地本地
3 重新构造sdp,预览源码预览源码自己创建rtp通道。本地本地
在sdp上,预览源码预览源码pjsua_call_make_call这个函数非常方便,本地本地直接呼叫对方。预览源码预览源码不过它在底层做了太多工作,本地本地授权源码是什么比如启动了声卡。而不用这个函数,直接用比较底层的pjsip_inv_send_msg,自己处理的工作相对比较多(但不难,不过这样就不需要pjsua这个现成的程序了,所以我们继续用pjsua_call_make_call)。
不过还好,pj库提供了大量的回调,其中一个:on_call_sdp_created,就是在创建sdp后回调上来,由我们自己再修改。比如我们自己定义rtp的端口g_local_port。
void on_call_sdp_created(pjsua_call_id call_id,
pjmedia_sdp_session *sdp,
pj_pool_t *pool,
const pjmedia_sdp_session *rem_sdp)
{
int nPort;
if (sdp != NULL)
{
pjmedia_sdp_media *m = sdp->media[sdp->media_count-1];
m->desc.port = g_local_port;
pjmedia_sdp_conn *c = sdp->conn;
char* addr;
if (c)
addr= c->addr.ptr;
else
{
const pj_str_t *hostname;
pj_sockaddr_in tmp_addr;
char *addr;
hostname = pj_gethostname();
pj_sockaddr_in_init(&tmp_addr, hostname, 0);
addr = pj_inet_ntoa(tmp_addr.sin_addr);
sdp->conn = (pjmedia_sdp_conn *)pj_pool_zalloc (pool, sizeof(pjmedia_sdp_conn));
sdp->conn->net_type = pj_str("IN");
sdp->conn->addr_type = pj_str("IP4");
sdp->conn->addr = pj_str(addr);
}
sdp->origin.addr = *pj_gethostname();
}
}
同样,这里还可以修改payload type等。iapp如何上传源码
这是发起呼叫时的,接收方收到后的回应之后,也会触发这个回调,自己设定RTP端口,payload type就可以了。
2
呼叫成功后,双方建立起连接关系,这时需要传rtp数据了。pjsua把这些工作都放在底层了,不做任何修改,只需要在发送和接收时,自己做一些处理就行。
先说接收方(参考siprtp.c源码):
pj_status_t init_local_rtp()
{
if (m_bInitMedia)
{
destroy_media();
}
//g_local_port = local_port;
pj_caching_pool_init(&cp, &pj_pool_factory_default_policy, 0);
pool = pj_pool_create(&(cp.factory), "test", , , NULL);
int status;
//status = pjmedia_endpt_create(&cp.factory, pjsip_endpt_get_ioqueue(pjsua_get_pjsip_endpt()), 0, &med_endpt);
status = pjmedia_endpt_create(&cp.factory, NULL, 1, &med_endpt);
status = pjmedia_rtp_session_init(&video.out_sess, , pj_rand());
status = pjmedia_rtp_session_init(&video.in_sess, , 0);
status = pjmedia_transport_udp_create(med_endpt, NULL, g_local_port, 0, &video.transport);
m_bInitMedia = true;
video.active = true;
return 0;
}
这段代码是本地启动rtp一个端口用来接收视频数据。
然后,陆交所源码从sdp得到对方发送的ip和端口,调用pjmedia_transport_attach,建立关联就可以了。
Vue项目的部署
近期我完成了一个基于Vue的记账项目,下面我将分享我的远程部署过程。
一、本地预览
源代码编写完成后,首先将其上传至GitHub,例如:git@github.com:Xin-hai/haiqing-1.git。这个仓库称为源代码仓库,其中dist目录默认不会上传。根据Vue CLI部署指南,需要进行本地预览,确保yarn build打包后的如何查看源码视频dist目录正确无误。在终端执行官方推荐的命令,启动HTTP服务器访问dist目录。
由于我使用yarn进行包管理,因此使用yarn命令进行安装。在新的预览地址中,我比较了文件,发现打包后的css和js文件体积比yarn serve得到未打包的体积更小。检查完dist目录打包无误后,可以关闭预览。
二、GitHub Pages手动推送更新
新建一个远程仓库地址用于存放dist目录的相关代码,这个仓库仅用于网页展示,如git@github.com:Xin-hai/haiqing-1-website.git。此仓库最好与源代码仓库名称相似,例如在后面加上-website。
在vue.config.js中设置正确的publicPath。找到vue.config.js并添加如下代码,将'/my-project/'修改为新建的仓库地址名'/haiqing-1-website/'。
在项目目录上创建deploy.sh并按照官方写入相关代码。我使用的是yarn,进行了一点小的修改。主要修改的是git push -f git@github.com:Xin-hai/haiqing-1-website.git master:gh-pages这句代码,其中的haiqing-1-website是前面新建的存放dist的仓库,也是用于网页展示的仓库。
在终端运行sh deploy.sh即可自动部署。代码会上传到haiqing-1-website仓库的gh-pages分支上,此分支会自动开启GitHub的pages功能,稍等片刻就能看到网页链接。注意,源代码仓库不会自动更新,需要自己git push相关代码。
三、码云部署
为了优化访问速度,我使用了码云gitee。同样,在码云上新建好仓库后,复制ssh地址,将deploy.sh中的git push -f git@github.com:/.github.io.git master修改为码云的。
在gitee的服务选项中查看Gitee pages功能。
------------------------------------------..补充
在经历一个星期的实名认证之后,我的码云终于可以使用Gitee page功能了。在推送时,除了修改deploy.sh为如下,还需要将vue.config.js中的仓库地址改为码云中的远程仓库地址如下。
注意,gitee需要手动更新,每次git push后需要手动更新才能看到效果。
最后,是我最近做的海青记账的GitHub源代码仓库和Gitee源代码仓库,欢迎大家体验和提出建议。
手机端如何打开html源代码?
在手机端打开 HTML 源代码有几种方法,下面列出了其中的几种常见方法:
1. 使用浏览器开发者工具:大多数移动设备的现代浏览器都提供了开发者工具,类似于桌面浏览器的开发者工具。你可以通过在浏览器中输入特定的命令或手势来打开开发者工具,然后在其中找到源代码视图或类似的选项。在开发者工具中,你可以查看和编辑网页的 HTML 源代码。
2. 使用文本编辑器应用:如果你想在移动设备上查看 HTML 源代码并进行编辑,可以下载适用于移动设备的文本编辑器应用,如 QuickEdit、Jota Text Editor、Dcoder 等。这些应用通常提供了语法高亮显示和其他代码编辑功能,方便你查看和编辑 HTML 源代码。
3. 在线 HTML 编辑器:使用在线 HTML 编辑器可以方便地在手机上查看和编辑 HTML 源代码。有一些在线工具(例如 CodePen、JSFiddle、JS Bin 等)提供了实时预览和编辑功能,你可以在其中输入 HTML 代码并查看结果。
需要注意的是,使用手机浏览器查看和编辑 HTML 源代码可能会受到屏幕尺寸和设备限制的影响。对于复杂的代码和编辑操作,使用桌面环境更为方便。但是对于简单的查看和编辑需求,上述方法可以帮助你在手机上查看和修改 HTML 源代码。