微信小视频如何录制微课视频1分钟以上?

LZ,一般出现这样的情况都是你的系统限制了微信的录音权限,下面就来教你怎么给微信录音权限,我这里是以华为安卓机为例的,其他安卓机也是大同小异:  1、打开【设置】,进入【权限管理】;  2、在【应用】栏找到【微信】;  3、选择【录音】选项;  4、选择【允许】就可以了。
其它1条答案
附近的朋友等待您的帮助
包打听手机版~
火速扫描&贴身顾问,随时解答!更多频道内容在这里查看
爱奇艺用户将能永久保存播放记录
过滤短视频
暂无长视频(电视剧、纪录片、动漫、综艺、电影)播放记录,
使用您的微博帐号登录,即刻尊享微博用户专属服务。
使用您的QQ帐号登录,即刻尊享QQ用户专属服务。
使用您的人人帐号登录,即刻尊享人人用户专属服务。
按住视频可进行拖动
把视频贴到Blog或BBS
当前浏览器仅支持手动复制代码
视频地址:
flash地址:
html代码:
收藏成功,可进入查看所有收藏列表
方式1:用手机看
用爱奇艺APP或微信扫一扫,在手机上继续观看:
微信6.0更新:一分钟视频教您玩转微信小微视
方式2:一键下载至手机
限爱奇艺安卓6.0以上版本
使用微信扫一扫,扫描左侧二维码,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/164eL4
下载安装包到本机:&&
设备搜寻中...
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
连接失败!
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
部安卓(Android)设备,请点击进行选择
请您在手机端下载爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/164eL4
下载安装包到本机:&&
爱奇艺云推送
请您在手机端登录爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
180秒后更新
打开爱奇艺移动APP,点击“我的-扫一扫”,扫描左侧二维码进行登录
没有安装爱奇艺视频最新客户端?
爸爸去哪儿2游戏 立即参与
微信6.0更新:一分钟视频教您玩转微信小微视
播放量数据:
你可能还想订阅他们:
&正在加载...
周围人都在搜-百度搜索提供
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制
安装爱奇艺视频客户端,
马上开始为您下载本片
5秒后自动消失
&li data-elem="tabtitle" data-seq="{{seq}}"&
&a href="javascript:void(0);"&
&span>{{start}}-{{end}}&/span&
&li data-downloadSelect-elem="item" data-downloadSelect-selected="false" data-downloadSelect-tvid="{{tvid}}"&
&a href="javascript:void(0);"&{{pd}}&/a&
选择您要下载的《》剧集:
色情低俗内容
血腥暴力内容
广告或欺诈内容
侵犯了我的权力
还可以输入300字
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制当前访客身份:游客 [
当前位置:
发布于 日 8时,
本文为用&MediaRecorder&录制小视频的控件,可以设置视频录制的时间、空间大小、初始时是否打开摄像头等。&此控件为组合控件,继承自&LinearLayout&,为防止出错,需实现&android.media.MediaRecorder.OnErrorListener&接口。
代码片段(7)
1.&[图片] 小视频录制界面.png&&&&
MovieRecorderView.java&~&9KB&&&&
import java.io.F
import java.io.IOE
import java.util.T
import java.util.TimerT
import android.content.C
import android.content.res.TypedA
import android.hardware.C
import android.hardware.Camera.P
import android.media.MediaR
import android.media.MediaRecorder.AudioE
import android.media.MediaRecorder.AudioS
import android.media.MediaRecorder.OnErrorL
import android.media.MediaRecorder.OutputF
import android.media.MediaRecorder.VideoE
import android.media.MediaRecorder.VideoS
import android.util.AttributeS
import android.view.LayoutI
import android.view.SurfaceH
import android.view.SurfaceHolder.C
import android.view.SurfaceV
import android.widget.LinearL
import android.widget.ProgressB
import com.contron.dgyj.R;
import com.mon.G
import com.contron.dgyj.im.ImG
import com.lidroid.xutils.util.LogU
* 视频播放控件
* @author liuyinjun
public class MovieRecorderView extends LinearLayout implements OnErrorListener {
private SurfaceView mSurfaceV
private SurfaceHolder mSurfaceH
private ProgressBar mProgressB
private MediaRecorder mMediaR
private Camera mC
private Timer mT// 计时器
private OnRecordFinishListener mOnRecordFinishL// 录制完成回调接口
private int mW// 视频分辨率宽度
private int mH// 视频分辨率高度
private boolean isOpenC// 是否一开始就打开摄像头
private int mRecordMaxT// 一次拍摄最长时间
private int mTimeC// 时间计数
private File mVecordFile =// 文件
public MovieRecorderView(Context context) {
this(context, null);
public MovieRecorderView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
public MovieRecorderView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MovieRecorderView, defStyle, 0);
mWidth = a.getInteger(R.styleable.MovieRecorderView_width, 320);// 默认320
mHeight = a.getInteger(R.styleable.MovieRecorderView_height, 240);// 默认240
isOpenCamera = a.getBoolean(R.styleable.MovieRecorderView_is_open_camera, true);// 默认打开
mRecordMaxTime = a.getInteger(R.styleable.MovieRecorderView_record_max_time, 10);// 默认为10
LayoutInflater.from(context).inflate(R.layout.movie_recorder_view, this);
mSurfaceView = (SurfaceView) findViewById(R.id.surfaceview);
mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
mProgressBar.setMax(mRecordMaxTime);// 设置进度条最大量
mSurfaceHolder = mSurfaceView.getHolder();
mSurfaceHolder.addCallback(new CustomCallBack());
mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
a.recycle();
* @author liuyinjun
private class CustomCallBack implements Callback {
public void surfaceCreated(SurfaceHolder holder) {
if (!isOpenCamera)
initCamera();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
public void surfaceDestroyed(SurfaceHolder holder) {
if (!isOpenCamera)
freeCameraResource();
* 初始化摄像头
* @author liuyinjun
* @throws IOException
private void initCamera() throws IOException {
if (mCamera != null) {
freeCameraResource();
mCamera = Camera.open();
} catch (Exception e) {
e.printStackTrace();
freeCameraResource();
if (mCamera == null)
setCameraParams();
mCamera.setDisplayOrientation(90);
mCamera.setPreviewDisplay(mSurfaceHolder);
mCamera.startPreview();
mCamera.unlock();
* 设置摄像头为竖屏
* @author liuyinjun
private void setCameraParams() {
if (mCamera != null) {
Parameters params = mCamera.getParameters();
params.set("orientation", "portrait");
mCamera.setParameters(params);
* 释放摄像头资源
* @author liuyinjun
private void freeCameraResource() {
if (mCamera != null) {
mCamera.setPreviewCallback(null);
mCamera.stopPreview();
mCamera.lock();
mCamera.release();
private void createRecordDir() {
File sampleDir = new File(Environment.getExternalStorageDirectory() + File.separator + "im/video/");
if (!sampleDir.exists()) {
sampleDir.mkdirs();
File vecordDir = sampleD
// 创建文件
mVecordFile = File.createTempFile("recording", ".mp4", vecordDir);//mp4格式
LogUtils.i(mVecordFile.getAbsolutePath());
} catch (IOException e) {
* @author liuyinjun
* @throws IOException
private void initRecord() throws IOException {
mMediaRecorder = new MediaRecorder();
mMediaRecorder.reset();
if (mCamera != null)
mMediaRecorder.setCamera(mCamera);
mMediaRecorder.setOnErrorListener(this);
mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());
mMediaRecorder.setVideoSource(VideoSource.CAMERA);// 视频源
mMediaRecorder.setAudioSource(AudioSource.MIC);// 音频源
mMediaRecorder.setOutputFormat(OutputFormat.MPEG_4);// 视频输出格式
mMediaRecorder.setAudioEncoder(AudioEncoder.AMR_NB);// 音频格式
mMediaRecorder.setVideoSize(mWidth, mHeight);// 设置分辨率:
// mMediaRecorder.setVideoFrameRate(16);// 这个我把它去掉了,感觉没什么用
mMediaRecorder.setVideoEncodingBitRate(1 * 1024 * 512);// 设置帧频率,然后就清晰了
mMediaRecorder.setOrientationHint(90);// 输出旋转90度,保持竖屏录制
mMediaRecorder.setVideoEncoder(VideoEncoder.MPEG_4_SP);// 视频录制格式
// mediaRecorder.setMaxDuration(Constant.MAXVEDIOTIME * 1000);
mMediaRecorder.setOutputFile(mVecordFile.getAbsolutePath());
mMediaRecorder.prepare();
mMediaRecorder.start();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (RuntimeException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
* 开始录制视频
* @author liuyinjun
* @param fileName
视频储存位置
* @param onRecordFinishListener
达到指定时间之后回调接口
public void record(final OnRecordFinishListener onRecordFinishListener) {
this.mOnRecordFinishListener = onRecordFinishL
createRecordDir();
if (!isOpenCamera)// 如果未打开摄像头,则打开
initCamera();
initRecord();
mTimeCount = 0;// 时间计数器重新赋值
mTimer = new Timer();
mTimer.schedule(new TimerTask() {
public void run() {
// TODO Auto-generated method stub
mTimeCount++;
mProgressBar.setProgress(mTimeCount);// 设置进度条
if (mTimeCount == mRecordMaxTime) {// 达到指定时间,停止拍摄
if (mOnRecordFinishListener != null)
mOnRecordFinishListener.onRecordFinish();
}, 0, 1000);
} catch (IOException e) {
e.printStackTrace();
* 停止拍摄
* @author liuyinjun
public void stop() {
stopRecord();
releaseRecord();
freeCameraResource();
* 停止录制
* @author liuyinjun
public void stopRecord() {
mProgressBar.setProgress(0);
if (mTimer != null)
mTimer.cancel();
if (mMediaRecorder != null) {
// 设置后不会崩
mMediaRecorder.setOnErrorListener(null);
mMediaRecorder.setPreviewDisplay(null);
mMediaRecorder.stop();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (RuntimeException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
* 释放资源
* @author liuyinjun
private void releaseRecord() {
if (mMediaRecorder != null) {
mMediaRecorder.setOnErrorListener(null);
mMediaRecorder.release();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
mMediaRecorder =
public int getTimeCount() {
return mTimeC
* @return the mVecordFile
public File getmVecordFile() {
return mVecordF
* 录制完成回调接口
* @author liuyinjun
public interface OnRecordFinishListener {
public void onRecordFinish();
public void onError(MediaRecorder mr, int what, int extra) {
if (mr != null)
mr.reset();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
movie_recorder_view.xml&~&747B&&&&
&?xml version="1.0" encoding="utf-8"?&
&LinearLayout xmlns:android="/apk/res/android"
xmlns:tools="/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/background_dark"
android:orientation="vertical"&
&SurfaceView
android:id="@+id/surfaceview"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
&ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="2dp"
&/LinearLayout&
attrs.xml&~&509B&&&&
&?xml version="1.0" encoding="utf-8"?&
&resources&
&declare-styleable name="MovieRecorderView"&
&!-- 开始是否打开摄像头 --&
&attr name="is_open_camera" format="boolean" /&
&!-- 一次拍摄最长时间 --&
&attr name="record_max_time" format="integer"/&
&!-- 视频分辨率宽度 --&
&attr name="width" format="integer"/&
&!-- 视频分辨率高度 --&
&attr name="height" format="integer"/&
&/declare-styleable&
&/resources&
MainActivity.java&~&3KB&&&&
package com.example.
import android.app.A
import android.os.B
import android.os.H
import android.os.M
import android.view.MotionE
import android.view.V
import android.view.View.OnTouchL
import android.widget.B
import android.widget.T
import com.example.myvideo.MovieRecorderView.OnRecordFinishL
public class MainActivity extends Activity {
private MovieRecorderView mRecorderV
private Button mShootB
private boolean isFinish =
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRecorderView = (MovieRecorderView) findViewById(R.id.movieRecorderView);
mShootBtn = (Button) findViewById(R.id.shoot_button);
mShootBtn.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if (event.getAction() == MotionEvent.ACTION_DOWN) {
mRecorderView.record(new OnRecordFinishListener() {
public void onRecordFinish() {
handler.sendEmptyMessage(1);
} else if (event.getAction() == MotionEvent.ACTION_UP) {
if (mRecorderView.getTimeCount() & 1)
handler.sendEmptyMessage(1);
if (mRecorderView.getVecordFile() != null)
mRecorderView.getVecordFile().delete();
mRecorderView.stop();
Toast.makeText(MainActivity.this, "视频录制时间太短", Toast.LENGTH_SHORT).show();
public void onResume() {
super.onResume();
isFinish =
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
isFinish =
mRecorderView.stop();
public void onPause() {
super.onPause();
public void onDestroy() {
super.onDestroy();
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
finishActivity();
private void finishActivity() {
if (isFinish) {
mRecorderView.stop();
VideoPlayerActivity.startActivity(this, mRecorderView.getVecordFile().toString());
* 录制完成回调
* @author liuyinjun
public interface OnShootCompletionListener {
public void OnShootSuccess(String path, int second);
public void OnShootFailure();
activity_main.xml&~&925B&&&&
&?xml version="1.0" encoding="utf-8"?&
&LinearLayout xmlns:android="/apk/res/android"
xmlns:tools="/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black"
android:orientation="vertical"&
&com.example.myvideo.MovieRecorderView
android:id="@+id/movieRecorderView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_margin="3dp" /&
android:id="@+id/shoot_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/bg_movie_add_shoot"
android:text="按住拍"
android:textColor="#ECEBF1"/&
&/LinearLayout&
7.&[图片] bg_movie_add_shoot.png&&&&
开源中国-程序员在线工具:
相关的代码(1255)
126回/3302阅
这么牛逼的代码 竟然没有人评论。楼主谢谢分享
2楼:人生如歌 发表于
引用来自“初学Android者”的评论这么牛逼的代码 竟然没有人评论。楼主谢谢分享一楼客气了
3楼:lear321 发表于
lz,很好用,就是拍完后的视频播放时不清晰,怎么解决?
4楼:人生如歌 发表于
引用来自“lear321”的评论lz,很好用,就是拍完后的视频播放时不清晰,怎么解决?你好,可以在代码的210行把帧频率设大一点
5楼:孙泽伟 发表于
R.styleable 新手。求上传这个文件
6楼:孙泽伟 发表于
楼主。加个QQ &
7楼:人生如歌 发表于
引用来自“孙泽伟”的评论R.styleable 新手。求上传这个文件你好,这个是自定义属性,已经上传 attrs.xml 文件
8楼:刘兆伟 发表于
引用来自“lear321”的评论lz,很好用,就是拍完后的视频播放时不清晰,怎么解决?引用来自“人生如歌”的评论你好,可以在代码的210行把帧频率设大一点调大了怎么还是不清楚,清晰度不明显,再调大就闪退了
9楼:人生如歌 发表于
引用来自“lear321”的评论lz,很好用,就是拍完后的视频播放时不清晰,怎么解决?引用来自“人生如歌”的评论你好,可以在代码的210行把帧频率设大一点引用来自“刘兆伟”的评论调大了怎么还是不清楚,清晰度不明显,再调大就闪退了现在的这个帧频率:1 * 1024 * 512,调大要设置成 2 的倍数,如 1* 1024 * 1024 等,再者看看手机支持这种帧频率不。因为我还没碰到这种问题,所以你最好看看报什么错误,好对症下药。
10楼:yanlu_123 发表于
你好 &我是新手 &有点不知道这个怎么用,可以麻烦指导一下吗
11楼:人生如歌 发表于
引用来自“yanlu_123”的评论你好 &我是新手 &有点不知道这个怎么用,可以麻烦指导一下吗你好,我已经上传了 MainActivity 与资源文件。
12楼:yanlu_123 发表于
谢谢。非常感谢。
13楼:kissy小强 发表于
大神,请问VideoPlayerActivity LogUtils
这个类怎么弄?
14楼:人生如歌 发表于
引用来自“kissy小强”的评论大神,请问VideoPlayerActivity LogUtils
这个类怎么弄?不好意思,这里面用到了一个xutil框架,你看看引入的包“ import com.lidroid.xutils.util.LogU ”就知道了,以后碰到这种不认识的类就看看引入的是哪个包,马上就知道是否自定义的类啦,其实这个 LogUtils 就是 android 的原生 Log 一样的打印日志。
15楼:itzyjr 发表于
VideoPlayerActivity在哪?
16楼:kissy小强 发表于
引用来自“kissy小强”的评论大神,请问VideoPlayerActivity LogUtils
这个类怎么弄?引用来自“人生如歌”的评论不好意思,这里面用到了一个xutil框架,你看看引入的包“ import com.lidroid.xutils.util.LogU ”就知道了,以后碰到这种不认识的类就看看引入的是哪个包,马上就知道是否自定义的类啦,其实这个 LogUtils 就是 android 的原生 Log 一样的打印日志。Verry Thank you!!受教了。
17楼:stormdzh 发表于
可以给我发个源码不啊 ,
18楼:itzyjr 发表于
发现这个demo里面有个最大的问题,就是视频预览被拉伸,并且这个拉伸的问题是最难解决的。
19楼:晓篷子 发表于
有点问题 ,能发下源码么。
20楼:androidxxx 发表于
能发下源码吗
开源从代码分享开始
人生如歌的其他代码您好,分享的企鹅
小学生期末考试 微信录一段视频也算分
如果你还认为小学生的期末考试就是坐在课桌边埋头答题,那你就真的OUT了!上周五,在巴蜀小学的期末考试上,演讲、口试、游戏、现场测量,孩子们用各种方式展示这学期在学校的收获,甚至用手机微信录下一段视频,就可以完成考试。“期末考试仅用一张试卷根本无法展示出孩子的综合素质发展。现在通过丰富多样的评价方式,对学生进行过程性评价,不仅能看到他们的进步,还能看到他们的个性。”巴蜀小学相关负责人介绍,该校从前年秋季开始进行学生评价改革,不再有传统的期末笔试,而是从学生发展的各个方面进行综合评价,让学生有自主选择和个性发展的空间。目前,该校已经有两个年级的学生进入这种充满趣味性的多元化评价体系。(重庆商报)
正文已结束,您可以按alt+4进行评论
看过本文的人还看了
[责任编辑:wyrobinfan]
Copyright & 1998 - 2015 Tencent. All Rights Reserved

我要回帖

更多关于 微信视频聊天如何录制 的文章

 

随机推荐