求帮忙做一张直播封面拼图3张

天极传媒:天极网全国分站
您现在的位置:
喵播上热门小技巧:论直播封面的重要性
Yesky天极新闻
  【天极网IT新闻频道】论一位主播如何实力圈粉走上“网红”之路,那里面可是大有学问的。
  喵播主播千千万,你如何在众多实力主播中脱颖而出?如果你是新手主播,如何吸引粉丝面对游刃有余?
  小喵手中就有一套这样的“武林秘籍”,里面包含了许多直播技巧,包括封面、镜头、才艺、聊天,总之,所有的精华都在这里啦!
  今天,小喵我向大家传授的就是直播24式中的第一招,也是直播的招牌――封面。封面对于主播来说可以说是一个重磅武器了,粉丝在浏览界面的时候第一印象就是直播的封面,如果你的封面没有丝毫特色,不够吸引人,那粉丝可是进都不会进的。所以,想让粉丝迈出第一步,切记这三个Tips。
  一、主播们的封面一定要选用自己的头像,用户第一眼看到的根本不是你的直播间,而是你的封面照,决定用户走进直播间的也绝对是封面,所以,用自己的美照才能让粉丝有所判断。
  二、封面照一定要近照,美观、清晰、无遮挡物、露全脸,人们才会记住你。一张好的封面,可以吸引更多的用户进入你的房间。
  三、即使是老主播也应该切记,如果你的头像弄不好,新用户第一眼绝对不会进入你的直播间观看你的直播,他们也会选择那些看上去漂亮可爱的主播哦!
  以上是关于封面的三个小贴士,记住的话就赶紧去改变你的直播封面吧!如果你是喵播的老司机,不知道大家发现没,喵播对高级喵开通了独享特权“直播预览”。重要的是,喵播现在已开启个人直播间,没有家族的约束,没有时间限制,随时随地想播就播,SHOW出自我。
IT新闻微信公众平台
第一时间获取新鲜资讯
使用手机扫描左方二维码
您可能想看的内容
看过本文的人还看过
大家都在看
* 网友发言均非本站立场,本站不在评论栏推荐任何网店、经销商,谨防上当受骗!
7月第二周,北京下了一周的雨,小米上市的消息霸占了一周科技圈的热搜。
第5届全国互联网安全峰会将于下月27日举行,峰会邀请了来自国内外的安全…
日前,华为拥有NPU单元的麒麟970芯片和GPU Turbo技术,正当…
天极网编辑有幸采访到积木易搭董事长孙剑峰,共话3D技术与前景。
泰国普吉岛昨日发生重大翻船事故,截至目前已有33名中国游客遇难。
据国外媒体报道,华为表示不会成为美国制裁目标,今年仍会购买美国芯片。
移动支付给我们的生活带来了很多的便利,但是类似于转错账之类的问题确实存…
据相关媒体报道,阿里云最近正在与英国电信公司洽谈云服务的相关合作。
微信与支付宝又互怼了,这一次是因为“转错账被拉黑”。难道转错账就只能自…
近几年,区块链在全球范围内快速发展,各行各业也纷纷参与进来,从金融服务…
近日,荣耀手机官微终于发声,正式发布海报并配文“不再9等,就在此10”…
小米港交所上市。现阶段小米而言,上市本身就是一个利好,且上市后的小米更…
三星官方已经宣布,Galaxy Note9新品将于8月9日在纽约发布,…
据国外媒体报道,Facebook股价创历史新高,市值向6000亿美元逼…
每日IT极热&nbsp>&nbsp
&nbsp>&nbsp
&nbsp>&nbsp
【从 0 开始开发一款直播 APP】12 直播封面上传
摘要:本文为菜鸟窝作者蒋志碧的连载。“从0开始开发一款直播APP”系列来聊聊时下最火的直播APP,如何完整的实现一个类&腾讯直播&的商业化项目直播封面上传功能运行效果直播界面讲解直播标题当前直播的标题,内容简介直播封面封面图片会在如上图显示以及直播列表上显示是否录制直播结束之后需要观看直播,就需要录制,直播结束之后录制的视频文件就叫点播,可以对视频进行永久的存储摄像头直播根据主播需求打开前置摄像头还是后置摄像头录屏直播只要用于屏幕录播,例如:游戏在5.0以上录制
本文为菜鸟窝作者蒋志碧的连载。“从 0 开始开发一款直播 APP ”系列来聊聊时下最火的直播 APP,如何完整的实现一个类&腾讯直播&的商业化项目
直播封面上传功能运行效果
直播界面讲解
当前直播的标题,内容简介
封面图片会在如上图显示以及直播列表上显示
直播结束之后需要观看直播,就需要录制,直播结束之后录制的视频文件就叫点播,可以对视频进行永久的存储
摄像头直播
根据主播需求打开前置摄像头还是后置摄像头
只要用于屏幕录播,例如:游戏 在5.0以上
录制清晰度
码流和分辨率(流畅,超清,高清)决定
界面布局不贴了,读者自己看着界面做,这里需要提示一下,界面上用到的自定义控件在文章中有讲,请戳链接。
【从 0 开始开发一款直播 APP】13 Android 6.0 运行时权限【从 0 开始开发一款直播 APP】14 animation-list 逐帧动画自定义Switch控件
直播封面上传
直播封面上传功能有以下几个:运行时权限验证上传本地图片上传相机图片
1、运行时权限验证
PublishPresenter # checkPublishPermission()
//1、权限通过 ActivityCompat 类的 checkSelfPermission() 方法判断是否有所需权限。
//2、权限请求是通过 ActivityCompat 类中的 requestPermissions() 方法,在OnRequestPermissionsResultCallback # onRequestPermissionsResult() 方法中回调。
//----------------------------split line---------------------------------------
public boolean checkPublishPermission(Activity activity) {
if (Build.VERSION.SDK_INT &= 23) {
List&String& permissions = new ArrayList&&();
//写入外部存储设备权限(保存封面图片)
if (PackageManager.PERMISSION_GRANTED != ActivityCompat.checkSelfPermission(activity, android.Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
permissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
//相机权限
if (PackageManager.PERMISSION_GRANTED != ActivityCompat.checkSelfPermission(activity, Manifest.permission.CAMERA)) {
permissions.add(Manifest.permission.CAMERA);
//ActivityCompat.requestPermissions() 请求权限
if (permissions.size() != 0) {
ActivityCompat.requestPermissions(activity
, permissions.toArray(new String[0]),
Constants.WRITE_PERMISSION_REQ_CODE);
PublishActivity # onRequestPermissionsResult()onRequestPermissionsResult() 处理请求权限
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
//写入外部存储权限
case Constants.WRITE_PERMISSION_REQ_CODE:
for (int ret : grantResults) {
if (ret != PackageManager.PERMISSION_GRANTED) {
mPermission =
2、上传图片(相机、本地)
依然采用 MVP 架构。
【从 0 开始开发一款直播 APP】5.1 MVP 完全解析 -- 实现直播登录
View — IPublishView
public interface IPublishView extends BaseView{
Activity getActivity();
* 定位成功
* @param location 位置
void doLocationSuccess(String location);
* 定位失败
void doLocationFailed();
* 图片上传成功
* @param url 路径
void doUploadSuccess(String url);
* 图片上传失败
* @param url 路径
void doUploadFailed(String url);
* 结束页面
void finishActivity();
Presenter — IPublishPresenter
public abstract class IPublishPresenter implements BasePresenter {
protected BaseView mBaseV
public IPublishPresenter(BaseView baseView) {
mBaseView = baseV
* 检查推流权限
* @param activity
public abstract boolean checkPublishPermission(Activity activity);
* 裁剪图片
* @param imgUri 图片地址
public abstract Uri cropImage(Uri imgUri);
* 选择图片方式:相机、相册
* @param mPermission 权限
* @param type 类型
public abstract Uri pickImage(boolean mPermission,int type);
* 上传图片
* @param path 图片路径
public abstract void doUploadPic(String path);
图片上传请求实体类
图片要上传到服务端,就需要请求网络,对图片上传封装一个请求实体。
public class UploadPicRequest extends IRequest {
//http://live.demo.cniao5.com/Api/Image/upload
//请求参数:userId type file
public UploadPicRequest(int requestId, String userId, int type, File file) throws FileNotFoundException {
mRequestId = requestId;
mParams.put(&userId&,userId);
mParams.put(&type&,type);
mParams.put(&file&,file);
public String getUrl() {
return getHost() + &Image/upload&;
public Type getParserType() {
return new TypeToken&Response&UploadResp&&() {}.getType();
PublishPresenter 具体实现
图片裁剪请查看:详细解释如何通过Android自带的方式来实现图片的裁剪——原理分析+解决方案
public class PublishPresenter extends IPublishPresenter {
private IPublishView mIPublishV
private boolean mUploading =
private String TAG = PublishPresenter.class.getSimpleName();
public PublishPresenter(IPublishView iPublishView) {
super(iPublishView);
this.mIPublishView = iPublishV
public void start() {
public void finish() {
mIPublishView.finishActivity();
* 直接调用系统的图片裁剪功能
* @param uri
public Uri cropImage(Uri uri) {
Uri cropUri = createCoverUri(&_crop&);
Intent intent = new Intent(&com.android.camera.action.CROP&);
intent.setDataAndType(uri, &image/*&);//可以选择图片类型,如果是 * 表明所有类型的图片
intent.putExtra(&crop&, &true&);//设置在开启的Intent中设置显示的 view 可裁剪
intent.putExtra(&aspectX&, 750);//裁剪图片的比例
intent.putExtra(&aspectY&, 550);
intent.putExtra(&outputX&, 750);//裁剪图片的宽
intent.putExtra(&outputY&, 550);
intent.putExtra(&scale&, true);//是否保持比例
intent.putExtra(&return-data&, false);//是否返回bitmap
intent.putExtra(MediaStore.EXTRA_OUTPUT, cropUri);//保存图片到指定uri
intent.putExtra(&outputFormat&, Bitmap.CompressFormat.JPEG.toString());//输出格式
mIPublishView.getActivity().startActivityForResult(intent, Constants.CROP_CHOOSE);//启动裁剪功能
return cropU
//存储封面图片并保存uri地址
private Uri createCoverUri(String preFileName) {
String filename = ImUserInfoMgr.getInstance().getUserId() + preFileName + &.jpg&;
String path = Environment.getExternalStorageDirectory() + &/cniao_live&;
File outputImage = new File(path, filename);
if (ContextCompat.checkSelfPermission(mIPublishView.getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(mIPublishView.getActivity(), new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, Constants.WRITE_PERMISSION_REQ_CODE);
File pathFile = new File(path);
if (!pathFile.exists())
pathFile.mkdirs();
if (outputImage.exists())
outputImage.delete();
} catch (Exception e) {
e.printStackTrace();
mIPublishView.showMsg(&生成封面失败&);
return Uri.fromFile(outputImage);
//选择封面图来源(相机、相册)
public Uri pickImage(boolean mPermission, int type) {
Uri fileUri =
if (!mPermission) {
mIPublishView.showMsg(&权限不足&);
switch (type) {
case Constants.PICK_IMAGE_CAMERA:
fileUri = createCoverUri(&&);
//启动相机
Intent intent_photo = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent_photo.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
mIPublishView.getActivity().startActivityForResult(intent_photo, Constants.PICK_IMAGE_CAMERA);
//本地相册
case Constants.PICK_IMAGE_LOCAL:
fileUri = createCoverUri(&_select&);
//打开相册
Intent intent_album = new Intent(&android.intent.action.GET_CONTENT&);
intent_album.setType(&image/*&);
mIPublishView.getActivity().startActivityForResult(intent_album, Constants.PICK_IMAGE_LOCAL);
return fileU
//上传封面图
public void doUploadPic(String path) {
mUploading =
final UploadPicRequest request = new UploadPicRequest(1000,
ACache.get(mIPublishView.getContext()).getAsString(&user_id&),
Constants.LIVE_COVER_TYPE,new File(path));
AsyncHttp.instance().post(request, new AsyncHttp.IHttpListener() {
public void onStart(int requestId) {
public void onSuccess(int requestId, Response response) {
if (response!=null) {
UploadResp resp = (UploadResp) response.getData();
Log.i(TAG, &onSuccess url:& + resp.getUrl());
mIPublishView.doUploadSuccess(resp.getUrl());
Log.i(TAG, &onSuccess url:&);
public void onFailure(int requestId, int httpStatus, Throwable error) {
Log.i(TAG, &onFailure :& + error);
mIPublishView.doLocationFailed();
} catch (FileNotFoundException e) {
e.printStackTrace();
封面图片上传实现
整个大致流程:首先检测权限,权限添加之后点击封面图片调用封面选择对话框,会出现三个按钮(相机、相册、取消)。相机:打开相机功能进行拍照,然后确定之后会调用系统裁剪功能对图片进行裁剪,接着会将图片进行保存,裁剪之后再点击确定就会调用上传图片功能。相册:打开相册选择,选择之后会调用系统裁剪功能对图片进行裁剪,接着会将图片进行保存,裁剪之后再点击确定就会调用上传图片功能。取消:点击取消则退出当前对话框。
public class PublishActivity extends BaseActivity implements View.OnClickListener, IPublishView{
//图片封面文字
private TextView mTvPicT
private Dialog mPicD//选择封面对话框(照相机、相册、取消)
private ImageView mImgC//封面图
private Uri mFileUri, mCropU//原始图片文件uri,裁剪之后的图片文件uri
private boolean mPermission =//权限监测
private PublishPresenter mPublishP
private String TAG = PublishActivity.class.getSimpleName();
protected void setActionBar() {
protected void setListener() {
mImgCover.setOnClickListener(this);
protected void initData() {
//初始化PublishPresenter
mPublishPresenter = new PublishPresenter(this);
//检测权限
mPermission = mPublishPresenter.checkPublishPermission(this);
String strCover = ACache.get(this).getAsString(&head_pic&);
if (!TextUtils.isEmpty(strCover)) {
Log.e(TAG, &head_pic:& + strCover);
Glide.with(this).load(strCover).into(mImgCover);
mTvPicTip.setVisibility(View.GONE);
mImgCover.setImageResource(R.drawable.publish_background);
protected void initView() {
mTvPicTip = obtainView(R.id.tv_pic_tip);
mImgCover = obtainView(R.id.cover);
//初始化图片选择对话框
initPhotoDialog();
* 封面图片选择对话框
private void initPhotoDialog() {
//对话框初始化及样式设置
mPicDialog = new Dialog(this, R.style.float_dialog);
//对话框布局
mPicDialog.setContentView(R.layout.dialog_pic_choose);
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
Window window = mPicDialog.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
window.setGravity(Gravity.BOTTOM);
lp.width = display.getWidth();
mPicDialog.getWindow().setAttributes(lp);
//按钮初始化并添加点击事件
mPicDialog.findViewById(R.id.tv_chose_camera).setOnClickListener(this);
mPicDialog.findViewById(R.id.tv_pic_lib).setOnClickListener(this);
mPicDialog.findViewById(R.id.tv_dialog_cancel).setOnClickListener(this);
protected int getLayoutId() {
return R.layout.activity_
public void onClick(View v) {
switch (v.getId()) {
//封面图片选择
case R.id.cover:
mPicDialog.show();
//相机,对拍摄图片地址进行存储,并对图片进行裁剪
case R.id.tv_chose_camera:
mFileUri = mPublishPresenter.pickImage(mPermission, Constants.PICK_IMAGE_CAMERA);
mPicDialog.dismiss();
//相册,从本地相册选择图片作为封面,并对图片进行裁剪,并将地址进行保存
case R.id.tv_pic_lib:
mFileUri = mPublishPresenter.pickImage(mPermission, Constants.PICK_IMAGE_LOCAL);
mPicDialog.dismiss();
//取消对话框按钮,表示不添加封面图片
case R.id.tv_dialog_cancel:
mPicDialog.dismiss();
//相机和相册选择结果回调
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
switch (requestCode) {
//选择相机图片
case Constants.PICK_IMAGE_CAMERA:
mCropUri = mPublishPresenter.cropImage(mFileUri);
Log.d(TAG, &cropImage-&path camera:& + mCropUri.getPath());
Log.d(TAG,&PICK_IMAGE_CAMERA 选择相机图片成功&);
//选择本地相册图片
case Constants.PICK_IMAGE_LOCAL:
String path = OtherUtils.getPath(this, data.getData());
if (null != path) {
Log.d(TAG, &cropImage-&path local:& + path);
File file = new File(path);
mCropUri = mPublishPresenter.cropImage(Uri.fromFile(file));
Log.e(TAG,&PICK_IMAGE_LOCAL 选择本地图片成功&);
//上传相机/相册图片
case Constants.CROP_CHOOSE:
mTvPicTip.setVisibility(View.GONE);
Log.d(TAG, &cropImage-&path crop:& + mCropUri.getPath());
mPublishPresenter.doUploadPic(mCropUri.getPath());
Log.d(TAG,&CROP_CHOOSE 上传图片成功&);
public void doUploadSuccess(String url) {
//加载封面图
Glide.with(this).load(url).into(mImgCover);
public void doUploadFailed(String url) {
showMsg(&直播封面上传失败&);
//其他某些实现方法已被删,代码量太大,只贴出主要代码
在控制台可以查看到打印的 Log 信息,先选择图片,然后裁剪之后进行上传。上传到服务端会返回一个 url 地址。打开 url 可以在浏览器中查看到图片。
在手机上找到 cniao_live 文件夹,并且有刚刚上传过的图片。
详情请转至 GitHub
特训营戳&&http://www.cniao5.com/hd/h5/android/fkcxy.html
以上是的内容,更多
的内容,请您使用右上方搜索功能获取相关信息。
若你要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内给你回复。
云服务器 ECS
可弹性伸缩、安全稳定、简单易用
&40.8元/月起
预测未发生的攻击
&24元/月起
邮箱低至5折
推荐购买再奖现金,最高25%
&200元/3月起
你可能还喜欢
你可能感兴趣
阿里云教程中心为您免费提供
【从 0 开始开发一款直播 APP】12 直播封面上传相关信息,包括
的信息,所有【从 0 开始开发一款直播 APP】12 直播封面上传相关内容均不代表阿里云的意见!投稿删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内答复
售前咨询热线
支持与服务
资源和社区
关注阿里云
International声明:本站信息来源于网络或会员投稿,不代表本站观点,如有侵犯到您的权益请发邮件到我们将在第一时间删除处理。
上一篇:下一篇:
相关热门文章
刚刚,支付宝官方再次发布重大利好,阿里决定在10亿红包的基础上再次追加10个亿,全面反馈老用户。这次支付宝发飙,主要在三个方面升级,一个是扫码赚钱红包金额将翻倍...
把一百万存进余额宝的话,一天的收入能有多少呢?很好奇吧!让小琴里来算一算吧。借用一张网友的截图,一百万存入支付宝一天收入够小琴里一个月的工资啦!...
最近有一位女子就遇到了天上掉馅饼的事情,真的是太幸运了,一觉醒来发现自己的账户凭空就多出了巨款,还以为在做白日梦呢,不敢相信!...
淘宝直播要想吸引人,淘宝直播封面图一定要做得好看!淘宝直播封面有什么要求呢?今天就来给大家介绍介绍。各位淘宝主播,请用心看完下面的淘宝封面图规范,违规者会有巡查...
淘宝直播的要求有什么?主要有四点:1.淘宝直播封面图遵循的原则。2.淘宝直播封面图的固定信息。3.淘宝直播封面图注意事项及错误示例。4.淘宝直播封面图的打标规范...
其它淘宝网店推广信息
1234567891011
热门微商货源
1234567891011
淘宝网店怎么开,找免费开网店货源,欢迎来到53网店货源网。本站的货源信息由会员发布,请妥善交易!
-|--|--|--|--|--|--|--|-
投诉、建议联系邮箱:kf@53shop.Com (请尽量发邮件联系) QQ: 广告联系 QQ: 交流QQ群:(禁止任何广告)
& shop.com, all rights reserved.小咖秀直播封面设置的方法教程
小咖秀是一款自带逗比功能的
拍摄应用,用户可以配合小咖秀提供的音频字幕像唱KTV一样创作搞怪视频,同时小咖秀还支持视频同步分享。当我们使用小咖秀
时,想设置一个美美的封面来吸引游客时,该怎么设置呢?下面一起来看看。第一步:首先在上打开小咖秀应用软件,随后选择一个素材,接着点击【开始】按钮。第二步:然后就是视频录制的过程。第三步:&最后视频录制完之后,点击视频进行预览,在的时候,看到你想要的画面,点击屏幕左上方【设为封面】。将停止该画面,该画面则为封面,OK完成。好了,关于小咖秀设为封面的方法就给大家介绍到这里了。&
最新资讯离线随时看
聊天吐槽赢奖品
相关软件:
大小:10.52 MB
授权:免费
大小:7.77 MB
授权:免费求大神帮做直播封面图_百度知道
求大神帮做直播封面图
求大神帮做直播封面图图上p字内容【是我依然不够骚,还是枪法不够飘】然后还有【主播:面条】字的效果p成图2上那样,反正就是那种金黄色,图一是封面图,
您的回答被采纳后将获得:
系统奖励15(财富值+成长值)+难题奖励20(财富值+成长值)
我有更好的答案
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 pr怎样把第一张变成封面 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信