在Android开发中,`SurfaceView` 和 `MediaPlayer` 是两个重要的组件,它们常被用于实现视频播放功能。`SurfaceView` 提供了一个高效的显示机制,适用于处理大量的图形更新,而`MediaPlayer` 则是Android系统提供的媒体播放器,能够处理各种音频和视频格式的播放。在本篇文章中,我们将深入探讨如何利用`SurfaceView` 和 `MediaPlayer` 控制视频的大小,以适应不同的屏幕尺寸和用户体验需求。 让我们了解`SurfaceView`。`SurfaceView` 是一个特殊的视图,它拥有自己的显示表面,可以独立于窗口管理器进行渲染,这使得它在处理多媒体数据时能够避免频繁的界面刷新带来的性能损失。在播放视频时,`SurfaceView` 的优点在于能够减少画面撕裂,提高播放流畅性。 `MediaPlayer` 类是Android的媒体播放引擎,它可以加载、解码和播放音频和视频文件。`MediaPlayer` 支持多种媒体源,包括本地文件、网络流和内容提供者的URI。对于视频播放,我们通常会将`MediaPlayer`与`SurfaceView` 结合使用,通过`MediaPlayer`加载和解码视频,然后在`SurfaceView`上显示。 要控制视频大小,我们需要关注以下几个关键步骤: 1. 创建`SurfaceView`: 在布局文件中添加`SurfaceView`,并将其ID设为`SurfaceHolder.Callback` 的引用,以便在`SurfaceView`准备就绪时接收通知。 2. 实现`SurfaceHolder.Callback`: 在Activity或Fragment中实现此接口,重写`surfaceCreated()`, `surfaceChanged()` 和 `surfaceDestroyed()` 方法。`surfaceChanged()`方法会在Surface尺寸变化时调用,我们可以在这里调整`MediaPlayer`的视频显示大小。 3. 初始化`MediaPlayer`: 使用`MediaPlayer.create()` 或者手动构造`MediaPlayer`对象,然后设置数据源(例如,本地文件路径)。调用`setDisplay()`方法,将`SurfaceView`的`SurfaceHolder`传递给`MediaPlayer`,使视频能够在`SurfaceView`上显示。 4. 调整视频大小:在`surfaceChanged()`方法中,获取`SurfaceView`的新尺寸,然后调用`MediaPlayer`的`setVideoSize()`方法,传入对应的宽度和高度参数。这样,`MediaPlayer`就会按照指定的尺寸播放视频。 5. 播放和控制:调用`MediaPlayer`的`prepare()`方法准备播放,然后通过`start()`开始播放。还可以利用`seekTo()`跳转到视频的任意位置,`pause()`暂停,`stop()`停止,`release()`释放资源。 6. 处理播放结束:监听`MediaPlayer`的`OnCompletionListener`,当视频播放完毕时,可以选择重新播放或执行其他操作。 7. 注意兼容性:不同设备的屏幕尺寸和分辨率各不相同,因此在设置视频大小时要考虑兼容性问题。可以使用`DisplayMetrics`获取设备的屏幕尺寸,并根据需要进行适配。 通过`SurfaceView`和`MediaPlayer`的组合,开发者可以实现自定义的视频播放功能,包括控制视频的大小以适应不同的屏幕。这不仅提高了用户体验,还为应用提供了更大的灵活性。在实际开发过程中,还需要考虑性能优化和异常处理,确保在各种情况下都能稳定地播放视频。
2025-07-06 11:51:35 5.39MB surfaceview mediaplayer 视频大小
1
对2.5.1.0版本的一个改进。核心功能是采用qmmp框架,支持多种播放格式。支持多云音乐的下载与试听,支持视频播放弹幕,支持歌词的检索下载,支持相似歌曲、艺术家、专辑、歌单的查找,支持音乐频道的收听和音乐识别等等,支持均衡器和音效插件调节,支持K歌模式,总之是非常好的学习交流作品。 更多资源详见我的github https://github.com/Greedysky/TTKMusicplayer
2023-10-19 02:42:16 80.48MB Qt 音乐播放器 MediaPlayer music
1
项目正在重构,大家可以 star 但是先不要 clone 下来看代码啦~~~ 米波音乐播放器 这是一款Android音乐播放器,基于Android的原生的MediaPlayer, 使用Android Studio开发。 要求 Android SDK 23 Gradle 3.1.2 开始 可以使用 "gradlew build" 命令或者在Android Studio中 "Import Project" 自动构建项目。 截图 支持 ViewPager切换的部分使用 获取专辑封面部分代码采用网络上的一篇博客上面的代码 如果发现我的项目有什么不足或者可以改进的地方,请给我提意见 许可 Copyright 2014 The Android Open Source Project, Inc. Licensed to the Apache Software Foundation (ASF) under
2023-05-24 23:26:28 639KB android android-mediaplayer Java
1
自定义MediaPlayer视频播放器,兼容各种视频类型播放。解决视频加载不出来黑屏问题。
2023-03-17 10:50:27 5KB andoird videoplayer MediaPlayer
1
当前是MFC下MediaPlayer插件对应的控件类资源。 如果有需要就可以下载,我保证是最全面的信息 我目前测试使用的环境是:VS2010 win10系统 可用
2023-03-14 14:26:51 91KB mfc mediaPlayer api
1
内容索引:VB源码,多媒体技术,  VB编写程序,利用MediaPlayer同步歌词,完美同步歌词显示,唯一就是拖动歌曲进度条时歌词显示不是很平滑。   程序功能及原理:根据歌曲长度获取显示歌词频率,程序有歌词数组、时间数组、时间歌词标记数组、读歌词文件、将歌词文件读入数组lrc、分离时间标签、用DO循环分离包含多个时间标签的歌词、分离出时间,也就是截取[]号内的时间内容、将不包含时间标签的[]号的里面内容截取出来,并去掉不必要的东西。写入歌词数组、利用冒泡排序,将时间按从小到大排列……通过本例子,你将了解到以上知识点。   注:实际代码并不大,里面含了一个MP3文件还有歌词文件,比较大,所以
2023-02-14 07:32:05 3.34MB VB源代码 多媒体技术
1
KSYMediaPlayer-iOS-SDK ##SDK支持说明 目前播放器SDK支持的流媒体传输协议有: RTMP,HTTP,HLS及RTSP(RTP,SDP) 解码基于FFMPEG,音视频格式支持列表如下(以下仅列出常见格式) MP4,3GP,FLV,TS/TP,RMVB ,MKV,M4V,AVI,WMV ,MKV ##SDK使用说明 ###结构 工程中包含2个工程,其中 KSYMediaPlayer - 播放器SDK KSYVideoDemo - 使用播放器SDK的demo KSYMediaPlayer编译得到的libKSYMediaPlayer.a静态库文件就是播放器SDK,头文件在KSYMediaPlayer目录中 ###集成 根据用户的需求,可以选择2种方式: 如果仅需要播放器SDK,那么仅需要引入libKSYMediaPlayer.a静态库文件以及对应的头文件即可 如果需要一
2023-02-06 15:59:43 31.32MB C
1
本文实例为大家分享了android多媒体音乐播放器的具体实现代码,供大家参考,具体内容如下 首先,在AndroidManifest.xml中配置权限  <!-- 读取手机中的音乐 --> 注释:Android多媒体音乐的几种来源 1.在andriod的应用中 MediaPlayer.create(this, R.raw.roar); //mnt/sdcard/手机内存卡 2.放在自己的sd卡中(内存卡) mediaPlayer
2023-02-04 21:22:24 48KB AND android android开发
1
Mediaplayer+Service实现的MP3播放器。 1、具有左右滑动屏效果 2、支持后台播放 3、进度条刷新 4、播放模式(顺序、循环、随机、单曲)选择及其他一些基本功能。
2023-01-18 10:13:42 1.88MB android 音乐播放器 Service
1
在网上找了一个别人的旧版本的播放器~自己更改了一天,终于可运行了,希望分享下同共学习; 不过出了少少问题:希望有经验的一起指导下: 运行环境:qt creator +windows 1、原计划是可支持视频播放的,现在只能加载间频(mp3),一加载视频就卡死 2.、自定义的进度条不起作用,不知为什么百分比槽连接不成功 connect(wmp, SIGNAL(PositionChange(double, double)),this, SLOT(Slot_onPositionChange(double, double))); 3、我用的是QAxWidget控件,这个是不是只支持windows的呢?或者还有没其实更好的? /******************************************************************************************* 项目名:QT播放器 Qt Mediaplayer 工程师:枫儿 完成时间:2009年12月28日 技术支持:嵌入式家园 www.studyarm.cn www.mcupark.com *******************************************************************************************/ #include "playerwindow.h" #include #include #include #include #include #include #include #include PlayerWindow::PlayerWindow() { //setCaption(tr("Media Player")); fileFilters = tr("Video files (*.mpg *.mpeg *.avi *.wmv)\n" //原来字符串换行也可这样用 "Audio files (*.mp3 *.wav)"); updateTimer = 0; setMouseTracking(true); this->wmp = new QAxWidget(this); wmp->setControl("{22D6F312-B0F6-11D0-94AB-0080C74C7E95}"); // wmp->setProperty("ShowControls", QVariant(false, 0)); wmp->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); connect(wmp, SIGNAL(PlayStateChange(int, int)),this, SLOT(Slot_onPlayStateChange(int, int))); connect(wmp, SIGNAL(ReadyStateChange(ReadyStateConstants)),this, SLOT(Slot_onReadyStateChange(ReadyStateConstants))); connect(wmp, SIGNAL(PositionChange(double, double)),this, SLOT(Slot_onPositionChange(double, double))); this->openButton = new QPushButton(tr("&Open")); connect(openButton, SIGNAL(clicked()), this, SLOT(Slot_openFile())); this->playPauseButton = new QPushButton(tr("&Play")); connect(playPauseButton, SIGNAL(clicked()), wmp, SLOT(Play())); this->stopButton = new QPushButton(tr("&Stop")); connect(stopButton, SIGNAL(clicked()), wmp, SLOT(Stop())); this->seekSlider = new QSlider(Qt::Horizontal, this); seekSlider->setEnabled(false); connect(seekSlider, SIGNAL(valueChanged(int)),this, SLOT(Slot_sliderValueChanged(int))); connect(seekSlider, SIGNAL(sliderPressed()),wmp, SLOT(Pause())); QHBoxLayout *buttonLayout = new QHBoxLayout; buttonLayout->addWidget(openButton); buttonLayout->addWidget(playPauseButton); buttonLayout->addWidget(stopButton); QVBoxLayout *mainLayout = new QVBoxLayout(this); mainLayout->addWidget(wmp); mainLayout->addLayout(buttonLayout); mainLayout->addWidget(seekSlider); this->setLayout(mainLayout); }
2022-12-31 23:28:39 1.5MB qt 播放器
1