图形图像,动画,多媒体 读书笔记

编程入门 行业动态 更新时间:2024-10-21 23:20:13

<a href=https://www.elefans.com/category/jswz/34/1696731.html style=图形图像,动画,多媒体 读书笔记"/>

图形图像,动画,多媒体 读书笔记

1.AVI文件

AVI是音频视频交错的英文缩写,它是微软公司开发的一种符合RIFF文件规范的数字音频与视频文件格式,是将音频与视频同步组合在一起的文件格式,他对视频文件采用了一种有损压缩方式.


2.WMV文件

WMV也是微软公司推出的一种流媒体格式,在同等视频质量下,WMV格式的体积非常小,因此很适合在网上播放和传输.


3.RMVB文件

RMVB是一种视频文件格式,RMVB中的VB指他打破了压缩的平均比特率,使在静态画面下的比特率降低,来达到优化整个视频中比特率,提高效率节约资源的目的.RMVB最大特点是在保证文件清晰度的同时具有体积小巧的特点.


4.3GP文件

3GP是一种3G流媒体的视频编码格式,主要是为了配合3G网络的高传输速度而开发的,也是手机中的一种视频格式.3GP使用户能够发送大量的数据到移动电话网络,从而明确传输大型文件,是新的移动设备标准格式.优点是文件体积小,移动性强,适合移动设备使用.缺点是在pc上兼容性差.支持软件少,且播放质量差,帧数低,交avi差很多.


5.MOV文件

MOV是苹果公司开发的一种音频,视频文件格式,用于存储常用数字媒体类型.mov格式文件是以轨道的形式组织起来的.一个MOV格式文件结构中可以包含多个轨道,MOV格式文件,画面效果较avi各市要稍微好一些.


6.MP4文件

MP4是一种使用MPEG-4的多媒体文件格式,文件后缀名为MP4,采用H264解码.


7.M4V文件

M4V是一个标准视频文件格式,此种格式为iOS设备所使用,同事此格式基于MPEG-4编码第二版


关于 MPMovePlayerController


<p class="p1"><span class="s1">_moviePlayer</span><span class="s2">.</span><span class="s3">scalingMode</span><span class="s2"> = </span>MPMovieScalingModeAspectFit<span class="s2">;</span></p>
typedef NS_ENUM(NSInteger, MPMovieScalingMode) {MPMovieScalingModeNone,       // 原始尺寸MPMovieScalingModeAspectFit,  // 保持原始高宽比缩放视频,使其填充一个方向,另一个方向会有黑边MPMovieScalingModeAspectFill, // 保持原始高宽比缩放视频,使其填充两个方向,一个方向可能超出屏幕,则会切除MPMovieScalingModeFill        // 两个方向刚好填充两边,不考虑保持原始的高宽比缩放视频,结果有可能会高宽比例失真
};


_moviePlayer.controlStyle = MPMovieControlStyleDefault;typedef NS_ENUM(NSInteger, MPMovieControlStyle) {MPMovieControlStyleNone,       // 没有播放控制控件,适合与游戏等应用过度界面或片尾视频等MPMovieControlStyleEmbedded,   // 嵌入风格的播放控制控件,没有Done按钮MPMovieControlStyleFullscreen, // 全屏播放,有播放进度,Done按钮,快进等控件MPMovieControlStyleDefault = MPMovieControlStyleEmbedded //默认风格,没有Done按钮
};

注意,MPMovePlayerController 添加到view上需要add一个_moviePlayer . view,因为他不是view也不是controller 而是继承NSObject,还有就是要  [ _moviePlayer setFullscreen : YES animated : YES ];全屏显示. 在播放完成以后还要记得 removeFromSuperview


<p class="p1"><span class="s1">_moviePlayer</span><span class="s2">.</span>playbackState</p>
typedef NS_ENUM(NSInteger, MPMoviePlaybackState) {MPMoviePlaybackStateStopped, //停止状态MPMoviePlaybackStatePlaying, //播放状态MPMoviePlaybackStatePaused,  //暂停状态MPMoviePlaybackStateInterrupted, //临时中断状态MPMoviePlaybackStateSeekingForward, //向前跳过状态MPMoviePlaybackStateSeekingBackward //向后跳过状态
};


AVFoundation框架下的一些记录


AVPlayer,核心的播放视频需要的核心类,它有4个构造方法,可以通过NSURL或AVPlayerItem构造他,在呈现视频时候需要把AVPlayer放入到AVPlayerLayer中,然后把AVPlayerLayer对象添加到当前视图的图层上


AVQueuePlayer,如果需要播放多个视频时,可以使用AVQueuePlayer对象,他可以有多个AVPlayerItem对象组成


AVPlayerLayer,视频播放图层对象,它是需要添加到当前视图的图层上.


AVAsset,代表一个抽象的媒体,包含标题,文件大小等等,不关联任何格式.每个AVAsset由多个track组成,每个track可以是一个音频通道或者视频通道


AVURLAsset,是AVAsset具体实现类,可以使用NSURL来初始化AVURLAsset


AVPlayerItem,是代表一个AVAsset状态,可以使用他观察到视频播放状态.



AVPlayer的一个简单播放器


#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>@interface ViewController ()
{id timeObserver;//自定义监听着BOOL isPlaying;//判断是否播放}- (IBAction)play:(id)sender;
- (IBAction)seek:(id)sender;@property (weak, nonatomic) IBOutlet UISlider *slider;@property (weak, nonatomic) IBOutlet UIToolbar *toolBar;@property (nonatomic,weak) AVPlayer *avPlayer;
@property (nonatomic,weak) AVPlayerLayer *layer;
@property (nonatomic,strong) AVPlayerItem *playerItem;@end@implementation ViewController
- (void)viewDidLoad
{[super viewDidLoad];NSString *filepath = [[NSBundle mainBundle] pathForResource:@"YY" ofType:@"mp4"];NSURL *fileURL = [NSURL fileURLWithPath:filepath];//具体实现类AVURLAsset *asset = [AVURLAsset URLAssetWithURL:fileURL options:nil];//代表一个AVAsset状态,可以使用他观察到视频播放状态self.playerItem = [AVPlayerItem playerItemWithAsset:asset];//播放视频需要的核心类self.avPlayer = [AVPlayer playerWithPlayerItem: self.playerItem ];self.layer = [AVPlayerLayer playerLayerWithPlayer:self.avPlayer];float scale = 1.776;self.layer.frame = CGRectMake(0, -350,self.view.frame.size.width * scale,self.view.frame.size.height * scale);//添加到当前视图的图层上[self.view.layer insertSublayer:self.layer atIndex:0];double duration = CMTimeGetSeconds(asset.duration);self.slider.maximumValue =  duration;self.slider.minimumValue  = 0.0;isPlaying = NO;}- (void)didReceiveMemoryWarning
{[super didReceiveMemoryWarning];
}- (IBAction)play:(id)sender {UIBarButtonItem *item1;if (!isPlaying) {[self addObserver];[self.avPlayer seekToTime:kCMTimeZero];[self.avPlayer play];isPlaying = YES;item1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPausetarget:selfaction:@selector(play:)];} else  {isPlaying = NO;item1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPlaytarget:selfaction:@selector(play:)];[self.avPlayer pause];}NSMutableArray *items = [[NSMutableArray alloc] initWithArray:[self.toolBar items]];[items replaceObjectAtIndex:0 withObject:item1];[self.toolBar setItems:items];}- (IBAction)seek:(id)sender {float value = [self.slider value];[self.avPlayer seekToTime:CMTimeMakeWithSeconds(value, 10)];
}-(void)addObserver{if (timeObserver == nil) {//播放完成的通知[[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(playerItemDidReachEnd:)name:AVPlayerItemDidPlayToEndTimeNotificationobject:self.playerItem];//创建AVPlayer定时器事件观察者对象timeObserver = [self.avPlayer addPeriodicTimeObserverForInterval:CMTimeMake(1, 10)queue:dispatch_get_main_queue()usingBlock:^(CMTime time) {float duration = CMTimeGetSeconds(self.avPlayer.currentTime);NSLog(@"duration = %f",duration);self.slider.value = duration;}];}}- (void) playerItemDidReachEnd:(NSNotification*) aNotification
{NSLog(@"播放完成");if (timeObserver) {[self.avPlayer removeTimeObserver:timeObserver];timeObserver = nil;self.slider.value = 0.0;isPlaying = NO;[[NSNotificationCenter defaultCenter] removeObserver:selfname:AVPlayerItemDidPlayToEndTimeNotificationobject:nil];UIBarButtonItem* item1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPlaytarget:selfaction:@selector(play:)];NSMutableArray *items = [[NSMutableArray alloc] initWithArray:[self.toolBar items]];[items replaceObjectAtIndex:0 withObject:item1];[self.toolBar setItems:items];}}



原书:.html


更多推荐

图形图像,动画,多媒体 读书笔记

本文发布于:2024-02-24 21:40:58,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1696746.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:图形图像   读书笔记   多媒体   动画

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!