Android 中使用MediaRecorder进行录像详解(视频录制)

Android 中使用MediaRecorder进行录像详解(视频录制)

2023年7月15日发(作者:)

1. package ;

2.

3. import ption;

4.

5. import ty;

6. import tyInfo;

7. import ormat;

8. import ecorder;

9. import ;

10. import eHolder;

11. import eView;

12. import ;

13. import kListener;

14. import ;

15. import Manager;

16. import ;

17.

18. /**

19. * class name:TestBasicVideo

20. * class description:一个简单的录制视频例子

21. * PS:实现基本的录制保存文件

22. *

23. * @version 1.00 2011/09/21

24. * @author CODYY)peijiangping

25. */

26. public class TestBasicVideo extends Activity implements ck {

27. private Button start;// 开始录制按钮

28. private Button stop;// 停止录制按钮

29. private MediaRecorder mediarecorder;// 录制视频的类

30. private SurfaceView surfaceview;// 显示视频的控件

31. // 用来显示视频的一个接口,我靠不用还不行,也就是说用mediarecorder录制视频还得给个界面看

32. // 想偷偷录视频的同学可以考虑别的办法。。嗯需要实现这个接口的Callback接口

33. private SurfaceHolder surfaceHolder;

34.

35. public void onCreate(Bundle savedInstanceState) {

36. te(savedInstanceState);

37. requestWindowFeature(E_NO_TITLE);// 去掉标题栏

38. getWindow().setFlags(_FULLSCREEN,

39. _FULLSCREEN);// 设置全屏

40. // 设置横屏显示

41. setRequestedOrientation(_ORIENTATION_LANDSCAPE);

42. // 选择支持半透明模式,在有surfaceview的activity中使用。

43. getWindow().setFormat(UCENT);

44. setContentView();

45. init();

46. }

47.

48. private void init() {

49. start = (Button) ewById();

50. stop = (Button) ewById();

51. lickListener(new TestVideoListener());

52. lickListener(new TestVideoListener());

53. surfaceview = (SurfaceView) ewById(eview);

54. SurfaceHolder holder = der();// 取得holder

55. lback(this); // holder加入回调接口

56. // setType必须设置,要不出错.

57. e(E_TYPE_PUSH_BUFFERS);

58. }

59.

60. class TestVideoListener implements OnClickListener {

61.

62. @Override

63. public void onClick(View v) {

64. if (v == start) {

65. mediarecorder = new MediaRecorder();// 创建mediarecorder对象

66. // 设置录制视频源为Camera(相机)

67. eoSource();

68. // 设置录制完成后视频的封装格式THREE_GPP为_4为mp4

69. mediarecorder

70. .setOutputFormat(_GPP);

71. // 设置录制的视频编码h263 h264

72. eoEncoder(ncoder.H264);

73. // 设置视频录制的分辨率。必须放在设置编码和格式的后面,否则报错

74. eoSize(176, 144);

75. // 设置录制的视频帧率。必须放在设置编码和格式的后面,否则报错

76. eoFrameRate(20);

77. viewDisplay(face());

78. // 设置视频文件输出的路径

79. putFile("/sdcard/love.3gp");

80. try { 81. // 准备录制

82. e();

83. // 开始录制

84. ();

85. } catch (IllegalStateException e) {

86. // TODO Auto-generated catch block

87. tackTrace();

88. } catch (IOException e) {

89. // TODO Auto-generated catch block

90. tackTrace();

91. }

92. }

93. if (v == stop) {

94. if (mediarecorder != null) {

95. // 停止录制

96. ();

97. // 释放资源

98. e();

99. mediarecorder = null;

100. }

101. }

102.

103. }

104.

105. }

106.

107. @Override

108. public void surfaceChanged(SurfaceHolder holder, int format, int width,

109. int height) {

110. // 将holder,这个holder为开始在oncreat里面取得的holder,将它赋给surfaceHolder

111. surfaceHolder = holder;

112. }

113.

114. @Override

115. public void surfaceCreated(SurfaceHolder holder) {

116. // 将holder,这个holder为开始在oncreat里面取得的holder,将它赋给surfaceHolder

117. surfaceHolder = holder;

118. }

119.

120. @Override

121. public void surfaceDestroyed(SurfaceHolder holder) { 122. // surfaceDestroyed的时候同时对象设置为null

123. surfaceview = null;

124. surfaceHolder = null;

125. mediarecorder = null;

126. }

127. }

[html] view plaincopyprint?

1.

2. android:layout_width="fill_parent"

3. android:layout_height="fill_parent"

4. android:orientation="horizontal" >

5.

6.

7. android:layout_width="fill_parent"

8. android:layout_height="fill_parent"

9. android:layout_weight="1" >

10.

11.

12. android:id="@+id/surfaceview"

13. android:layout_width="fill_parent"

14. android:layout_height="fill_parent" />

15.

16.

17.

18. android:layout_width="fill_parent"

19. android:layout_height="fill_parent"

20. android:layout_weight="4"

21. android:gravity="center"

22. android:orientation="vertical" >

23.

24.

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信