1.最好用的源码视频播放器十大排行 播放器品牌排行榜前十名
2.å¦ä½å¼åä¸ä¸ª AVPlayer iPad ç¨åº
3.iOS多模式&富交互视频播放器TTAVPlayer(附源码)
最好用的视频播放器十大排行 播放器品牌排行榜前十名
手机越来越智能,但离不开视频播放器,源码每个人都想拥有一款功能强大、源码运行流畅、源码内存占用小的源码播放器,你心中好用的源码无水印解析易语言源码视频播放器有哪些呢?下面小编整理了最好用的视频播放器十大排行,一起来看看吧。源码
1、源码PotPlayer
视频播放器排行榜上PotPlayer基本都会上榜,源码是源码无数人心中最好用的播放器,它是源码一款多格式视频播放工具,拥有强大的源码内置解码器用于解码播放,支持帧定位,源码几乎可以播放所有格式的源码视频,解码功能很出色,源码启动速度和播放速度都非常快,并且无需额外的转码和设置,同时还可以加载直播源,支持自定义皮肤。它还支持BD和MKV等大视频流畅播放,看高清大片无任何问题,对外挂字幕的JSP parse源码支持非常优秀。
2、VLC
好用的视频播放器有哪些堪称万能?小编提名VLC。VLC多媒体播放器是一款免费开源的视频播放器,支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影音光盘及各类流式协议。它也能作为unicast或multicast的流式服务器在IPv4或IPv6的高速网络连接下使用。不仅占用电脑资源低,而且支持的文件格式也很全,并且基本上Windows、Mac、Linux、Android、iOS各大平台都有对应都设备。几乎兼容所有的音频和视频格式,并且还有多音轨、多字幕轨管理,还支持度视频和3D环绕音效,功能相当齐全。
3、KMPlayer
十大视频播放器之一的家教源码手机KMPlayer也非常受欢迎,这是一款全能视频播放器软件,页面设计比较简洁,功能上支持多种格式视频的直接播放,而且它还支持4K、8K视频的播放,播放视频的时候还有VR模式可以选择,无须注册表支持直接调用Directshow滤镜。能够播放DVD与VCD、汇入多种格式的外挂字幕档、使用普及率最高的WinAMP音效外挂与支援超多种影片效果调整选项等,而且有强大的定制能力和个性化功能。
4、MPC-HC
MPC-HC的全称是“Media Player Classic Home Cinema”,是Windows平台上一个非常轻量级的开源媒体播放器,体积及资源占用很小,响应迅速,能播放网上几乎全部主流的音频视频格式,兼容性非常好,软件对硬件配置要求也很低,低配置老电脑上也可以正常运行,可以一边看视频一边工作也非常稳定,Rxjava lift 源码而且%免费,没有任何广告或后门。
5、MPV播放器
MPV播放器是一个基于MPlayer和mplayer2的开源极简全能播放器,它的界面非常简单,几乎没有完整的UI,只有简单的视频播放按钮,但是功能却很强大,支持播放各种格式的视频文件,对字幕的支持的也很不错,同时MPV还支持windows、Linux和OSX,真正的跨平台,启动迅速,并且稳定不闪退。软件没有任何附带的额外菜单,只有最纯粹的播放功能,如果你是极简派,那一定不要错过它。
6、mx player
如果你在寻找安卓手机视频播放器,c 源码解读那小编最推荐的就是mx player,它能够播放几乎每一个影片档案,并且具备多核心的译码能力来处理你的影片档案和字幕。MX Video Player是Android平台上的第一款能够支持多核译码功能额的媒体播放器软件,有多核译码功能,根据在双核Android装置上的测试结果表明,它能够取得比单核译码播放器高达%的效能,一直以来以超强的解码性能以及兼容性闻名。
7、nPlayer
IOS最好用的视频播放器公认是nPlayer,这是一款iOS上极受推崇的万能格式高清播放器,可在iPhone、iPad和安卓上流畅播放几乎所有主流格式的视频,可以直接在手机上播放各种MKV、MP4、MOV、AVI、WMV、ASF、FLV、OGV、RMVB等几乎所有视频格式。nPlayer还可以支持DTS/DTS-HD/DTS DTS Headphone:X、Dolby AC3/E-AC3音频编码以及Dolby移动环绕立体声,字幕管理系统也很好用,可以切换多声道字幕,支持多种字幕格式,并且能够同步控制字幕的样式,兼容性极佳,功能相当丰富。
8、Kodi
Kodi也是一款有名的播放器神器,它可用于多种操作系统和硬件平台,配有软件英尺用户界面,可用于电视机和遥控器。它允许用户播放和查看大多数流媒体,如来自网上的视频、音乐、播客和视频,以及来自本地和网络存储媒体的所有常见数字媒体文件。对字幕的支持更是堪称一绝,能够兼容特效字幕,支持在线字幕匹配,看外语片无需自己找字幕,全球无数开发者为Kodi制作了大量实用的插件,如果你愿意深入,Kodi可以满足你对播放器的所有需求。
9、MPC-be
MPC-be是从MPC衍生来的播放器,这款免费开源的软件同样非常实用,低内存占用+高速打开播放,并且在界面外观上更胜一筹。由于Media Player Classic是开源软件,所以任何人都可以基于它的源代码进行修改,自由设置切换主题颜色,还可以隐藏掉整个界面边框和各种图标UI。具有播放控制,可以播放DVD,其他功能还包括的可能性在一个在线数据库中进行搜索字幕,播放列表支持、单帧、过滤器和阴影。
、Avplayer
苹果手机视频播放器Avplayer也是款很强大的app,它可以播放任何格式的全功能影音播放器,适应于iPhone、iPod、iPad,大多数视频不需要另外的转换格式过程就可以直接从iPhone里看。用户还可以通过itunes或者WiFi传输文件到播放器内,也可以通过内置的下载客户端直接从Ftp/Samba/UPnP等服务器中打开影音文件,或者下载文件,还做了内置的相片浏览器,可以看相片。
å¦ä½å¼åä¸ä¸ª AVPlayer iPad ç¨åº
AirPlay 并ä¸æ¯æ°ä¸è¥¿ï¼å®å¨ iOS 4.3 SDK ä¸å°±åå¨äºãä½AirPlay API ä¸ä¸æææ°çä¸è¥¿å å ¥ãå ¶ä¸ä¸ä¸ªæ趣æ°ç¹æ§æ¯ iPad ç¨åºè½éè¿ Apple TV 2 ææ¾æ¥èª iOS 设å¤ä¸çå 容ï¼æè éåiPad 2 ä¸çå±å¹å 容ã
ç®èè¨ä¹ï¼AirPlay å°±æ¯å°åªä½å 容ææ¾å°é«æ¸ æ¾ç¤ºå¨ï¼çµè§ï¼æé«æ¸ é³æç³»ç»ä¸ãApple TV 2 åæ¯ç¨äºè¿æ¥ iOS 设å¤æ iTunesä¸é«æ¸ 设å¤ä¹é´çæ¡¥æ¢ã
éç iOS 5 çåºç°ï¼ä»»ä½ä½¿ç¨ AV Foundation ç±»çç¨åºé½è½ä»ç¨åºä¸ææ¾é³è§é¢å å®¹å° Apple TVãä½ å¯ä»¥ç¨MPMoviewPlayerController éè¿ AirPlay å°å½åæ£å¨ææ¾çå 容æå½±å°é«æ¸ çµè§æå ¶å®é«æ¸ æ¾ç¤ºè®¾å¤ä¸ãå¦ä¸ä¸ªè¿æ¥æ¯ä»UIWebView ææ¾è§é¢ï¼è¿æ¯æ¿å¨äººå¿çæ¹è¿ï¼å 为è¿æå³çæ们å¯ä»¥ç´æ¥ä» web ä¸å°å¨çº¿çé³è§é¢æå½±å°çµè§æè Apple TV 2 ä¸ã
ä½¿ç¨ AVFoundation æå½±è§é¢å 容
è¦å¨åºç¨ç¨åºä¸ä½¿ç¨ AVFoundationï¼éè¦å®ç° AVPlayer 并设置 allowsAirPlayVideo 为 YES 以å¼å¯ AirPlayï¼æè 设置为NO ä»¥å ³é AirPlayï¼å¦ä»¥ä¸ä»£ç æ示ï¼
-(BOOL)setAirPlay:(BOOL)airplayMode{
return self.player.allowsAirPlayVideo=airplayMode;
}
ç¼ååºç¨ç¨åº
为äºæ¼ç¤ºå¦ä½å建 AVPlayer åºç¨ç¨åºä»¥åå®ç° AirPlayï¼æ们å°å建ä¸ä¸ª Single View Application(注æå¾é UseStoryboards)ï¼æ°å»ºä¸ä¸ª AVPlayer 类并å®ç° AirPlay ç¹æ§ã
å建ä¸ä¸ª Single View Applicationãç®æ ç±»åå¯ä»¥éæ© iPhoneãiPod æè iPadãå建项ç®ä¹åï¼åå¯¼å ¥ AV Foundation æ¡æ¶ã
æ¥çå建ä¸ä¸ªæ° classï¼å½å为 Playerï¼å¹¶ç»§æ¿ UIView ç±»ãå¨å¤´æ件ä¸ï¼å å ¥ AVPlayer 类并å¢å ä¸ä¸ª AVPlayer å±æ§ãå¦ä¸å代ç æ示ã
@class AVPlayer;
@interface Player : UIView
@property(nonatomic, strong) AVPlayer * player;
æ¥ä¸æ¥å°±æ¯å®ç° Player ç±»ã
æ们å®ç°äºæåºæ¬ç AVPlayer éè¦å®ç°çæèµ·ç ç 4 个æ¹æ³ï¼åæ¶è¿æä¾äºä¸ä¸ªæ¹æ³ä½ä¸ºæ们ç AirPlay å¼å ³ã
é¦å æ们éè¦ä¸ä¸ª AVLayer ç±»çå è£ ç±»ã该类æ¯ä¸ä¸ª CALayer åç±»ï¼ç¨äºå¯¹åªä½çå¯è§å 容è¿è¡ç®¡çãå建å è£ ç±»ç代ç å¦ä¸ï¼
+ (Class)layerClass {
return [AVPlayerLayer class];
}
ç¶å为éè¦ä¸ä¸ªæ¹æ³ï¼å®ä¾åä¸ä¸ª AVPlayer 对象ï¼æ们å¨å¤´æ件ä¸å®ä¹çï¼ãå¦ä¸å代ç æ示ã
-(AVPlayer *) player{
return [(AVPlayerLayer *)[self layer] player];
}
å¨ setPlayer æ¹æ³ä¸ï¼å¦ä¸å代ç æ示ï¼æä¸ä¸ª AVPlayer åæ°ï¼ç¨äºå°ä¸ä¸ª AVPlayer å®ä¾æ·»å å° UIViewãè¿ä¸ª UIView åç±»ï¼å°ç¨å¨ä¸» View Controller ä¸ã
- (void)setPlayer:(AVPlayer*)player {
[(AVPlayerLayer*)[self layer] setPlayer:player];
}
è¿ä¸ªç±»çæåä¸ä¸ªæ¹æ³æ¯ setAirPlay æ¹æ³ãå ¶åæ°å°ç¨äºæå® AVPlayer UIView (Player)çallowsAirPlayVideo å±æ§ãå¦ä»¥ä¸ä»£ç æ示ã
-(BOOL)setAirPlay:(BOOL)airplayMode{
return self.player.allowsAirPlayVideo=airplayMode;
}
为è§é¢çè¾åºæå®å¾å±(AVPLayerLayerï¼æ¶ï¼å¯ä»¥æå®ä»»ææ°éçå¾å±,åªè¦è½æ¹ä¾¿æ§å¶å 容æ¾ç¤ºãæ¯å¦è¯´å¤çé³é¢åè§é¢ä¹é´çæ¶é´åæ¥ãéè¿setDisplayModeï¼ä½ å¯ä»¥è®¾ç½®ç¨äºæ¾ç¤ºçå¾å±ï¼å å建ä¸ä¸ª AVPlayerLayer 对象ä½ä¸ºæ¾ç¤ºå¾å±ï¼ç¶åä¿®æ¹å®çå±æ§ãé»è®¤æ¯AVLayerVideoGravityResizeAspect å±æ§ï¼å¦å¤ä¹å¯ä»¥è®¾ç½® AVLayerVideoGravityResizeAspectFill å±æ§åAVLayerVideoGravityResize å±æ§ã AVLayerVideoGravityResizeAspect ä¿æè§é¢ç宽é«æ¯å¹¶ä½¿ææ¾å 容èªå¨éåºææ¾çªå£ç大å°ãAVLayerVideoGravityResizeAspectFill ååè 类似ï¼ä½å®æ¯ä»¥ææ¾å 容填å èä¸æ¯éåºææ¾çªå£ç大å°ãæåä¸ä¸ªå¼ä¼æ伸ææ¾å 容以éåºææ¾çªå£ã
Player ç±»çå®æ´ä»£ç å¦ä¸ï¼
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
@class AVPlayer;
@interface Player : UIView
@property(nonatomic, strong) AVPlayer * player;
-(BOOL) setAirPlay:(BOOL) airplayMode;
@end
#import "Player.h"
#import <AVFoundation/AVFoundation.h>
@implementation Player
+ (Class)layerClass {
return [AVPlayerLayer class];
}
-(AVPlayer *) player{
return [(AVPlayerLayer *)[self layer] player];
}
- (void)setPlayer:(AVPlayer*)player {
[(AVPlayerLayer*)[self layer] setPlayer:player];
}
//Enable or disable AirPlay mode
-(BOOL)setAirPlay:(BOOL)airplayMode{
return self.player.allowsAirPlayVideo=airplayMode;
}
@end
å¨ç¨åºä¸ä½¿ç¨ Player ï¼UIViewåç±»ï¼
ä¸è¿°ä»£ç å æ¬äºPlayer ï¼AVPlayer ç UIView åç±»ï¼ç.hæ件å.m æ件ã
è¦å¨ä¸ä¸ª UIViewController ä¸ä½¿ç¨è¿ä¸ª AVPlayer è§å¾ï¼æå¼ Xcode çæ äºæ¿(storyboard,åææ¯å建项ç®æ¶ä½¿ç¨äºâuseStoryboardâé项ï¼ãéä¸UIView(ä¸æ¯ UIViewControllerï¼å¹¶å°å®ç类修æ¹ä¸º Playerãä½ å¯ä»¥å¨ Identity é¢æ¿ç customeclass å段è¾å ¥ï¼ä¹å¯ä»¥ä»å®çä¸æå表ä¸éæ©ã
æå¼ Assistant Editor ,为 UIView åç±» Player å建ä¸ä¸ª IBOutlet,ä» view ç¨å³é®æå°å³è¾¹ç头æ件ä¸å³å¯ãå¦ä¸å¾æ示ã
å建IBActions å IBOutlets è¿æ¥
å建ä¸ä¸ªå§æå° klViewController ãå¨ Player ä¸å³é®ï¼ä» IBOutlet æä¸ä¸ªè¿æ¥çº¿å° klViewController (dock ä¸çé»è²æ¹å) ï¼å¦ä¸å¾æ示ã
æ·»å å§æè¿æ¥ klViewController
å¨æ äºçä¸ï¼å ä¸ä¸ª Toolbar ãå¨ Toolbar æ¯å å ¥ä¸¤ä¸ªæé®ï¼åå«å°æ ç¾ææ¬è®¾ç½®ä¸º Play å Pauseãç¶åå ä¸ä¸ª Switchï¼ç¨äºåæ¢AirPlay å¼å ³ç¶æãä¸ºè¿ 3 个æ§ä»¶å建ç¸åºç IBActionï¼å¯ä»¥ç¨ Assistant Editorï¼ãå©ä¸çäºæ å¨ klViewController ç±»ä¸è¿è¡ã
æå¼ klViewController.h æ件ï¼å å ¥ @class Player å @class AVPlayer è¯å¥å¹¶å¯¼å ¥ AVFoundation æ¡æ¶å Player.hãæºä»£ç è§ä¸ï¼
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
#import "Player.h"
@class Player;
@class AVPlayer;
@interface klViewController : UIViewController
声æä¸ä¸ª AVPlayer å±æ§ï¼ç¨äºå è½½å° Palyer è§å¾ä¸ã
声æä¸ä¸ª NSURL å±æ§ãç¶åæ¯ Switch æ§ä»¶ç IBOutletï¼ç¨ Assistant Editorå建ï¼ã
kvLiewController.h æ件代ç å¦ä¸ï¼
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
#import Player.h
@class Player;
@class AVPlayer;
@interface klViewController : UIViewController
@property(nonatomic, strong) AVPlayer * myPlayer;
@property(nonatomic, strong) NSURL * avContentUrl;
@property (strong, nonatomic) IBOutlet Player *airPlayView;
@property (nonatomic, retain) IBOutlet UISwitch * AirPlaySwitch;
- (IBAction)PlayVideo:(id)sender;
- (IBAction)PauseVideo:(id)sender;
- (IBAction)isAirPlayOn:(id)sender;
@end
æ¥ä¸æ¥æ¯ç±»çå®ç°æ件ãå¨ viewDidLoad æ¹æ³ä¸ï¼ç¨ä¸ä¸ªè§é¢æ件ç URL å°ååå§å avContentUrlï¼
avContentUrl = [[NSURL alloc] initWithString
ç¶åç¨ avContentUrl åå§åä¸ä¸ª AVPlayer ï¼ç¨äºç»å¤´æ件ä¸å®ä¹ç myPlayer å±æ§èµå¼ãå° myPlayer èµç» airPlayView ç player å±æ§ï¼airPlayerView æ¯ä¸ä¸ª Player 对象ãå¦ä¸å代ç æ示ï¼
self.myPlayer = [AVPlayer playerWithURL:avContentUrl];
[airPlayView setPlayer:[self myPlayer]];
ç°å¨ï¼è¦å®ç°ä¸¤ä¸ªæé®çè§é¢ææ¾åæååè½ï¼ä»¥å Switch æ§ä»¶ç AirPlay å¼å ³åè½ãææ¾æé®ç action æ¹æ³ä»£ç å¦ä¸æ示ï¼
- (IBAction)PlayVideo:(id)sender {
[self.myPlayer play];
}
æåæé®ç action æ¹æ³ä»£ç å¦ä¸æ示ï¼
- (IBAction)PauseVideo:(id)sender {
[self.myPlayer pause];
}
Switch æ§ä»¶ç action æ¹æ³ä»£ç å¦ä¸æ示ï¼
- (IBAction)isAirPlayOn:(id)sender {
AirPlaySwitch = (UISwitch *) sender;
if (AirPlaySwitch.on) {
[airPlayView setAirPlay:NO];
}else
{
[airPlayView setAirPlay:YES];
}
}
ç»å°¾
å¦ä¸ä¸ªä¸ AirPlay æå ³çå±æ§æ¯ usesAirPlayVideoWhileAirPlayScreenIsActive ï¼å®ç¨äºèªå¨å¨å¨ææ¾æé´å° AVPlayer åæ¢å° AirPlay,å½ç¶ä» ä» æ¯å¨ AirPlay å·²å¼å¯çæ åµä¸ãé»è®¤æ¯ false çã
è¦è¿è¡æ¬ç¤ºä¾ç¨åºï¼éè¦å¨ iPad ä¸è¿è¡ï¼å¹¶å° iPad è¿æ¥è³ Apple TV åä¸ wifi ç½ç»ï¼ç¶åè§é¢èµæºç URL å¿ é¡»æ¯ææçãå¨æ¨¡æå¨ä¸AirPlay æ¯æ æçã
klViewController.h æ件
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
#import "Player.h"
@class Player;
@class AVPlayer;
@interface klViewController : UIViewController
@property(nonatomic, strong) AVPlayer * myPlayer;
@property(nonatomic, strong) NSURL * avContentUrl;
@property (strong, nonatomic) IBOutlet Player *airPlayView;
@property (nonatomic, retain) IBOutlet UISwitch * AirPlaySwitch;
- (IBAction)PlayVideo:(id)sender;
- (IBAction)PauseVideo:(id)sender;
- (IBAction)isAirPlayOn:(id)sender;
@end
klViewController.m æ件
#import "klViewController.h"
@implementation klViewController
@synthesize airPlayView;
@synthesize avContentUrl, myPlayer, AirPlaySwitch;
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
//This is an Apple sample video
avContentUrl = [[NSURL alloc] initWithString:@" self.myPlayer = [AVPlayer playerWithURL:avContentUrl];
[airPlayView setPlayer:[self myPlayer]];
[self.myPlayer play];
}
- (void)viewDidUnload
{
[self setAirPlayView:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
}
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
- (IBAction)PlayVideo:(id)sender {
[self.myPlayer play];
}
- (IBAction)PauseVideo:(id)sender {
[self.myPlayer pause];
}
- (IBAction)isAirPlayOn:(id)sender {
AirPlaySwitch = (UISwitch *) sender;
if (AirPlaySwitch.on) {
[airPlayView setAirPlay:NO];
}else
{
[airPlayView setAirPlay:YES];
}
}
@end
iOS多模式&富交互视频播放器TTAVPlayer(附源码)
源码可见:[直接点击]
为了提升播放器的交互友好性与适应多样化业务需求,决定对播放器进行优化。
本次优化主要目标是实现四个播放模式:普通模式、竖屏模式、横屏模式、静音模式。
普通模式用于商品内容和文章内容的嵌套播放,H5桥接播放。竖屏模式提供沉浸式体验,用于H5桥接播放与静音播放时的点击查看详情场景,如微博、手淘微淘。横屏模式追求最佳播放体验,提供丰富的交互操作,如快捷音量调节、播放进度调整和屏幕亮度控制。静音模式适用于列表自动播放场景,如手淘微淘列表。
最终实现效果包括不同模式的支持,以及基础功能和自定义模式的扩展性设计。
设计思路强调“最小接入成本与最大扩展性”。在API和Framework层面,提供简单易用的接口,同时为自定义需求提供强大的能力。
播放器设计包含五种模式,基于AVPlayer实现基本播放功能,同时创建TTAVPlayerView用于展示视频及UI控件。
TTAVPlayer负责播放控制与状态回调,TTAVPlayerView面向上层调用者,提供界面渲染和业务逻辑。
实现中,设计确保TTAVPlayerView代码的纯净性,与业务代码解耦,专注于视频播放。
播放器提供丰富功能,包括手势识别、自动横竖屏切换、网络切换检测、静音播放等。
优化成果旨在提升播放器的交互体验与适应性,欢迎提供反馈、报告Bug或提出新功能需求。
获取源码、Demo与****:
知乎:[直接点击]
GitHub:[直接点击]
简书:[直接点击]