android视频直播
① Android客户端直播,土豪进入房间的特效,有demo吗
首先,进入直播端AndroidDemo,会出现以下界面下左图是网易视频云直播端AndroidDemo的欢迎界面。下右图是直播设置界面。直播设置界面操作只需简单三步:1、输入直播地址(URL);2、选择“标清”分辨率;3、选择“普通模式”或者“滤镜模式”,进入直播。其中直播地址(URL)从网易视频云官网下载。需要注意的是:高清、标清和流畅,其中高清960x720,标清640x480,流畅320x240,需要根据手机摄像头支持的分辨率进行选择,由于部分手机不支持960x720和320x240分辨率,推荐用户选择标清分辨率。进入Demo后,显示界面如下图所示。下左图是直播Demo的主界面。
② android 怎么接入腾讯云直播
a、注册视频云账号 b、创建直播频道 c、下载SDK和API文档 d、开发直播推流程序
③ android 判断m3u8 流是直播还是点播
简单来说:android是在sdk4.0以后才开始支持m3u8的播放,
sdk4.0以后可以使用VideoView来直接播放m3u8文件,但它只支持视频的在线播放,
如果你的app需要支持视频的离线下载,然后在没有网络的情况下用VideoView播放本地下载好的m3u8文件 那么思路很简单 就是使用socket实现一个本地代理服务来处理视频数据.
http://blog.csdn.net/zhouyongyang621/article/details/47000533
④ android 怎么接入腾讯云直播
a、注册指盯视频云账号
b、裤码创建胡逗哪直播频道
c、下载SDK和API文档
d、开发直播推流程序
⑤ 映客怎么直播手游啊
映客是一款覆盖了iPhone、Android、Apple Watch、iPad的社交视频直播应用,与微博微信账户关联,用户只需拿出手机,简单操作,就能瞬间开始直丛老播,让全平台用户都能观看。也可以通过分享到朋友圈,微博,微信邀请好友观看的渗禅升全民直播
目前,映客直播的方式是手机视频直播,将主播的生活实时呈现给粉丝,并不支持手机屏幕录制实时呈现给粉丝。
如果您需要在映客上直播手游,目前可能只能通过用另外的手机拍摄玩手游的手袭腊机来完成了。
⑥ 为什么快手软件现实免流量你们缺要计费
根据您提供的信息,如果您是腾讯王卡套餐的用户,快手APP内观看直播、播放视频、使用手机直播、查看图片可享受专属流量免费。(iOS 5.2.0及以上Android 5.0.2及以上的版本才支持专属流量免费服务)
使用快手APP时需要先激活免流功能。激活步骤:辩谈如手机正在使用王卡,快手APP将尝试自动激活免流量服务。自动激活成功后在“设置- 免流量服务” 一项的右侧会显示绿色“已启用” 标识;若右侧未显示“已启用” 标识,而是“视频、直播免流量” 或“已关闭” 标志,此时需要用户进入免流量服务手动激活、开启免流服务。
手动激活的方式:进入“快手App - 设置- 免流量服务”,点击“联通大王卡”右上角的激活按钮,按页面指示激活即可。
其中加载文字如评论、直播文字等、上传视频与图片、应用内打开网页等产生的流量不免费。其余免流搭李功能程序猿正努力开发中具体的免流范围需以最新更新为准。
特别注意:主播在使用手机直播时,平台会根据直播网络情况自动匹配流量使用模式(免流/不免流),以保证直播间体验(会对主播进行提示)。当需要从免流模式转为不免流模式时,会出现以下提示:当前免流量服务不稳定,继续直播可能会产生超额流量费用。请王上注意使用!
如非上述情况,携枝碰建议联系号码归属地的联通客服了解。
⑦ android 直播怎么实现的
android 的直播,主要使用的是camera采集的数桥笑据推流到服务器上,在客户端播放camera采集的数据。采用SurfaceView+ SurfaceTexture来显示camera数据, SurfaceTexture在接收图像流之后,可以进行二次处理,比如(加字体水印), 处理完毕后再送给另一个SurfaceView用于显示.
先说说,android端采集摄像头数据,这个网上有很多的资料,可以网络下。这里可以在回调函数OnPreviewFrame(byte[] data,Camera cma)中获取摄像头数据data.
关键是如何把data传输到服务器,要实现这坦消碧个目标,我使用ffmpeg 来解决这个为题。在android 工程创建jni文件夹,使用jni调用。native函数如下:
// 在OnPreviewFrame中调用
public native void push(byte[] data);
// 可以在OnSurfcaeChanged()中调用. 在jni中初始化输出路径.
public native int initPush(String outputurl,int width,int height);
在jni 层的代码如下:
static void ffmpeg_init() {
avcodec_register_all();
12
#if CONFIG_AVDEVICE
avdevice_register_all();
#endif
avfilter_register_all();
av_register_all();
avformat_network_init();
1234
}
static int avinit(int width, int height){
/**编码开始*/
int ret;
if(codec==NULL){
yuv_width = width;
yuv_height = height;
y_length = width * height;
uv_length = width * height / 4;
LOGI("init start\n");
codec = avcodec_find_encoder(AV_CODEC_ID_H264);
if (!codec) {
LOGI("Codec not found\n");
return -1;
}
c = avcodec_alloc_context3(codec);
if (!c) {
LOGI("Could not allocate video codec context\n");
return -1;
}
/* put sample parameters */
c->bit_rate = 400000;
/* resolution must be a multiple of two */
c->width = width;
c->height = height;
/* frames per second */
//c->time_base = (AVRational){1,5};
c->time_base.den = 25;
c->time_base.num = 1;
/* emit one intra frame every ten frames
* check frame pict_type before passing frame
* to encoder, if frame->pict_type is AV_PICTURE_TYPE_I
* then gop_size is ignored and the output of encoder
* will always be I frame irrespective to gop_size
*/
if (ofmt_ctx->oformat->flags & AVFMT_GLOBALHEADER)
c->flags |= CODEC_FLAG_GLOBAL_HEADER;
c->gop_size = 10;
c->max_b_frames = 10;
c->pix_fmt = AV_PIX_FMT_YUV420P;
//av_opt_set(c->priv_data, "preset", "slow", 0);
av_opt_set(c->priv_data, "preset", "superfast", 0);
av_opt_set(c->priv_data, "tune"让举, "zerolatency", 0);
/* open it */
if (avcodec_open2(c, codec, NULL) < 0) {
LOGI("Could not open codec\n");
return -1;
}
LOGI("init end 1\n");
video_st = avformat_new_stream(ofmt_ctx, codec);
if (video_st == NULL) {
LOGI("video_st == NULL\n");
return -1;
}
video_st->time_base.num = 1;
video_st->time_base.den = 25;
video_st->codec = c;
return 0;
}
/**编码结束*/
}
JNIEXPORT jint JNICALL Java_com_example_directvideo_MainActivity_initPush
(JNIEnv *env, jobject obj,jstring out ,jint width, jint height){
int ret ;
ffmpeg_init();
const char* str = //"rtmp://192.168.1.102:1935/myapp/test1";
//"/storage/emulated/0/zsy.mp4";
(*env)->GetStringUTFChars(env, out, 0);
LOGI("%s %d %d ", str,width,height);
//AVOutputFormat *ofmt = NULL;
//AVFormatContext *ofmt_ctx = NULL;
//Output
avformat_alloc_output_context2(&ofmt_ctx, NULL, "flv", str); //RTMP
//avformat_alloc_output_context2(&ofmt_ctx, NULL, "mpegts", output_str);//UDP
if (!ofmt_ctx) {
LOGI( "Could not create output context\n");
ret = AVERROR_UNKNOWN;
goto end;
}
ret = avinit(width, height);
ofmt = ofmt_ctx->oformat;
//Open output URL
if (!(ofmt->flags & AVFMT_NOFILE)) {
ret = avio_open(&ofmt_ctx->pb, str, AVIO_FLAG_WRITE);
if (ret < 0) {
LOGI( "Could not open output URL '%s'", str);
goto end;
}
}
ret = avformat_write_header(ofmt_ctx, NULL);
if (ret < 0) {
LOGE( "Error occurred when opening output URL\n");
goto end;
}
(*env)->ReleaseStringUTFChars(env, out, str);
if (ret < 0 && ret != AVERROR_EOF) {
LOGI( "Error occurred.\n");
return ret;
}
intited = 1;
return 0;
04142434445
}
注意传输视频流时,必须使用h264编码器进行编码。初始化成功后,便可使用push()来推送每一帧的camera数据到服务器上。
本人在ubuntu系统中,利用ngnix + rtmp搭建了简易的流媒体服务器。
在pc机上,使用ffplay rtmp://192.168.1.102:1935/myapp/test1的命令来播放视屏.
http://blog.csdn.net/zsy2012919331/article/details/52444332
⑧ android直播app怎么开发
直播视频App软件如何开发
1.形成用户的正反馈
所谓正反馈也就是在网络上的正面效应,也就是用户量与视频直播App产品价值是一种正反馈的关系存在的。一般来讲,产品的价值是随着用户数量和产品购买率、消费转化率的提升而不断提升。反过来讲,随着产品价值不断提升,在直播内容的输出上会更有价值,则能够吸引更多关注。为此在用户参与的视频App设计上,开发者是一种全民参与直播的形式,同时打造严格的审核机制,确保净化空间环境。
2.增加用户的参与感
对于视频App直播产品来讲,其自身的优点在于用户能够在平台上进行互动和讨论交流,也就是用户参与的过程,而且在用户的互动中,激发其他用户自我表达的欲望。为此对于产品设计而言,应该根据苹果手机的用户习惯,进行设计交互性强、性能好的直播类视频App产品,以及打造参与门槛低的板块,进而增强用户的参与感。
3.专注于解决问题
对于任何产品来讲,并不是产品的功能越全面越好,而是需要在不断的升级过程中,满足目标用户需求增长、变化。为此对于天瑞地安直播类视频App软件开发团队而言,在为客户设计产品的过程中,会根据客户自身的情况,在初级版本的设计中,专注于解决用户的某一个问题,从而达到吸引用户、培养用户的效果。而在功能迭代的过程中,会将重要的功能点前置,致力于为客户打造最具性价比的产品。
⑨ 简单说明一下 android开发 直播 + 录播 的原理, 大致的原理就行了, 不用太复杂
camera相关(视频)、AudioRecord(音频)相关、MediaCodec相关(音视频编码)
android-native层(c++):h264、h265等编码库的调用;各种音频编码库的使用(aac、amr、mp3、g711等);容器封装技术(音视频封装ts、ps等);媒体协议(hls、rtsp、rtmp等);socket编程;android-ndk编译so技术;jni技术;
你还需要流媒体服务器