b站循环播放怎么设置电脑(b站循环播放怎么设置)
B站推出播放分钟数统计功能,提高粘性还是过度追求时长?
B站推出播放分钟数统计功能,引发用户热议:提高粘性还是过度追求时长?
B站近日宣布,将对部分用户开放播放分钟数的小范围内测,这意味着用户可以看到自己观看视频的总时长,而不仅仅是播放次数。这一改变引发了网友的热议,有人认为这是B站为了提高用户粘性和内容质量而采取的措施,也有人担心这会导致用户过度追求观看时长,而忽略了视频的内容和价值。
B站是国内最大的视频分享平台之一,拥有超过2亿的月活跃用户,其中以年轻人和二次元爱好者为主。B站的视频内容涵盖了动漫、游戏、音乐、科技、娱乐等多个领域,同时也是许多原创作者和UP主展示自己的舞台。B站一直以来都注重用户的互动和参与感,除了提供弹幕、评论、收藏、点赞等功能外,还经常举办各种活动和投票,让用户感受到自己是B站的一份子。
播放次数是B站视频的一个重要指标,它反映了视频的受欢迎程度和影响力。然而,播放次数也存在一些问题,比如容易被刷单、无法区分重复观看和新观众、无法反映视频的完整度和深度等。因此,B站决定对部分用户开放播放分钟数的小范围内测,让用户可以看到自己观看视频的总时长,从而更好地评估自己的观看习惯和喜好。
据B站相关负责人介绍,播放分钟数是根据用户实际观看视频的时间来计算的,不受视频长度和播放速度的影响。如果用户中途退出或跳过某些部分,那么只会计算实际观看的时间。播放分钟数旨在帮助用户更清晰地了解自己在B站上花费的时间和精力,同时也可以激励UP主提高视频的质量和吸引力,让用户能够更愿意观看完整的视频。
目前,播放分钟数还处于小范围内测阶段,只有部分用户可以看到自己的播放分钟数,其他用户仍然只能看到播放次数。B站表示,这一功能还在不断完善和优化中,未来可能会根据用户的反馈和数据进行调整或推广。B站希望通过这一改变,能够为用户提供更加丰富和多元的视频体验,同时也为UP主提供更加公平和有效的评价标准。
19.8元24小时无限次乘坐公交、地铁、轮渡!上海市“联程日票”来了
上海市交通委介绍,9月28日起,上海“出行即服务”(MaaS)系统将上线“联程日票”,售价19.8元。市民登录上海市绿色出行一体化平台“随申行”微信小程序,购买并启用“联程日票”,即可享受24小时内无限次乘坐上海地铁、公交和轮渡。据悉,该票种是上海市首款由官方指导、企业联合试点的多元化电子票制服务。
详见↓
届时,市民打开微信平台搜索“随申行”,进入官方小程序,于首页点击“联程日票”或在“一码通行”页购买更多权益,即可进入购买页面。完成购买后,可在手动启用“联程日票”后的24小时内,在上海公共交通运营时间段不限次数乘坐上海公交、地铁和黄浦江轮渡。
市民无需线下购票、取票,微信小程序内“一键展码”即可乘坐公共交通,适合来沪短期旅行的游客,或短期内有多次出行需求的乘客。
△随申行“联程日票”购买及使用界面
值得注意的是,在“联程日票”24小时有效期内入站的乘客,出站时如已超过24小时,也可顺利出站;平台将于到期前1个小时进行订阅消息的温馨提醒,为乘客出行提供便利的体验。
作为上海市绿色出行一体化平台,“随申行”积极倡导绿色出行。除“联程日票”之外,市民使用“随申行”,还可享受长期优惠。9月28日起,市民使用“随申行”APP、“随申行”微信/支付宝小程序或“随申办”移动端乘坐地铁,当月满70元享9折优惠。如:当月已消费67元后,乘坐一次地铁为3元票价的乘次,即享受累积优惠,实际扣款金额为3*0.9=2.7元。与此同时,随申码“一码通行”还支持公交与地铁或公交与公交之间2小时内换乘优惠1元。
附:随申行联程日票使用须知
1
购买规则
同一账户同期仅可购买一张随申行联程日票,账户内有未启用或未核销完的随申行联程日票均不可进行重复购买,账户内随申行联程日票失效或核销完成后方可重新购买。
2
适用交通场景及线路
随申行联程日票可用于上海市内公交、轨道交通以及黄浦江轮渡(仅支持行人乘客,不包含非机动车乘客),不包括高速公路线(实行“‘一人一座’不允许乘客车厢站立”的),但实际可用线路有所限制,具体使用范围不包括现有随申行业务未覆盖的交通运输方式以及以下线路。
(1)磁悬浮、金山铁路、黄浦江轮渡非机动车乘客和三岛水上客运不可用。
(2)以下公交线路不可用:莲松专线,陆安线(高速),陆安线(高速)B,申崇五线,申崇一线,申崇二线,申崇二线(区间),申崇三线,申崇三线(区间),申崇四线,申崇四线(区间),申崇七线,陈凤线,长南线,申崇六线,申崇六线B线,洋山专线,嘉五线,沪嘉专线,虹桥枢纽9路,南梅线,莘南高速线,虹桥枢纽5路B线,松新枫线,松梅专线,虹桥枢纽10路,虹练定班线,沪商高速专线,虹桥枢纽6路B线,枫梅线,石梅线,亭梅线,上石线,朱卫线,枫戚快线,虹桥枢纽7路,虹桥枢纽7路B线,沪青高速专线,沪朱高速线,莲朱专线,莲金专线,莲卫专线,莲漕专线,莲山专线,莲浜专线,莲枫专线,莲廊专线,莲张专线,莲亭专线,虹桥枢纽8路,机场一线,机场二线,机场四线,机场五线,机场九线,守航夜宵线,机场七线,机场八线,旅游1线,旅游2线,旅游3线,旅游4线,旅游5线,旅游6线,旅游7线,旅游8线,旅游9线,旅游10线,陆家嘴旅游环线,示范区1路,示范区8路,廊下二路,廊下三路,南隆专线,嘉定59路,嘉定60路,嘉定7路B线。
3
生效规则
已购买的随申行联程日票的使用需要手动启用。市民需要在购买后的启用有效期内(180天)完成随申行联程日票的启用。
4
使用有效期
随申行联程日票的使用有效期为24小时,根据启用时间动态计算,启用随申行联程日票的时间即为您随申行联程日票的使用开始时间。
5
使用限制
本票启用后,仅限一人一码一手机使用;可免费乘坐适用范围内的公交线路,同一辆公交车每30分钟内仅可使用一次;可免费乘坐适用范围内的轨道交通线路,但地铁站点完成一次正常进出站后必须间隔5分钟以上才可再次进站,否则不可享受随申行联程日票乘坐权益;可免费乘坐适用范围内的黄浦江轮渡(非机动车乘客除外),但每次乘坐轮渡必须间隔10分钟以上且每2小时内最多乘坐2次,否则不可享受随申行联程日票免费乘坐权益。
综合:东方网、上海发布
记者:王佳妮
来源: 东方网
Qt/C++音视频开发56-udp推流和拉流/组播和单播推流
一、前言之前已经实现了rtsp/rtmp推流,rtsp/rtmp/hls/flv/ws-flv/webrtc等拉流,这种一般都需要依赖一个独立的流媒体服务程序,有没有一种更便捷的方式不需要这种依赖,然后又能实现推拉流呢,当然有的那就是u推流,其中udp推流还可以是组播或者单播推流,组播一般会选择224.0.0.1这个地址,单播的话就是指定到唯一的IP地址比如192.168.0.8,组播的话相当于同一个交换机内所有局域网设备都会收到该数据,优点是推一次所有地方都可以拉流取到数据,缺点是极有可能产生组播风暴,因为每个局域网的设备都可能收到大量的视频数据包,这些完全是多余的。
在之前的ffmpeg推流代码基础上,只需要增加一行代码即可实现udp推流,那就是在调用avformat_alloc_output_context2填入对应的格式需要填入mpegts,其实也可以是h264,但是个人推荐用mpegts,用ffmpeg命令行推流是 ffmpeg -re -stream_loop -1 -i f:/mp4/push/1.mp4 -c copy -f mpegts udp://127.0.0.1:1234 ,可以看到要指定对应的端口号,一个推流占用一个端口号,如果要推10个视频文件就要占用10个端口。
二、效果图三、体验地址国内站点:https://gitee/feiyangqingyun国际站点:https://github/feiyangqingyun个人作品:https://blog.csdn/feiyangqingyun/article/details/97565652体验地址:https://pan.baidu/s/1d7TH_GEYl5nOecuNlWJJ7g 提取码:01jf 文件名:bin_video_push。四、功能特点支持各种本地视频文件和网络视频文件。支持各种网络视频流,网络摄像头,协议包括rtsp、rtmp、http。支持将本地摄像头设备推流,可指定分辨率和帧率等。支持将本地桌面推流,可指定屏幕区域和帧率等。自动启动流媒体服务程序,默认mediamtx(原rtsp--server),可选用srs、EasyDarwin、LiveQing、ZLMediaKit等。可实时切换预览视频文件,可切换视频文件播放进度,切换到哪里就推流到哪里。推流的清晰度和质量可调。可动态添加文件、目录、地址。视频文件自动循环推流,如果视频源是视频流,在掉线后会自动重连。网络视频流自动重连,重连成功自动继续推流。网络视频流实时性极高,延迟极低,延迟时间大概在100ms左右。极低CPU占用,4路主码流推流只需要占用0.2%CPU。理论上常规普通PC机器推100路毫无压力,主要性能瓶颈在网络。推流可选推流到rtsp/rtmp两种,推流后的数据支持直接rtsp/rtmp/hls/webrtc四种方式访问,可以直接浏览器打开看实时画面。可以推流到外网服务器,然后通过手机、电脑、平板等设备播放对应的视频流。每个推流都可以手动指定唯一标识符(方便拉流/用户无需记忆复杂的地址),没有指定则按照策略随机生成hash值。自动生成测试网页直接打开播放,可以看到实时效果,自动按照数量对应宫格显示。推流过程中可以在表格中切换对应推流项,实时预览正在推流的视频,并可以切换视频文件的播放进度。音视频同步推流,符合264/265/aac格式的自动原数据推流,不符合的自动转码再推流(会占用一定CPU)。转码策略支持三种,自动处理(符合要求的原数据/不符合的转码),仅限文件(文件类型的转码视频),所有转码。表格中实时显示每一路推流的分辨率和音视频数据状态,灰色表示没有输入流,黑色表示没有输出流,绿色表示原数据推流,红色表示转码后的数据推流。自动重连视频源,自动重连流媒体服务器,保证启动后,推流地址和打开地址都实时重连,只要恢复后立即连上继续采集和推流。提供循环推流示例,一个视频源同时推流到多个流媒体服务器,比如打开一个视频同时推流到抖音/快手/B站等,可以作为录播推流,列表循环,非常方便实用。根据不同的流媒体服务器类型,自动生成对应的rtsp/rtmp/hls/flv/ws-flv/webrtc地址,用户可以直接复制该地址到播放器或者网页中预览查看。编码视频格式可以选择自动处理(源头是264就264/源头是265就265),转H264(强制转264),转H265(强制转265)。支持Qt4/Qt5/Qt6任意版本,支持任意系统(windows/linux/macos/android/嵌入式linux等)。五、相关代码void FFmpegPushClient::initOsd(){ QList<OsdInfo> osds; OsdInfo osd; //日期时间 osd = "datetime"; osdlor = "#FFFFFF"; osd.fontSize = 30; osd.format = OsdFormat_DateTime; osd.position = OsdPosition_LeftTop; osds << osd; //图片 osd = "osd.png"; osd.image = QImage(":/image/bg_novideo.png"); osd.format = OsdFormat_Image; osd.position = OsdPosition_LeftBottom; //设置唯一名称标识并将图片保存(滤镜基本上都是支持指定图片文件) osd = "osd.png"; QString file = QString("./%1").arg(osd); osd.image.save(file, "png"); osds << osd; ffmpegThread->setOsdInfo(osds);}void FFmpegPushClient::start(){ if (ffmpegThread || videoUrl.isEmpty() || pushUrl.isEmpty()) { return; } //实例化视频采集线程 ffmpegThread = new FFmpegThread; //关联播放开始信号用来启动推流 connect(ffmpegThread, SIGNAL(receivePlayStart(int)), this, SLOT(receivePlayStart(int))); //关联录制信号变化用来判断是否推流成功 connect(ffmpegThread, SIGNAL(recorderStateChanged(RecorderState, QString)), this, SLOT(recorderStateChanged(RecorderState, QString))); //设置播放地址 ffmpegThread->setVideoUrl(videoUrl); //设置解码内核 ffmpegThread->setVideoCore(VideoCore_FFmpeg); //设置视频模式 ffmpegThread->setVideoMode(VideoMode_Opengl); //设置硬解码(和推流无关/只是为了加速显示/推流只和硬编码有关) //ffmpegThread->setHardware("dxva2"); //设置解码策略(推流的地址再拉流建议开启最快速度) //ffmpegThread->setDecodeType(DecodeType_Fastest); //设置读取超时时间超时后会自动重连 ffmpegThread->setReadTimeout(5 * 1000); //设置连接超时时间(0表示一直连) ffmpegThread->setConnectTimeout(0); //设置重复播放相当于循环推流 ffmpegThread->setPlayRepeat(true); //设置默认不播放音频(界面上切换到哪一路就开启) ffmpegThread->setPlayAudio(false); //设置默认不预览视频(界面上切换到哪一路就开启) ffmpegThread->setPushPreview(false); //设置保存视频类将数据包信号发出来用于保存文件 FFmpegSave *saveFile = ffmpegThread->getSaveFile(); saveFile->setSendPacket(!fileName.isEmpty(), false); connect(saveFile, SIGNAL(receivePacket(Packet *)), this, SLOT(receivePacket(Packet *))); connect(saveFile, SIGNAL(receiveSaveStart()), this, SLOT(receiveSaveStart())); connect(saveFile, SIGNAL(receiveSaveFinsh()), this, SLOT(receiveSaveFinsh())); connect(saveFile, SIGNAL(receiveSaveError(int)), this, SLOT(receiveSaveError(int))); //如果是本地设备或者桌面录屏要取出其他参数 VideoHelper::initVideoPara(ffmpegThread, videoUrl, encodeVideoScale); //设置编码策略/视频编码格式/视频压缩比率/视频缩放比例 ffmpegThread->setEncodeType((EncodeType)encodeType); ffmpegThread->setVideoFormat((VideoFormat)videoFormat); ffmpegThread->setEncodeVideoRatio(encodeVideoRatio); ffmpegThread->setEncodeVideoScale(encodeVideoScale); //启动播放 ffmpegThread->play();}void FFmpegPushClient::stop(){ //停止推流和采集并彻底释放对象 if (ffmpegThread) { ffmpegThread->recordStop(); ffmpegThread->stop(); ffmpegThread->deleteLater(); ffmpegThread = NULL; } //停止录制 if (ffmpegSave) { ffmpegSave->stop(); ffmpegSave->deleteLater(); ffmpegSave = NULL; }}
声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送至邮件举报,一经查实,本站将立刻删除。转载务必注明出处:http://www.hixs.net/article/20231205/1696260642116573.html