视频播放与拍照

Android多媒体开发与应用(二):Android音视频处理 目录 第一章:音频管理 第二章:视频播放 一、使用系统中已安装的播放器app(使用Intent方式播放)。 二、使用VideoView配合MediaController播放。 三、使用SurfaceView配合MediaPlayer播放 第三章 拍照功能实现及应用 一、调用系统相机 二、使用 Camera API 第四章 音频录制与播放 一、音频录制 二、音频播放 三、动态... 阅读详情

视频播放的activity_video

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <!--专门用来播放视频的控件-->
    <VideoView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/vv_video"/>
</LinearLayout>
VideoActivity.java

package com.zking.administrator.g160628_android28_playvideo;

import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;

/**
 * 视频播放
 */
public class VideoActivity extends AppCompatActivity {

    private VideoView vv_video;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video);
        vv_video = (VideoView) findViewById(R.id.vv_video);
        //视频路径
        vv_video.setVideoURI(Uri.parse("file://mnt/sdcard/dcim/camera/hh.mp4"));
        //控制器(传一个上下文this)
        MediaController mediaController=new MediaController(this);
        mediaController.setMediaPlayer(vv_video);
        //vv_video控件还要设置一个媒体控制器mediaController
        vv_video.setMediaController(mediaController);
    }
}
AndroidManifest.xml

<!--(读)视频播放的权限-->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

拍照的activity_comera.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <SurfaceView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/sv_camera_surface" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="拍照"
        android:onClick="takePhoto"/>
</RelativeLayout>
CameraActivity.java

package com.zking.administrator.g160628_android28_playvideo;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.icu.util.Calendar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class CameraActivity extends AppCompatActivity {

    private SurfaceView sv_camera_surface;
    private Camera camera;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_camera);
        sv_camera_surface = (SurfaceView) findViewById(R.id.sv_camera_surface);
        //给surfaceView添加一个回调函数
        sv_camera_surface.getHolder().addCallback(new SurfaceHolder.Callback() {
            @Override//画面创建
            public void surfaceCreated(SurfaceHolder holder) {
                //打开照相机(CAMERAID位置)
                //默认打开后置
                camera = Camera.open();
                //设置摄像头参数列表
                Camera.Parameters parameters= camera.getParameters();
                //设置照片的输出格式jpg
                parameters.setPictureFormat(PixelFormat.JPEG);
                //设置照片的质量
                parameters.set("jpeg-quality",100);
                // 给照相机设置参数
                camera.setParameters(parameters);
                //开启预览效果
                camera.startPreview();
                try {
                   //将画面展示到surfaceView控件上
                    camera.setPreviewDisplay(sv_camera_surface.getHolder());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            @Override//画面改变
            public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

            }

            @Override//画面销毁
            public void surfaceDestroyed(SurfaceHolder holder) {
                //改变摄像头
                camera.stopPreview();
                //释放内存
                camera.release();
            }
        });
    }

    public void takePhoto(View view){
        // 拍照、在takePicture传入三个参
        camera.takePicture(null, null, new Camera.PictureCallback() {
            @Override
            public void onPictureTaken(byte[] data, Camera camera) {
                //图片转码
                Bitmap bitmap=BitmapFactory.decodeByteArray(data,0,data.length);
                //时间戳(年月日时分秒粘在一起)
                Calendar calendar=Calendar.getInstance();
                //年
                int year=calendar.get(Calendar.YEAR);
                //月
                int month=calendar.get(Calendar.MONTH);
                //日
                int day=calendar.get(Calendar.DAY_OF_MONTH);
                //存到内存卡里
                try {
                    FileOutputStream fos=new FileOutputStream("/mnt/sdcard/dcim/camera/G160628_"+year+(month+1)+day+"_"+ System.currentTimeMillis()+".jpg");
                    //图片压缩(这里有三个参,第一个压缩的格式,第二个质量,第三个压缩到那里去)
                    bitmap.compress(Bitmap.CompressFormat.JPEG,85,fos);
                    //拍完一张接着拍
                    camera.stopPreview();//关闭
                    camera.startPreview();//开启
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }

            }
        });
    }
}
AndroidManifest.xml

<!--写的权限-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!--创建文件的权限:创建和删除一个文件系统-->
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
    <!--照相机的权限-->
    <uses-permission android:name="android.permission.CAMERA"></uses-permission>
Android三种播放视频的方式:http://blog.youkuaiyun.com/itachi85/article/details/7216962

15、iPhone多媒体功能全解析:音乐、视频与拍照的极致体验 本文全面解析了iPhone的多媒体功能,涵盖音乐、视频播放以及拍照摄像的使用技巧。从iPod功能的播放列表编辑、视频播放控制,到音乐播放时的省电技巧和语音控制,再到拍照和摄像的基本操作以及照片视频的分享与管理,详细介绍了如何更好地使用iPhone进行多媒体娱乐。此外,还提供了关于如何设置iPod选项、使用Cover Flow模式以及耳机控制等实用建议,帮助用户提升使用体验。 阅读详情

相关推荐

Windows 11任务管理器隐藏技能:一眼揪出内存泄漏的“元凶”(分页/非分页缓冲池详解)

本文详细介绍了Windows 11任务管理器中隐藏的分页缓冲池和非分页缓冲池功能,帮助用户精准定位内存泄漏问题。通过启用隐藏列、解读数据异常信号,并结合实战案例和高级工具推荐,为开发者和IT运维人员提供了高效的内存问题诊断与解决方案。

weixin_29284885的博客 623

从手机拍照到视频播放:一文搞懂Android相机默认的NV21格式与YUV420SP

本文深入解析Android相机默认的NV21格式与YUV420SP,从色彩空间YCbCr的原理到内存布局,详细讲解NV21在移动图像处理中的优势与应用。涵盖NV21转RGB的多种方案(CPU、RenderScript、OpenGL ES)及性能对比,并探讨其在视频编码和实时滤镜中的实践技巧,帮助开发者高效处理Android相机数据。

weixin_32349093的博客 357

大疆sdkV4以及V5webrtc推流

webrtcSDK中要用它的VideoCapturer来初始化推流 ViewdoCapturer是一个接口我们继承它 然后重建创建文件CapturerAircraft.java文件。CameraUtil.java这个是我们用来创建CapturerAircraft的一个工具。除了CapturerAircraft这个文件不一样外其他都是一样的。PlayBodyBean.java这个是我们的配置文件。下面的有个代码块第一个是v4的 第二个是v5的。接着我们来创建几个推流用到的webrtc工具。

weixin_41624865的博客 1188

多媒体之视频播放、拍照

使用MediaPlayer+Surface来播放视频: 界面代码: activity_main.xml: xml version="1.0" encoding="utf-8"?> LinearLayoutL xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schema

name_Fay的博客 532

Unity序列帧动画输出全攻略:Recorder+Timeline实战与透明通道处理

序列帧动画是游戏开发、影视动画和UI动效中的基础技术,指将连续动作分解为一系列静态图像并按序播放,形成动态视觉效果。其原理是通过时间轴精确控制每一帧的内容与时机,实现动画的逐帧呈现。在实时渲染领域,序列帧输出技术价值显著,它能够将动态内容高质量地转换为静态图像序列,便于跨平台复用、后期合成与资源分发。应用场景广泛,包括角色动画导出、技能特效制作、宣传片素材生成等。本文聚焦Unity引擎,深入解析如何利用Recorder与Timeline工具链,高效输出带Alpha透明通道的PNG序列帧,并重点攻克透明通道处

weixin_31556767的博客 327

【Simscape】用Simscape实现三维物理仿真(三)——创建一个滑块单摆系统

1 首先创建一个Simscape Multibody 模型 (方法见 【Simscape】用Simscape实现三维物理仿真(一)——创建一个自由落体小球) 2 创建四个Solid模块 (1)摆杆 Shape : Brick Dimensions : [0.1 0.05 1] m (2)摆杆轴 Shape : Cylinder Radius : 0.02 m Le...

ReadAir的专栏 9036

播放拍照声音

/** * 播放拍照声音 */ private void playShutterSound() { AudioManager am = (AudioManager)TakePicActivity.this.getSystemService(Context.AUDIO_SERVICE); int volume = am.getStreamVolume(Au

jimbo的专栏 1562

[xboard-real6410]39 real6410中的BL1和BL2实验及流程分析

文章目录uboot控制uboot 流程uboot加载kernel uboot控制 uboot 流程 uboot加载kernel

鹰之翔 297

Android Camera video数据流

在Android系统中,实现一个具有录像功能的应用程序只需要调用MediaRecorder的相应接口即可。下面简单分析下从MediaRecorder往下的结构: 支撑MediaRecorder的framework结构 APP调用的应用层MediaRecorder接口最终对应的实质接口位于StagefrightRecorder.cpp中,在这里面会统一管理录像需要的视频数据、音频数据、编码器等;这里只关注视频数据的情况,StagefrightRecorder通过CameraSource来获取视频数据,这个Ca

hipeboy的博客 1654

桌面运维工程师面试题汇总(高频完整版)

岗位,覆盖:电脑硬件、系统安装与故障、网络、办公软件、安全、AD域、打印机、日常排错、服务意识。

老韩的Linux云计算架构师进阶之路 911

23、OpenMP常见用例与标准循环级示例详解

本文详细介绍了OpenMP的三种典型用例:循环级OpenMP、高级OpenMP和MPI+OpenMP,适用于不同层次的并行需求。重点讲解了循环级OpenMP在向量加法、流三元组和模板计算中的应用示例,并探讨了首次触摸优化、线程绑定、NUMA架构影响等关键性能优化策略。通过实际代码演示和性能分析,帮助开发者快速掌握OpenMP的基础并行化方法,并为后续高性能优化提供指导。

fanta的博客 85

【前端】video标签实现本机摄像头拍照

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-...

jerryJJYY的博客 2148

KEPServerEX 6 之 EX 6.11.718.0 发布说明

KEPServerEX 6.11.718.0 发布说明

-雲飛兄-博客 2881

HTML5获取监控摄像头

转摘自http://blog.youkuaiyun.com/journey191/article/details/40744015 HTML5 GetUserMedia Demo var video = docume

柒柒捌捌。 8415

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

HarmonyOS 多媒体开发实战:音频播放、视频播放与相机拍照

音频播放参考文档。

一个走在鸿蒙开发路上的小菜鸡 281

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

iOS开发系列--音频播放、录音、视频播放、拍照、视频录制

http://www.cnblogs.com/kenshincui/p/4186022.html#video --iOS多媒体 概览 随着移动互联网的发展,如今的手机早已不是打电话、发短信那么简单了,播放音乐、视频、录音、拍照等都是很常用的功能。在iOS中对于多媒体的支持是非常强大的,无论是音视频播放、录制,还是对麦克风、摄像头的操作都提供了多套API。在今天的文章中将会对这些内

lvruifei的专栏 1278

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Android多媒体(视频播放器-拍照-录像)

视频播放器一: 1.布局文件:     xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"     android:layout_width="match_parent" android:layout_height="match_parent"     android:

Cy_Camaro的博客 622

iOS开发 音频播放、录音、视频播放、拍照、视频录制

转载自:http://www.cnblogs.com/kenshincui/p/4186022.html 崔江涛(KenshinCui) iOS开发系列--音频播放、录音、视频播放、拍照、视频录制 2014-12-26 09:15 by KenshinCui, 98944 阅读, 58 评论, 收藏,  编辑 --iOS多媒体 概览 随着移动互联网的发展,如今的手机早

小朴朴的博客 1209

从手机拍照到视频播放:YUV数据格式的‘隐形’旅程与实战坑点

本文深入探讨了YUV数据格式在手机拍照到视频播放全流程中的关键作用与实战挑战。从Camera传感器采集、YUV444/YUV422/YUV420格式选择,到编码传输中的颜色空间陷阱和解码渲染时的内存布局问题,揭示了多媒体处理链路中的技术暗礁与优化方案,帮助开发者规避常见坑点,提升视频处理效率与质量。

weixin_30813225的博客 355

MediaPlayer之视频,拍照,录像

1:视频播放器      使用VideoView、SurfaceView播放视频,它俩的区别在于:VideoView播放视频我们不需要去写播放按钮控件和进度条控件,你只要写一个VideoView控件就可以了,它自带得有播放控件以及暂停控件还有进度条控件,并且它还自己会计算时间就不需要我们再去计算时间了。SurfaceView播放视频则需要我们去写播放控件以及进度条还需要自己去计算时间。如果你不是

phy1997的博客 541

iOS音频播放、录音、视频播放、拍照、视频录制

随着移动互联网的发展,如今的手机早已不是打电话、发短信那么简单了,播放音乐、视频、录音、拍照等都是很常用的功能。在iOS中对于多媒体的支持是非常强大的,无论是音视频播放、录制,还是对麦克风、摄像头的操作都提供了多套API。在今天的文章中将会对这些内容进行一一介绍: 音频 音效 音乐 音频会话 录音 音频队列服务 视频 MPMoviePlayerController ...

weixin_30314631的博客 191
上一篇: Android多媒体(音乐播放器)
下一篇: Android闹钟-通知
XHui_Lin
博客等级 码龄10年 27粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值