手机拍视频时,不能和音乐进行同步时出错是什么原因

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

在iOS中音频播放从形式上可以分为音效播放和音乐播放。前者主要指的是一些短音频播放,通常作为点缀音频,对于这类音频不需要进行进度、循环等控制。后者指的是一些较长的音频,通常是主音频,对于这些音频的播放通常需要进行精确的控制。在iOS中播放两类音频分别使用AudioToolbox.framework和AVFoundation.framework来完成音效和音乐播放。

AudioToolbox.framework是一套基于C语言的框架,使用它来播放音效其本质是将短音频注册到系统声音服务(System Sound Service)。System Sound Service是一种简单、底层的声音播放服务,但是它本身也存在着一些限制:

  • 音频播放时间不能超过30s
  • 数据必须是PCM或者IMA4格式
  • 音频文件必须打包成.caf、.aif、.wav中的一种(注意这是官方文档的说法,实际测试发现一些.mp3也可以播放)

下面是一个简单的示例程序:

* outSystemSoundID:声音id(此函数会将音效文件加入到系统音频服务中并返回一个长整形ID) //如果需要在播放完之后执行某些操作,可以调用如下方法注册一个播放完成回调函数

如果播放较大的音频或者要对音频有精确的控制则System Sound Service可能就很难满足实际需求了,通常这种情况会选择使用AVFoundation.framework中的AVAudioPlayer来实现。AVAudioPlayer可以看成一个播放器,它支持多种,而且能够进行进度、音量、播放速度等控制。首先简单看一下AVAudioPlayer常用的属性和方法:

立体声平衡,如果为-1.0则完全左声道,如果0.0则左右声道平衡,如果为1.0则完全为右声道
音量大小,范围0-1.0
播放速率,范围0.5-2.0,如果为1.0则正常播放,如果要修改播放速率则必须设置enableRate为YES
输出设备播放音频的时间,注意如果播放中被暂停此时间也会继续累加
循环播放次数,如果为0则不循环,如果小于0则无限循环,大于0则表示循环次数
音频播放设置信息,只读
是否启用音频测量,默认为NO,一旦启用音频测量可以通过updateMeters方法更新测量值
使用文件URL初始化播放器,注意这个URL不能是HTTP URL,AVAudioPlayer不支持加载网络媒体流,只能播放本地文件
加载音频文件到缓冲区,注意即使在播放之前音频文件没有加载到缓冲区程序也会隐式调用此方法。
在指定的时间开始播放音频
更新音频测量值,注意如果要更新音频测量值必须设置meteringEnabled为YES,通过音频测量值可以即时获得音频分贝等信息
获得指定声道的分贝峰值,注意如果要获得分贝峰值必须在此之前调用updateMeters方法
获得指定声道的分贝平均值,注意如果要获得分贝平均值必须在此之前调用updateMeters方法
  1. 初始化AVAudioPlayer对象,此时通常指定本地文件路径。
  2. 设置播放器属性,例如重复次数、音量大小等。
  3. 调用play方法播放。

下面就使用AVAudioPlayer实现一个简单播放器,在这个播放器中实现了播放、暂停、显示播放进度功能,当然例如调节音量、设置循环模式、甚至是声波图像(通过分析音频分贝值)等功能都可以实现,这里就不再一一演示。界面效果如下:

当然由于AVAudioPlayer一次只能播放一个音频文件,所有上一曲、下一曲其实可以通过创建多个播放器对象来完成,这里暂不实现。播放进度的实现主要依靠一个定时器实时计算当前播放时长和音频总时长的比例,另外为了演示委托方法,下面的代码中也实现了播放完成委托方法,通常如果有下一曲功能的话播放完可以触发下一曲音乐播放。下面是主要代码:

//初始化播放器,注意这里的Url参数只能时文件路径,不支持HTTP Url * 点击播放/暂停按钮

事实上上面的播放器还存在一些问题,例如通常我们看到的播放器即使退出到后台也是可以播放的,而这个播放器如果退出到后台它会自动暂停。如果要支持后台播放需要做下面几件事情:

3.为了能够让应用退到后台之后支持耳机控制,建议添加(这一步不是后台播放必须的)

前两步是后台播放所必须设置的,第三步主要用于接收远程事件,这部分内容之前的文章中有详细介绍,如果这一步不设置虽让也能够在后台播放,但是无法获得音频控制权(如果在使用当前应用之前使用其他播放器播放音乐的话,此时如果按耳机播放键或者控制中心的播放按钮则会播放前一个应用的音频),并且不能使用耳机进行音频控制。第一步操作相信大家都很容易理解,如果应用程序要允许运行到后台必须设置,正常情况下应用如果进入后台会被挂起,通过该设置可以上应用程序继续在后台运行。但是第二步使用的AVAudioSession有必要进行一下详细的说明。

在iOS中每个应用都有一个音频会话,这个会话就通过AVAudioSession来表示。AVAudioSession同样存在于AVFoundation框架中,它是单例模式设计,通过sharedInstance进行访问。在使用Apple设备时大家会发现有些应用只要打开其他音频播放就会终止,而有些应用却可以和其他应用同时播放,在多种音频环境中如何去控制播放的方式就是通过音频会话来完成的。下面是音频会话的几种会话模式:

混音播放,可以与其他音频应用同时播放
录音模式,用于录音时使用
播放和录音,此时可以录音也可以播放
硬件解码音频,此时不能播放和录制
多种输入输出,例如可以耳机、USB设备同时播放

注意:是否遵循静音键表示在播放过程中如果用户通过硬件设置为静音是否能关闭声音。

根据前面对音频会话的理解,相信大家开发出能够在后台播放的音频播放器并不难,但是注意一下,在前面的代码中也提到设置完音频会话类型之后需要调用setActive::方法将会话激活才能起作用。类似的,如果一个应用已经在播放音频,打开我们的应用之后设置了在后台播放的会话类型,此时其他应用的音频会停止而播放我们的音频,如果希望我们的程序音频播放完之后(关闭或退出到后台之后)能够继续播放其他应用的音频的话则可以调用setActive::方法关闭会话。代码如下:

* 显示当面视图控制器时注册远程事件 * 当前控制器视图不显示时取消远程控制 //初始化播放器,注意这里的Url参数只能时文件路径,不支持HTTP Url //添加通知,拔出耳机后暂停播放 * 点击播放/暂停按钮 * 一旦输出改变则执行此方法 //原设备为耳机则暂停 //根据实际情况播放完成可以将会话关闭,其他音频应用继续播放

在上面的代码中还实现了拔出耳机暂停音乐播放的功能,这也是一个比较常见的功能。在iOS7及以后的版本中可以通过通知获得输出改变的通知,然后拿到通知对象后根据userInfo获得是何种改变类型,进而根据情况对音乐进行暂停操作。

扩展--播放音乐库中的音乐

当前正在播放的音乐在播放队列中的索引
当前已播放时间,单位:秒
当前播放速度,是一个播放速度倍率,0表示暂停播放,1代表正常速度
获取应用播放器,注意此类播放器无法在后台播放
获取系统播放器,支持后台播放
使用媒体队列设置播放源媒体队列
使用媒体项集合设置播放源媒体队列
开启播放通知,注意不同于其他播放器,MPMusicPlayerController要想获得通知必须首先开启,默认情况无法获得通知
做好播放准备(加载音频到缓冲区),在使用play方法播放时如果没有做好准备回自动调用该方法

有了这些方法,就可以很容易获到歌曲、播放列表、专辑媒体等媒体队列了,这样就可以通过:- (void)setQueueWithQuery:(MPMediaQuery

无论是通过哪种方式获得MPMusicPlayerController的媒体源,可能都希望将每个媒体的信息显示出来,这时候可以通过MPMediaItem对象获得。一个MPMediaItem代表一个媒体文件,通过它可以访问媒体标题、专辑名称、专辑封面、音乐时长等等。无论是MPMediaQueue还是MPMediaItemCollection都有一个items属性,它是MPMediaItem数组,通过这个属性可以获得MPMediaItem对象。

下面就简单看一下MPMusicPlayerController的使用,在下面的例子中简单演示了音乐的选择、播放、暂停、通知、下一曲、上一曲功能,相信有了上面的概念,代码读起来并不复杂(示例中是直接通过MPMeidaPicker进行音乐选择的,但是仍然提供了两个方法getLocalMediaQuery和getLocalMediaItemCollection来演示如何直接通过MPMediaQueue获得媒体队列或媒体集合):

//初始化媒体选择器,这里设置媒体类型为音乐,其实这里也可以选择视频、广播等 //注意很多音乐信息如标题、专辑、表演者、封面、时长等信息都可以通过MPMediaItem的valueForKey:方法得到,但是从iOS7开始都有对应的属性可以直接访问

除了上面说的,在AVFoundation框架中还要一个AVAudioRecorder类专门处理录音操作,它同样支持。与AVAudioPlayer类似,你完全可以将它看成是一个录音机控制类,下面是常用的属性和方法:

录音时长,只读,注意仅仅在录音状态可用
输入设置的时间长度,只读,注意此属性一直可访问
是否启用录音测量,如果启用录音测量可以获得录音分贝等数据信息
录音机对象初始化方法,注意其中的url必须是本地文件url,settings是录音格式、编码等设置
准备录音,主要用于创建缓冲区,如果不手动调用,在调用record录音时也会自动调用
在指定的时间开始录音,一般用于录音暂停再恢复录音
在指定的时间开始录音,并指定录音时长
删除录音,注意要删除录音此时录音机必须处于停止状态
指定通道的测量峰值,注意只有调用完updateMeters才有值
指定通道的测量平均值,注意只有调用完updateMeters才有值

AVAudioRecorder很多属性和方法跟AVAudioPlayer都是类似的,但是它的创建有所不同,在创建录音机时除了指定路径外还必须指定录音设置信息,因为录音机必须知道录音文件的格式、采样率、通道数、每个采样点的位数等信息,但是也并不是所有的信息都必须设置,通常只需要几个常用设置。关于录音设置详见帮助文档中的“”。

下面就使用AVAudioRecorder创建一个录音机,实现了录音、暂停、停止、播放等功能,实现效果大致如下:

在这个示例中将实行一个完整的录音控制,包括录音、暂停、恢复、停止,同时还会实时展示用户录音的声音波动,当用户点击完停止按钮还会自动播放录音文件。程序的构建主要分为以下几步:

  1. 创建录音机AVAudioRecorder,指定录音保存的路径并且设置录音属性,注意对于一般的录音文件要求的采样率、位数并不高,需要适当设置以保证录音文件的大小和效果。
  2. 设置录音机代理以便在录音完成后播放录音,打开录音测量保证能够实时获得录音时的声音强度。(注意声音强度范围-160到0,0代表最大输入)
  3. 创建音频播放器AVAudioPlayer,用于在录音完成之后播放录音。
  4. 创建一个定时器以便实时刷新录音测量值并更新录音强度到UIProgressView中显示。
  5. 添加录音、暂停、恢复、停止操作,需要注意录音的恢复操作其实是有音频会话管理的,恢复时只要再次调用record方法即可,无需手动管理恢复时间等。
//设置为播放和录音状态,以便可以在录制完之后播放录音 * 取得录音文件保存路径 //设置录音采样率,8000是电话采样率,对于一般录音已经够了 //设置通道,这里采用单声道 //每个采样点位数,分为8、16、24、32 //是否使用浮点数采样 //创建录音文件保存路径 * 录音声波监控定制器 * 恢复录音只需要再次调用record,AVAudioSession会帮助你记录上次录音位置并追加录音 * 录音完成,录音完成后播放录音

大家应该已经注意到了,无论是前面的录音还是音频播放均不支持网络流媒体播放,当然对于录音来说这种需求可能不大,但是对于音频播放来说有时候就很有必要了。AVAudioPlayer只能播放本地文件,并且是一次性加载所以音频数据,初始化AVAudioPlayer时指定的URL也只能是File URL而不能是HTTP URL。当然,将音频文件下载到本地然后再调用AVAudioPlayer来播放也是一种播放网络音频的办法,但是这种方式最大的弊端就是必须等到整个音频播放完成才能播放,而不能使用流式播放,这往往在实际开发中是不切实际的。那么在iOS中如何播放网络流媒体呢?就是使用AudioToolbox框架中的音频队列服务Audio Queue Services。

使用音频队列服务完全可以做到音频播放和录制,首先看一下录音音频服务队列:

一个音频服务队列Audio Queue有三部分组成:

三个缓冲器Buffers:每个缓冲器都是一个存储音频数据的临时仓库。

一个缓冲队列Buffer Queue:一个包含音频缓冲器的有序队列。

一个回调Callback:一个自定义的队列回调函数。

声音通过输入设备进入缓冲队列中,首先填充第一个缓冲器;当第一个缓冲器填充满之后自动填充下一个缓冲器,同时会调用回调函数;在回调函数中需要将缓冲器中的音频数据写入磁盘,同时将缓冲器放回到缓冲队列中以便重用。下面是Apple官方关于音频队列服务的流程示意图:

类似的,看一下音频播放缓冲队列,其组成部分和录音缓冲队列类似。

但是在音频播放缓冲队列中,回调函数调用的时机不同于音频录制缓冲队列,流程刚好相反。将音频读取到缓冲器中,一旦一个缓冲器填充满之后就放到缓冲队列中,然后继续填充其他缓冲器;当开始播放时,则从第一个缓冲器中读取音频进行播放;一旦播放完之后就会触发回调函数,开始播放下一个缓冲器中的音频,同时填充第一个缓冲器放;填充满之后再次放回到缓冲队列。下面是详细的流程:

当然,要明白音频队列服务的原理并不难,问题是如何实现这个自定义的回调函数,这其中我们有大量的工作要做,控制播放状态、处理异常中断、进行音频编码等等。由于牵扯内容过多,而且不是本文目的,如果以后有时间将另开一篇文章重点介绍,目前有很多第三方优秀框架可以直接使用,例如、。由于前者当前只有非ARC版本,所以下面不妨使用FreeStreamer来简单演示在线音频播放的过程,当然在使用之前要做如下准备工作:

然后就可以编写代码播放网络音频了:

其实FreeStreamer的功能很强大,不仅仅是播放本地、网络音频那么简单,它还支持播放列表、检查包内容、RSS订阅、播放中断等很多强大的功能,甚至还包含了一个音频分析器,有兴趣的朋友可以访问

在iOS中播放视频可以使用MediaPlayer.framework种的MPMoviePlayerController类来完成,它支持本地视频和网络视频播放。这个类实现了MPMediaPlayback协议,因此具备一般的播放器控制功能,例如播放、暂停、停止等。但是MPMediaPlayerController自身并不是一个完整的视图控制器,如果要在UI中展示视频需要将view属性添加到界面中。下面列出了MPMoviePlayerController的常用属性和方法:

播放媒体URL,这个URL可以是本地路径,也可以是网络路径
播放器视图,如果要显示视频必须将此视图添加到控制器视图中
当网络媒体缓存到一定数据时是否自动播放,默认为YES
是否全屏展示,默认为NO,注意如果要通过此属性设置全屏必须在视图显示完成后设置,否则无效
视频缩放填充模式,枚举类型:
MPMovieScalingModeFill:不固定缩放比例压缩填充整个视图,视频不会被裁切但是比例失衡
媒体时长,如果未知则返回0
媒体可播放时长,主要用于表示网络媒体已下载视频时长
视频实际尺寸,如果未知则返回CGSizeZero
是否允许无线播放,默认为YES
当前媒体是否正在通过AirPlay播放
当前播放时间,单位:秒
当前播放速度,如果暂停则为0,正常速度为1.0,非0数据表示倍率
使用指定的URL初始化媒体播放控制器对象
设置视频全屏,注意如果要通过此方法设置全屏则必须在其视图显示之后设置,否则无效
获取在指定播放时间的视频缩略图,第一个参数是获取缩略图的时间点数组;第二个参数代表时间点精度,枚举类型:
取消所有缩略图获取请求
准备播放,加载视频数据到缓存,当调用play方法时如果没有准备好会自动调用此方法
视频缩放填充模式发生改变
播放状态改变,可配合playbakcState属性获取具体状态
当前播放的媒体内容发生改变
当媒体开始通过AirPlay播放或者结束AirPlay播放
确定了媒体的实际尺寸后

注意MPMediaPlayerController的状态等信息并不是通过代理来和外界交互的,而是通过通知中心,因此从上面的列表中可以看到常用的一些通知。由于MPMoviePlayerController本身对于媒体播放做了深度的封装,使用起来就相当简单:创建MPMoviePlayerController对象,设置frame属性,将MPMoviePlayerController的view添加到控制器视图中。下面的示例中将创建一个播放控制器并添加播放状态改变及播放完成的通知:

* 创建媒体播放控制器 * 添加通知监控媒体播放控制器状态 * 播放状态改变,注意播放完成时的状态是暂停* 创建媒体播放控制器 * 添加通知监控媒体播放控制器状态 * 播放状态改变,注意播放完成时的状态是暂停 * 缩略图请求完成,此方法每次截图成功都会调用一次 //保存图片到相册(首次调用会请求用户获得访问相册权限)

通过前面的方法大家应该已经看到,使用MPMoviePlayerController来生成缩略图足够简单,但是如果仅仅是是为了生成缩略图而不进行视频播放的话,此刻使用MPMoviePlayerController就有点大材小用了。其实使用AVFundation框架中的AVAssetImageGenerator就可以获取视频缩略图。使用AVAssetImageGenerator获取缩略图大致分为三个步骤:

  1. 创建AVURLAsset对象(此类主要用于获取媒体信息,包括视频、声音等)。
* 截取指定时间的视频缩略图

其实MPMoviePlayerController如果不作为嵌入视频来播放(例如在新闻中嵌入一个视频),通常在播放时都是占满一个屏幕的,特别是在iPhone、iTouch上。因此从iOS3.2以后苹果也在思考既然MPMoviePlayerController在使用时通常都是将其视图view添加到另外一个视图控制器中作为子视图,那么何不直接创建一个控制器视图内部创建一个MPMoviePlayerController属性并且默认全屏播放,开发者在开发的时候直接使用这个视图控制器。这个内部有一个MPMoviePlayerController的视图控制器就是MPMoviePlayerViewController,它继承于UIViewController。MPMoviePlayerViewController内部多了一个moviePlayer属性和一个带有url的初始化方法,同时它内部实现了一些作为模态视图展示所特有的功能,例如默认是全屏模式展示、弹出后自动播放、作为模态窗口展示时如果点击“Done”按钮会自动退出模态窗口等。在下面的示例中就不直接将播放器放到主视图控制器,而是放到一个模态视图控制器中,简单演示MPMoviePlayerViewController的使用。

* 添加通知监控媒体播放控制器状态 * 播放状态改变,注意播放完成时的状态是暂停

这里需要强调一下,由于MPMoviePlayerViewController的初始化方法做了大量工作(例如设置URL、自动播放、添加点击Done完成的监控等),所以当再次点击播放弹出新的模态窗口的时如果不销毁之前的MPMoviePlayerViewController,那么新的对象就无法完成初始化,这样也就不能再次进行播放。

MPMoviePlayerController足够强大,几乎不用写几行代码就能完成一个播放器,但是正是由于它的高度封装使得要自定义这个播放器变得很复杂,甚至是不可能完成。例如有些时候需要自定义播放器的样式,那么如果要使用MPMoviePlayerController就不合适了,如果要对视频有自由的控制则可以使用AVPlayer。AVPlayer存在于AVFoundation中,它更加接近于底层,所以灵活性也更强:

AVAsset:主要用于获取多媒体信息,是一个抽象类,不能直接使用。

AVPlayerItem:一个媒体资源管理对象,管理者视频的一些基本信息和状态,一个AVPlayerItem对应着一个视频资源。

下面简单通过一个播放器来演示AVPlayer的使用,播放器的效果如下:

在这个自定义的播放器中实现了视频播放、暂停、进度展示和视频列表功能,下面将对这些功能一一介绍。

首先说一下视频的播放、暂停功能,这也是最基本的功能,AVPlayer对应着两个方法play、pause来实现。但是关键问题是如何判断当前视频是否在播放,在前面的内容中无论是音频播放器还是视频播放器都有对应的状态来判断,但是AVPlayer却没有这样的状态属性,通常情况下可以通过判断播放器的播放速度来获得播放状态。如果rate为0说明是停止状态,1是则是正常播放状态。

其次要展示播放进度就没有其他播放器那么简单了。在前面的播放器中通常是使用通知来获得播放器的状态,媒体加载状态等,但是无论是AVPlayer还是AVPlayerItem(AVPlayer有一个属性currentItem是AVPlayerItem类型,表示当前播放的视频对象)都无法获得这些信息。当然AVPlayerItem是有通知的,但是对于获得播放状态和加载状态有用的通知只有一个:播放完成通知AVPlayerItemDidPlayToEndTimeNotification。在播放视频时,特别是播放网络视频往往需要知道视频加载情况、缓冲情况、播放情况,这些信息可以通过KVO监控AVPlayerItem的status、loadedTimeRanges属性来获得。当AVPlayerItem的status属性为AVPlayerStatusReadyToPlay是说明正在播放,只有处于这个状态时才能获得视频时长等信息;当loadedTimeRanges的改变时(每缓冲一部分数据就会更新此属性)可以获得本次缓冲加载的视频范围(包含起始时间、本次加载时长),这样一来就可以实时获得缓冲情况。然后就是依靠AVPlayer的- time))block方法获得播放进度,这个方法会在设定的时间间隔内定时更新播放进度,通过time参数通知客户端。相信有了这些视频信息播放进度就不成问题了,事实上通过这些信息就算是平时看到的其他播放器的缓冲进度显示以及拖动播放的功能也可以顺利的实现。

最后就是视频切换的功能,在前面介绍的所有播放器中每个播放器对象一次只能播放一个视频,如果要切换视频只能重新创建一个对象,但是AVPlayer却提供了- (void)replaceCurrentItemWithPlayerItem:(AVPlayerItem *)item方法用于在不同的视频之间切换(事实上在AVFoundation内部还有一个AVQueuePlayer专门处理播放列表切换,有兴趣的朋友可以自行研究,这里不再赘述)。

* 截取指定时间的视频缩略图 * 给播放器添加进度更新 //这里设置每秒执行一次 //监控状态属性,注意AVPlayer也有一个status属性,通过监控它的status也可以获得播放状态 //监控网络加载情况属性 * 通过KVO监控播放器状态 * 点击播放/暂停按钮 * 切换选集,这里使用按钮的tag代表视频名称

到目前为止无论是MPMoviePlayerController还是AVPlayer来播放视频都相当强大,但是它也存在着一些不可回避的问题,那就是支持的视频编码格式很有限:H.264、MPEG-4,扩展名(压缩格式):.mp4、.mov、.m4v、.m2v、.3gp、.3g2等。但是无论是MPMoviePlayerController还是AVPlayer它们都支持绝大多数音频编码,所以大家如果纯粹是为了播放音乐的话也可以考虑使用这两个播放器。那么如何支持更多视频编码格式呢?目前来说主要还是依靠第三方框架,在iOS上常用的视频编码、解码框架有:、, 具体使用方式今天就不再做详细介绍。

下面看一下在iOS如何拍照和录制视频。在iOS中要拍照和录制视频最简单的方法就是使用UIImagePickerController。UIImagePickerController继承于UINavigationController,前面的文章中主要使用它来选取照片,其实UIImagePickerController的功能不仅如此,它还可以用来拍照和录制视频。首先看一下这个类常用的属性和方法:

媒体类型,默认情况下此数组包含kUTTypeImage,所以拍照时可以不用设置;但是当要录像的时候必须设置,可以设置为kUTTypeVideo(视频,但不带声音)或者kUTTypeMovie(视频并带有声音)
视频最大录制时长,默认为10 s
是否显示摄像头控制面板,默认为YES
摄像头上覆盖的视图,可用通过这个视频来自定义拍照或录像界面
指定的源设备上可用的媒体类型,一般就是图片和视频
指定摄像头的闪光灯是否可用
扩展方法(主要用于保存照片、视频到相簿)
  1. 指定拾取源,平时选择照片时使用的拾取源是照片库或者相簿,此刻需要指定为摄像头类型。
  2. 指定摄像头,前置摄像头或者后置摄像头。
  3. 指定捕获模式,拍照或者录制视频。(视频录制时必须先设置媒体类型再设置捕获模式
  4. 拍照和录制视频结束后在代理方法中展示/保存照片或视频。

当然这个过程中有很多细节可以设置,例如是否显示拍照控制面板,拍照后是否允许编辑等等,通过上面的属性/方法列表相信并不难理解。下面就以一个示例展示如何使用UIImagePickerController来拍照和录制视频,下面的程序中只要将_isVideo设置为YES就是视频录制模式,录制完后在主视图控制器中自动播放;如果将_isVideo设置为NO则为拍照模式,拍照完成之后在主视图控制器中显示拍摄的照片:

//通过这里设置当前程序是拍照还是录制视频 //如果允许编辑则获得编辑后的照片,否则获取原始照片 //保存视频到相簿,注意也可以使用ALAssetsLibrary来保存 //录制完之后自动播放

运行效果(视频录制):

不得不说UIImagePickerController确实强大,但是与MPMoviePlayerController类似,由于它的高度封装性,要进行某些自定义工作就比较复杂了。例如要做出一款类似于美颜相机的拍照界面就比较难以实现了,此时就可以考虑使用AVFoundation来实现。AVFoundation中提供了很多现成的播放器和录音机,但是事实上它还有更加底层的内容可以供开发者使用。因为AVFoundation中抽了很多和底层输入、输出设备打交道的类,依靠这些类开发人员面对的不再是封装好的音频播放器AVAudioPlayer、录音机(AVAudioRecorder)、视频(包括音频)播放器AVPlayer,而是输入设备(例如麦克风、摄像头)、输出设备(图片、视频)等。首先了解一下使用AVFoundation做拍照和视频录制开发用到的相关类:

AVCaptureSession:媒体(音、视频)捕获会话,负责把捕获的音视频数据输出到输出设备中。一个AVCaptureSession可以有多个输入输出:

AVCaptureDevice:输入设备,包括麦克风、摄像头,通过该对象可以设置物理设备的一些属性(例如相机聚焦、白平衡等)。

AVCaptureVideoPreviewLayer:相机拍摄预览图层,是CALayer的子类,使用该对象可以实时查看拍照或视频录制效果,创建该对象需要指定对应的AVCaptureSession对象。

使用AVFoundation拍照和录制视频的一般步骤如下:

  1. 使用AVCaptureDevice的静态方法获得需要使用的设备,例如拍照和录像就需要获得摄像头设备,录音就要获得麦克风设备。
  2. 将捕获的音频或视频数据输出到指定文件。

下面看一下如何使用AVFoundation实现一个拍照程序,在这个程序中将实现摄像头预览、切换前后摄像头、闪光灯设置、对焦、拍照保存等功能。应用大致效果如下:

在程序中定义会话、输入、输出等相关对象。

在控制器视图将要展示时创建并初始化会话、摄像头设备、输入、输出、预览图层,并且添加预览图层到视图中,除此之外还做了一些初始化工作,例如添加手势(点击屏幕进行聚焦)、初始化界面等。

//根据输入设备初始化设备输入对象,用于获得输入数据 //初始化设备输出对象,用于获得输出数据 //将设备输入添加到会话中 //将设备输出添加到会话中 //创建视频预览层,用于实时展示摄像头状态 //将视频预览层添加到界面中

在控制器视图展示和视图离开界面时启动、停止会话。

定义闪光灯开闭及自动模式功能,注意无论是设置闪光灯、白平衡还是其他输入设备属性,在设置之前必须先锁定配置,修改完后解锁。

* 改变设备属性的统一操作方法

定义切换摄像头功能,切换摄像头的过程就是将原有输入移除,在会话中添加新的输入,但是注意动态修改会话需要首先开启配置,配置成功后提交配置。

//获得要调整的设备输入对象 //改变会话的配置前一定要先开启配置,配置完成后提交配置改变

添加点击手势操作,点按预览视图时进行聚焦、白平衡设置。

* 添加点按手势,点按时聚焦 //将UI坐标转化为摄像头坐标

定义拍照功能,拍照的过程就是获取连接,从连接中获得捕获的输出数据并做保存操作。

//根据设备输出获得连接 //根据连接取得设备输出的数据//根据输入设备初始化设备输入对象,用于获得输入数据 //初始化设备输出对象,用于获得输出数据 //将设备输入添加到会话中 //将设备输出添加到会话中 //创建视频预览层,用于实时展示摄像头状态 //将视频预览层添加到界面中 //根据设备输出获得连接 //根据连接取得设备输出的数据 //获得要调整的设备输入对象 //改变会话的配置前一定要先开启配置,配置完成后提交配置改变 * 给输入设备添加通知 //注意添加区域改变捕获通知必须首先设置设备允许捕获 * 取得指定位置的摄像头 * 改变设备属性的统一操作方法 * 添加点按手势,点按时聚焦 //将UI坐标转化为摄像头坐标 * 设置闪光灯按钮状态

其实有了前面的拍照应用之后要在此基础上做视频录制功能并不复杂,程序只需要做如下修改:

  1. 添加一个音频输入到会话(使用[[AVCaptureDevice devicesWithMediaType:AVMediaTypeAudio] firstObject]获得输入设备,然后根据此输入设备创建一个设备输入对象),在拍照程序中已经添加了视频输入所以此时不需要添加视频输入。
  2. 创建一个音乐播放文件输出对象AVCaptureMovieFileOutput取代原来的照片输出对象。
  3. 将捕获到的视频数据写入到临时文件并在停止录制之后保存到相簿(通过AVCaptureMovieFileOutput的代理方法)。

相比拍照程序,程序的修改主要就是以上三点。当然为了让程序更加完善在下面的视频录制程序中加入了屏幕旋转视频、自动布局和后台保存任务等细节。下面是修改后的程序:

//添加一个音频输入设备 //根据输入设备初始化设备输入对象,用于获得输入数据 //初始化设备输出对象,用于获得输出数据 //将设备输入添加到会话中 //将设备输出添加到会话中 //创建视频预览层,用于实时展示摄像头状态 //将视频预览层添加到界面中 ////屏幕旋转时调整视频预览图层的方向 //屏幕旋转时调整视频预览图层的方向 //旋转后重新设置大小 //根据设备输出获得连接 //根据连接取得设备输出的数据 //如果支持多任务则则开始多任务 //预览图层和视频方向保持一致 //获得要调整的设备输入对象 //改变会话的配置前一定要先开启配置,配置完成后提交配置改变 //视频录入完成之后在后台将视频存储到相簿 * 给输入设备添加通知 //注意添加区域改变捕获通知必须首先设置设备允许捕获 * 取得指定位置的摄像头 * 改变设备属性的统一操作方法 * 添加点按手势,点按时聚焦 //将UI坐标转化为摄像头坐标

前面用了大量的篇幅介绍了iOS中的音、视频播放和录制,有些地方用到了封装好的播放器、录音机直接使用,有些是直接调用系统服务自己组织封装,正如本篇开头所言,iOS对于多媒体支持相当灵活和完善,那么开放过程中如何选择呢,下面就以一个表格简单对比一下各个开发技术的优缺点。

提示:从本文及以后的文章中可能慢慢使用storyboard或xib,原因如下:1.苹果官方目前主推storyboard;2.后面的文章中做屏幕适配牵扯到很多内容都是storyboard中进行(尽管纯代码也可以实现,但是纯代码对autolayout支持不太好)3.通过前面的一系列文章大家对于纯代码编程应该已经有一定的积累了(纯代码确实可以另初学者更加了解程序运行原理)。

}

打向韩三平的“三枪”另有靶子文/魏英杰从《英雄》开始,,老谋子的电影似乎形成了一种效应:他的电影骂的人多,,看的人也多;骂得越厉害,,票房越火爆。近日上档的《三枪拍案惊奇》也是这样。这部糅合了科恩兄弟和东北二人转风格的新作,,遭遇9fc530f5a31ac2b312e4f6e42ceb括洪晃、韩寒以及多名影评人的猛烈抨击,,但是刚刚公布的票房却是直逼两亿元大关。电影还没看,,谁是谁非不好说太多。不过,,《三枪》的制片人、张艺谋的老搭档张伟平接受采访时炮轰中影集团老大韩三平“搞垄断”,,这两天俨然又成了一大热门事件。这件事情,,我认为更加值得重视。毕竟,,《三枪》仅涉及一部影片的优劣,,而如果有什么利益集团搞垄断的话,,影响的却是整个电影行业的发展。张伟平在接受采访时,,点名和不点名地列举了中影集团三大罪状:其一,,有人以某集团的名义要求媒体撤下头条中的正面报道,,一定要上负面报道;其二,,韩三平利用国家资源搞个有暗香盈袖人崇瑞脑消金兽拜,,一家独大,,把政府最高奖项的华表奖搞得乌烟瘴气;其三,,中影集团拿进口大片的排期来挤压国产大片。“你不跟他合作,,他就在这个档期里放两部进口片跟你火拼,,放狗咬你。”对于这些“指控”,,中影集团也已经正面回应。有时候,,“矛盾公开化”真是一件好事情。如果不是张伟平——直接说就是“张艺谋团队”向韩三平及中影集团打出这“三枪”,,观众可能还不知道电影产业原来也是“贵圈真乱”。说实话,,这时候大概也只有老谋子这样的大腕,,才敢于公开挺身而出了。中影集团现有的影响力和竞争优势,,大家都是看得见的。且看《建国大业》里众星云集的场面,,再看到周星驰、成龙等多位巨星甘于跑龙套,,就是最好的证明。但是,,这能否说明中影集团就是一家垄断企业吗?我想可能还需要进一步讨论。大致来讲,,垄断有行政垄断、行业垄断、经济性垄断之分。依据其定义,,中影集团似乎都靠不上,,除了国外电影引进业务方面,,它在电影制作、发行等方面都不具有独家垄断的势力。从具体情形来看,,中影其实是借助政策的扶持,,形成了“一家独大”的市场格局。换句话说,,虽然不能指责中影搞垄断,,但不能不深究其“一家独大”的根源。从这点来看,,张伟平指责中影集团的地方,,并非空穴来风。由此,,国内电影行业至少需要在下述方面进行检讨与反思:首先是国内电影的政策问题。按理说,,电影政策应当扶助市场弱小力量,,防止该行业出现一家独大甚至垄断格局。但从现在的政策方向看,,像中影集团、上影集团等国有电影公司不仅具有市场竞争的先发优势,,而且吃了不少“政策小灶”。这样的政策导向,,十分不利于民营电影公司的发展壮大。其次,,电影进口业务尚待进一步市场化。按规定,,国外电影的进口与发行业务由广电总局批准的相关企业专营或发行。具体讲,,目前国外电影进口业务由国家指定中影集团专营,,发行业务由中影和华夏电影发行公司负责。这样做不仅不利于电影进口和发行的市场化,,而且从技术角度来讲,,确实可能出现张伟平所说的,,出现利用进口影片来挤压其他影片的非正常竞争手段。前些天我就很纳闷,,为什么想看《暮光之城2》,,一看档期却都是排在白天。现在才知道,,原来这部电影是由华夏这个小兄弟发行的。这么来看,,广电总局应该给更多具有进口和发行实力的电影公司颁发许可证,,以打破目前进口影片的非市场竞争格局。第三,,中影集团之所以“一家独大”,,除了政策扶持和进口国外电影等优势,,由于它自己还掌握着不少院线资源,,在业内形成“一条龙服务”局面,,难免会对其他只有影片制作优势的电影公司产生排挤效应。国有电影公司进军院线,,这本来是作为一种“先进经验”来推广的。但从完善市场竞争的角度,,还是有必要把制作、发行、院线等分开来,,鼓励电影公司集中优势在各自领域做强做大,,否则国有电影公司很容易凭借自身资源打压对手,,最终垄断整个行业。一个让人敢怒不敢言的“老大哥”在电影行业出现,,显然不是什么好事情。所以,,张伟平指责中影集团“搞垄断”,,对目前国内电影市场的发展来讲不失为一剂醒酒药。特别是对于政策制定者和行业主管部门,,很有必要从这场口水战看到国内电影市场的弊端所在,,加快电影体制改革的进程。打向韩三平及中影集团的“三枪”,,背后其实另有靶子。2009年12月21日

灵台(一)五更五更了。“既、晦、朔、望,五更上朝,,诸侯之职也.......”夷皋朝服冠冕,端端正正地坐在朝堂上,一面揉着惺忪的睡眼,一面不住无可奈何地望着怀抱竹简、手执笔削,面无表情、一刻不离左右的左史右史。脚步声响,脚步声促,,六卿、九大夫,,鱼贯趋入,唉,还是那些看腻了的老面孔。“主公昨日驾临绛水观渔,大不合礼法,臣职司相国,,理当规谏.......”赵盾,又是赵盾。夷皋无奈、甚至乞求地望者阶下那个袍子红红,,脸膛也红红的老头儿,希望他快点说完。“《书》云.......《诗》云.......鲁臧子又云.......”赵盾端着那条又宽又大的象笏,抑扬顿挫,不紧不慢地念着,一点也没有快些说完的意思。倒不是成心怠慢国君,臣下谏争,礼不得直视君颜,夷皋那可怜巴巴的眼神,阶下眼观鼻、鼻观口的赵盾自然半点也没看见。“为君之道,道在新民,下官以为主公观渔,意在知民疾苦,此人君之份也,于情不当苛责。”一个脸上长着稀稀拉拉麻子,,颌下长着稀稀拉拉胡子的大臣越班而出,不紧不慢地说道。夷皋轻吁一口气,脸上露出一点轻松的神色来。其实他昨天出城观渔,,没想过这许多,,差不多什么也没想。他只是在宫里住的腻味了,想出去透口气而已,他本以为,自己谁也没惊动,什么也没妨碍的。他忍不住又瞥了阶下一眼。即使不瞥,,他也知道说话的是谁。大司寇屠岸贾。只要相国赵盾说白,,他一定说黑;赵盾说右,他一定说左,十四年了,每次都如此,这次还如此。他不喜欢赵盾,也不怎么喜欢屠岸贾,他喜欢玩。所以赵盾的话他不爱听,,屠岸贾的话他爱听。阶下,赵盾的红脸涨得更红了:“司寇此言大谬!调和燮理,劝课农桑,,此相国之职也,司寇如此说话,难道是暗指本相失职么?”说毕,他怒气不息,向着夷皋长揖到地,把象笏往阶前一放,一转身,大步流星地径自走了。夷皋突然觉得有些愤怒了。其实他不怎么喜欢朝政的。所以十四年来,,相国说什么做什么他都点头可奏,而且,虽然相国的话听起来头有点疼,但听左右人说,相国做的却也不错。可是他毕竟已经十八岁了,毕竟是万乘晋国的国君,毕竟是诸侯的盟主。“这个赵盾,,太不把国君放在眼里了!应该.......”一个声音突然在夷皋耳边响起,把他着实吓了一大跳:这句话他只是在脑子里转了几圈,却不料有人竟当众替他说了出来。屠岸贾,当然只能是屠岸贾。夷皋撇了撇嘴,,你是国君,还是我是国君?他努了努嘴,做了个手势:“无事,散朝!”众臣面面相觑,,半晌,泱泱行礼而退。一个白净面膛的汉子走到殿门又踱回来,,夷皋认出,他是先君女婿,赵盾的族弟赵穿。他笑了笑,赵穿,,他不怕的。赵穿总是笑嘻嘻的,,一点也不凶,从来也没让他觉得过累,觉得过厌烦。只见赵穿走到阶前,神秘兮兮的左右顾盼了一下,从怀里摸出件物事来:“这是臣搜罗来的宝物,,青玉九连环,,不敢独享,谨奉主公赏玩。”他顿了顿,“臣兄盾.......”夷皋笑着挥挥手:就算冲着赵穿,也只能让赵盾多唠叨几天了。朝堂如今只剩下了夷皋自己,以及永远面无表情,在和不在都差不多的左史右史。天色已大亮,暮秋的阳光,无力地透过殿门窗棂,淡淡地洒在席前玉色融融的九连环上。夷皋粘起九连环,,饶有兴趣地摆弄着,想试着把那九个环解开。他左弄两下,右弄两下,那九个绿幽幽的玉环却毫不买帐,,依旧死死纠结在一起。他一下子没了兴致,随手把九连环丢在腿边,懒洋洋地站起身来,,伸了个大懒腰,打了个大哈欠。几千年后的今天,他被人叫做晋灵公,夷皋这个名字,,反倒没多少人知道了。谥法云,不勤成名曰灵,死而志成曰灵,死见神能曰灵,乱而不损曰灵,好祭鬼怪曰灵,极知鬼神曰灵.......虽然不能算作最坏的评价,反正终究都不是什么好话。可此时此刻,新绛城内城外的卿大夫士、国人野人,却当然并不知道这些后人的笔墨官司。在他们眼里,这位不满二十的国君,,虽不算聪明,也不算太笨;虽不算勤政,,也不算太懒.......“大抵就是这样吧,反正,这和我们有什么关系呢?”城外逆旅里,,一个老者这样作答那些好奇的外国客商,,一面慢悠悠地理着雪白的长须。(二)熊掌难熟宫苑,灵台。现在夷皋终于可以玩了。此时他的身边只剩下了宫人宦者,连影子一般的左史右史,也在他跨入内廷的一刹那,乖乖地止住了随行的脚步。此时他正懒洋洋地倚在一个宫人膝上,,一边饮酒,一边看另外几个宫人的歌舞。身边的宫人很温柔,舞蹈的宫人也很起劲。但夷皋的脸上却始终没有半点笑容。因为枕边的宫人总是一样的温柔,舞蹈的宫人也总是一样的舞步。他突然觉得,其实玩也没什么意思。其实,偶尔,他也想勤政一下的,,虽然只是偶尔。可是所有的政务相国都处理了,所有的军务相国都操劳了,所有的人事相国都安排了,他,晋侯,,所需要做的,只是对这一切,照例地说一声“可”或者“不可”罢了。其实说可是可,说不可差不多也是可。当然他也知道,相国把晋国治理得挺不错,大家都这么说,甚至连屠岸贾也没说大家说得完全不对。他就算想勤政,其实也实在没多少政可以勤的。可虽然如此,相国却仍差不多每次上朝都要絮絮不休地廷谏,人君当克己,当守礼,当勤政......大概,相国的意思是,不管有没有政可以勤,也要摆出个勤的样子来给大家看罢?“可是这样,我不累么?你,相国,也不累么?”“启奏主公,大司寇屠岸贾求见。”宦者的禀报打断了乐舞,,也打断了夷皋的胡思乱想。夷皋挥挥手,让乐舞继续,也让屠岸贾进来。屠岸贾是来陪国君玩的。现在他就侍坐在夷皋的左侧,面前也放了一个几案,有菜,有酒。但他既没有吃,也没有喝,只是不断转着他的眼珠子。夷皋浅笑,他也浅笑;夷皋大笑,他也大笑。“他其实和相国一样,也一点不喜欢玩。”夷皋瞥着屠岸贾,突然闪出这样的念头来。他忽地油然生出一股烦躁之气,挟了块鹿肉放进嘴里,却立即又哇地吐了出来:“呸!什么猪狗之食。左右!速传熊掌来!”一个小寺人急忙趋前跪下:“主公,熊掌难熟,炊人说还需等半个时辰......”夷皋没有答言,脸色却已渐渐地变了。“主公传熊掌,尔等遵旨便了,如何这般支吾!”屠岸贾跽坐起来,作脸作色地斥道。小寺人不敢再言,一骨碌爬起来,一溜烟地跑远了。熊掌难熟。“这、这叫我如何下咽,,嗯?嗯?”夷皋手扶几案咆哮着,脸已经愤怒地扭曲了。小寺人跪伏在案前,颤抖着不敢抬头,,嘴里却忍不住嗫喏着:“小人......。小人早就奏说需待半......半个时辰,是主公......是主公......”是主公?他们还知道我是主公?上朝不高兴,,玩也不高兴,现在连个小小的熊掌也让我不高兴。夷皋这样想着,攥住铜斗的右手,手心已沁出了汗珠。“你这畜生,如何敢如此顶撞主公!......”耳边隐隐约约,是屠岸贾高亢的嗓音。是主公?他们还知道我是主公?夷皋突然热血上涌,一扬手,铜斗直飞出去。“啊~~”一片血光溅起,小寺人扑地倒下,,再也没能爬起来。夷皋的脑袋轰地一声,登时一片空白,他乞求般地看向屠岸贾。屠岸贾看看地上,又看看夷皋,一句话也没有说。乐停了,,舞停了,灵台之上,,登时死寂一片,,惟有暮秋的风儿,兀自把墙外桐叶,吹得沙沙作响。(三)止乎礼不知已过了多久。灵台之上,依然死寂一片,坐着的还那样坐着,,站着的还那样站着,,惟有暮秋的风儿,兀自把墙外桐叶,吹得沙沙作响。“......此辈小人,,死何足惜,只是如果传出去......臣以为,该当就在这灵台下把他......”终于还是屠岸贾慢吞吞地先开了口,眼光游移,不知在想些什么。夷皋瘫坐在蓐席上,脸色苍白,枕下的宫人不知何时已被他轰了下去:“这......是寡人......好像......”屠岸贾低着头,没有答话。并非夷皋说得含糊他听不懂,几十年的熏染,哪怕人主只是简单地哼一声,,他都能明白无误地知道,,这声哼到底表明着什么。但他没有应声,他很少这样的。“他......他虽是寺人,也该、也该有父母罢?”夷皋的嘴唇不住张合,终于吐出完整的一句来。屠岸贾沉默半晌:“来人,用稻草芦席把他包起来送出宫去!多包几层!”夷皋虽不算聪明,也不太笨。他当然知道多包几层是为了什么。但不知怎地,他的心砰砰跳的厉害。他呆呆地坐在那儿,,一动也不动,,于是屠岸贾也只好陪着那样坐着。乐工宫人们也都呆呆地在原地,既不敢乐舞,也不敢散。因为国君没说乐舞,也没说不乐舞;没说散,也没说不散。墙外渐渐喧闹起来,几缕炊烟,淡淡地散在远方树顶的蓝天里。“相国,,大夫,主公未召见,你们不能......”卫士无奈的声音由远及进,夹杂着呵斥声、挤撞声和匆匆的脚步声。红袍子,红脸膛,,相国赵盾。赵盾的身后还跟着位须发皆白的老臣,却是大夫士会。屠岸贾见他二人闯宫,身躯一下坐得笔直;夷皋却颜色俱变,双手死死扶住了几案。“主公,,此辈阉竖小人虽不足惜,却如何可任意杀害,为此不仁之举!”赵盾不待礼毕,便朗声奏道:“我晋国素以仁爱节用服天下诸侯,先君文公爱惜小人,遂得壶叔寺披......”夷皋的头登时又大了,后面的话便隐隐约约地听不太真切,反正,相国是在责备他,,责备他的举止像个昏君暴君什么的吧。“相国,此辈服侍不周,主公薄加惩戒,也不为已甚......”赵盾见是屠岸贾,,脸色更难看了:“司寇此言大谬,窃闻......”“寡人......寡人......寡人的确错了......”相国司寇两人正自争辩,夷皋却突然开口了。赵盾和屠岸贾的表情一下子变得很诧异,很古怪,,侧着脸,像是怀疑自己听错了。“寡人错了,,该如何责罚,请、请相国教我。”国君错了,该如何责罚?相国没法教夷皋,别说是赵盾,就是赵盾故去的父亲赵衰,甚至素以博学广闻著称的故太傅阳处父,怕也都无法措辞吧?刑不上大夫,何况国君?高处不胜寒,绛都暮秋的晚风,吹寒了灵台上每个人的面庞。“人孰无过?主公知过能悛,古之明君,不过如是也,臣以为,主公可茹素减膳三日,,以敬追祖训。”一直沉默不语的士会开口了,语调平和而从容。夷皋点点头,脸色仿佛恢复了一些血色;赵盾和屠岸贾也几乎同时长出了一口气。赵盾和士会走了,从高高的灵台上望去,他们的身影越来越小,渐渐缩成了渺茫的两粒。夷皋一直伫立着,凝望着,脸色忽阳忽阴,,忽红忽白。“赵盾目无君上,主公岂有意乎?”身后耳边,屠岸贾低低的声音,夷皋听来,却不啻晴空霹雳。他急转身,凝视着屠岸贾,夕阳下,屠岸贾的眼神闪烁不定:“臣已经物色好了一个......”夷皋突然打断他的话:“捕寇安良,以分人主之忧,,此司寇之份,,你还问寡人作甚?”屠岸贾素来深沉难测,,乍听此言,全身竟不由陡然震了一震。屠岸贾也走了,灵台之上,只剩下夷皋自己,和那些不知所措的宫人宦者。天色渐渐地暗了,,暮秋新月,,冷冷地挂上了东面的苍穹。夷皋呆坐了半晌,,突然嘿嘿地笑了:他虽不算聪明,也不算太笨;虽不算勤快,也不算太懒,刚才脱口而出的那几句,让他自己偷偷得意了好一阵子,心情也为之慢慢好了起来:“左右,,传熊掌来,这会儿总该熟了吧!”一个宦者瑟缩着远远跪倒,仿佛害怕又一个铜斗飞来:“主公、主公适才不是答应相国......”夷皋撇了撇嘴:“此门之外,他为政;此门之内,我为政。他管的已经够多的了,难道还要管着灵台不成?”宫外。“这尸首,相国打算如何处置?寻访他的家人么?”墙角旷地上,稻草芦席包裹的尸体,一只苍白的胳膊已经赫然露出。赵盾淡淡一笑:“这等刑余小人,何足劳动卿大夫?叫人载到城外远远埋了弃了,,也就是了。”话音未毕,他已攀轼登车,倏忽驰出十余丈地,方才回过身来,远远地一揖。士会望着车轮荡起的烟尘,摇摇头,长长叹了口气。宵禁了,金吾的脚步,,驱散了新绛城中,最后的一点喧嚣。(四)仁义五更了。夷皋朝服冠冕,坐在朝堂上,从布满血丝的眼睛可以看出,他昨夜并没有安睡。坐席很平整,坐缛也很软和,可他坐在那里,却仍觉得浑身不自在。他本就不喜欢上朝,以前这时候,他也常常坐不住的。不过,这一回不同。这一回,他是在等待,等待一个结果。“他若真的......那么我今后该怎么办呢?”当卿大夫们清脆的脚步声渐近渐响时,他的脑海中忽地闪过这样一个念头,随即油然隐隐升起一阵说不清道不明的不安来。卿大夫们鱼贯而入,,为首者红袍象笏,正是相国赵盾。夷皋的脑袋登时轰地一声,急忙揉了揉眼睛:大红袍,大红脸,,不是赵盾是谁?他急瞥向赵盾身后,大司寇屠岸贾低头而立,却掩不住一脸的失望和诧异。赵盾神色举止,却和往常毫无二至,他略扫视一下左右,端起又宽又长的象笏,出班跪倒:“臣启主公,姜戎......”夷皋坐在那里一动不动,心思却早已乱成了一团麻,赵盾说了些什么,,他差不多一句也没听清楚。听不清楚就听不清楚罢,反正以前也常这样,清楚不清楚也没什么大不了的,可奏,可奏就是了。“无事,散朝!”散朝,大家都走了。可是士会却没有走,他踌躇着,,欲言又止的样子。往常,年老体衰的他,总是要先走一步的。“大夫......”夷皋定了定神,觉得有必要问一声。士会似乎也定了定神,端起了象笏:“适才相国奏上,要拘禁姜戎子,,主公......”姜戎子?好像是听见这么一声的,这有什么要紧么?“姜戎子是姜戎国君,姜戎世代谨事晋国,崤山之战曾立下大功,如今因旱不时岁贡,情有可原,相国不恤其灾,却拘执其君以勒贡赋,实在有失大国体面啊。”夷皋耐着性子听完士会的长篇大论,似乎也觉得有些不妥:“来人,持寡人之节,谕相国释放姜戎子。”节送去了,只换来一句话:“君无戏言,臣既奉前诏,礼不能复奉后诏。”夷皋鼓着腮帮子,,翻着白眼,竟不知该如何作答才好。士会叹了口气,走了。“赵盾抗拒主命,不臣之心已露,,主公......”望着不知什么时候,不知从什么地方钻出来的屠岸贾,夷皋压抑着的火气登时迸发出来:这老贼,,上朝不说,,散朝不说,现在才说,还有个鬼用!况且......“那个......据说臣派去的那人不明不白死在相府院中......放心,,那是个无名飞贼,没人会知道的......”没人会知道的,,但愿罢。可这事,难道就这么完了?望着屠岸贾渐小的背影,夷皋恶狠狠地吐了口唾沫:“哼,都不是什么好东西。”桐叶冷冷,灵台巍巍。夷皋今天连玩都提不起精神了,他光着脑袋,懒洋洋地倚在栏杆上,呆望着苑外的世界。灵台巍巍,,桐叶冷冷。叶黄了,叶落了,夏天的时候,桐叶青青,蝉鸣阵阵,那时候,他的心情,,似乎要好的多罢?记得那时,酒酣耳热之际,,他总会穿上戎衣,,拿起弹弓,随着一声声弓弦响,一只只知了应弦而落,每打落一只,周围就会轰然一片“万岁”之声(先秦时万岁尚非皇帝专用,,是以身为侯爵的晋侯也可呼万岁)。这时候的他,总会觉得特别自信,,特别满足,总会不由自主地狂笑起来。“拿弹弓来!”戎衣依旧,弹弓依旧,,可夏天却已经过去,蝉儿也早不见了踪影。夷皋拿起弹弓,对着光秃秃的桐树枝干,虚射了一弹。“你们,,你们怎么不喊!”他扭过头,厉声叱道。“万、万岁......”宦者宫人们面面相觑,,旋即恍然大悟,稀稀拉拉地喊了起来。“没吃饭么?”夷皋更恼了。“万、万岁......”声音大了些,夹杂着无奈和恐惧,在冷风中颤抖着。夷皋气往上涌,引弓搭弹,就向宦者们射去。“唉呦!”一个宦者腰上挨了一记泥丸,失声叫了出来,但不过刹那,,他却捂着腰眼,龇牙咧嘴地高叫道:“万岁!万岁!”众人纷然相和,连枝头的乌鸦也被惊得飞了起来。夷皋高兴了,眯起左眼瞄了瞄,劈手又是几弹。“万岁、万岁......”虽则疼,,虽则喊,却没有一个人躲闪。他们不敢。夷皋突然觉得这样也没什么意思,他收住手,无聊地望了望台下。天色尚早,天气正好。台下苑外的大街上,,人来车往,川流不息。他突然笑了:这些人不都是自己的臣子么?为君分忧,也是他们应该做的罢?而且,,他们不但会喊,还会躲,,一定更有意思。“万岁!万岁!”呼喊的声音响亮而又雄壮,当然,都发自台上。台下苑外的大街上已经一个人、一辆车也没有了,尽管天色尚早,天气正好。夷皋掷弓于地,左右顾盼,心里说不出地畅快。“禀、禀主公,,相国、相国率六卿、九大夫求、求见!”“......仁者国之基,民者国之本,主公纵私欲而虐民,,何不仁之至也!”不知过了多少时候,夷皋听得很倦,卿大夫们站得也很倦了,,可发言的赵盾却一点也不倦,,看上去似乎倒比刚开口时更精神了些。夷皋无奈地看了看众人,众人都低头默然,连屠岸贾也用象笏遮住了颜面。“我晋国素以仁义......”赵盾捧着象笏,似乎没有半点打住的意思,他的象笏又宽又长,密密地写满了文字。“寡人的确不仁义,可相国拘执姜戎子以苛勒贡赋,又是什么仁义呢?”夷皋的声音怯怯的,一点也不响亮。可一言甫出,赵盾的长篇大论戛然而止,身体不觉一震。卿大夫们也不约而同地薄雾浓云愁永昼震了一下,,吃惊地望者这位他们印象中虽不算聪明,也不算太笨;虽不算勤政,也不算太懒的主公。其实夷皋一句话脱口而出,连自己都有些吃惊。他讷讷地怔在那里,,不知该怎么收场。“君子之过,日月之食也,君臣能各改其过,各修其仁,晋国之幸也!”士会的声音不高,却像冬天的太阳,融化了台上尴尬的冰雪。君君臣臣,如释重负地频频点头,发出几声或轻或重的干笑来。卿大夫们走了,夷皋远远地目送着他们,脸上的笑容早已被寒风凝结。“主公,臣......”赵穿,,这家伙倒不讨厌。“臣知主公操劳国务,心情烦闷,臣有一只上好猎犬,改日......”猎犬一定挺好玩,赵穿也挺好玩,可赵盾......“主公......”屠岸贾,他还有脸再回来!“你......”屠岸贾急趋近前,附耳说了良久。夷皋的脸色渐渐和霁下来:“好玩,好玩!”天色早已暗了,屠岸贾也早已走了。伺候了许久的宦者宫人们,,都忍不住偷偷地伸开了懒腰,打起了哈欠。夷皋却神采灿烂,全无半点倦意,他背着手,,在台上不住急促地转着圈子,脸上挂着诡秘的笑容:“好玩,好玩,太好玩了!”

去的,,只要把宝贝链接复制到 url.cn/64TXNO(前后不要加空格哦) 上方的搜索栏搜索一下,,能返多少就一目了然了,然后点“立刻去淘宝购买”,交易成功后就能轻松获得返利。

玛丽16K硬面色卡速写素描两用本 速写本 素描本 写生本 1640

薄雾浓云愁永昼总会老板秘书 说:
本本里面好多页都折了~~~都联系不到卖家~~~
太让人郁闷了~,!!!

荷兰泰伦斯24色透明固体水彩套装 樱花24色固体写生水彩颜料 包邮

很小一盒 不过蛮耐用的 颜色也很漂亮 很方便携带哦

日本樱花NR 圆头尼龙画笔 SAKURA 适合水彩 水粉 丙烯 油画画笔( )

很好用 很喜欢 进口的质量果然好

荷兰泰伦斯水彩遮挡液 水彩留白胶 留白液 75ml 052

雪山纸业 山牌16K水彩画纸写生本 水彩本 水彩纸 水溶彩铅专用本

橡皮擦得干净,,没有味道,喜欢

荷兰泰伦斯24色透明固体水彩套装 樱花24色固体写生水彩颜料 包邮

一块儿买的东西太多竟然漏掉了评论没发现 真是抱歉 想买这个套装好久了 小巧方便很好用~

卡乐宝JEF省力压花器(中号) 压花机 打花 压图器 印花机 JEF-99S( )

高尔乐素描定画液/素描固定液/水粉固定液/水粉定画液/180ML喷雾

好久没手绘了 买了备用

日本美辉4600针管笔 草图笔 绘图勾线笔 手绘动漫高达模型笔

柏伦斯7寸木手模型 素描模型 关节手 小孩木人手 漫画木手( )

衣服质量很好,儿子穿着十分精神,,老顾客了

ONTTNO 2012秋冬男式装裤子休闲长裤 韩版修身男直筒长裤子男裤潮

ONTTNO 男春装新款休闲夹克男韩版 男士时尚修身立领男装长袖外套

ONTTNO 2012秋冬男式装裤子休闲长裤 韩版修身男直筒长裤子男裤潮

裤子的总体质量很不错,的确很厚实,能对得起这个价钱,,发货速度也可以。

夏装韩版休闲短裤男潮 男装中裤 五分裤 男士修身休闲裤 男款裤子

质量挺好 颜色的话 还可以吧 比我想象的好些

ONTTNO 2012新品冬装男装棉衣外套 休闲棉服 拼接PU皮连帽 男棉袄

ONTTNO 2013春装新款男士长袖毛衣 韩版时尚休闲修身V领针织衫男( )

ONTTNO 毛衣男装2013新款 春装打底衫 修身V领针织衫男士长袖毛衣

ONTTNO 潮男春装2013新款毛衣 休闲韩版修身 V领打底 男士薄毛衣

2013新款男式春装男装T恤 韩版男士V领长袖T恤男 拼接修身潮男T

这次拿的L码的刚好效果和模特一样,上次拿的黑色XL码的稍稍偏大了,。我175CM 70KG供大家参考。

ONTTNO 2012秋冬男装新款男士裤 韩版修身休闲裤男 潮裤子男 长裤

冬装男装新款外套男士棉衣男 潮韩版棉袄短款PU皮保暖加厚棉服男

ONTTNO 2013春装时尚休闲纯色双V领假两件针织修身长袖毛线衣( )

衣服不错!穿在身上很修身的!!

ONTTNO 新款春装男装 牛仔裤男裤子男韩版修身直筒潮休闲长裤加厚( )

2013新款春装男装毛衣男潮 韩版条纹针织衫男 休闲长袖圆领毛线衫( )

衣衣款式很好,,质量一般,很薄

冬装男装新款外套男士棉衣男 潮韩版棉袄短款PU皮保暖加厚棉服男

还好,值得买,可惜买大了

ONTTNO 2013新款韩版男士春装毛衣 假两件针织衫休闲开衫男士外套( )

款式很好,,质量也不错,超值

ONTTNO 2012秋冬男装新款男士裤 韩版修身休闲裤男 潮裤子男 长裤

哥哥很满意 说比他400+的舒服 裤型也好

ONTTNO 韩版新款冬季休闲裤男 修身男士裤子 纯棉休闲弹力裤男潮

很好的裤子,,真是太值了,买裤子就你家了,我还想再买一条,裤形很好

ONTTNO 品牌男夏装 2013夏季新款潮男T恤 韩版修身男士V领短袖T恤

ONTTNO 2012冬装新款棉衣男装外套 韩版休闲立领棉服长袖男士棉袄

ONTTNO 2013男春装新款韩版长袖t恤 男 潮时尚休闲印花修身V领T恤

这件衣服穿上很好跟细节图片一致

车传迈铃木北斗星雨燕天语新奥拓利亚纳奔奔迷你大包围皮革脚垫( )

味有点大 要先晾晾~~~~挺合适给5分

车传迈大众朗逸 迈腾 新宝来 普桑速腾 捷达K3发动机护板 下护板( )

护板还没装 不过看外观还可以 价格在淘宝也是同款内比较给力的 卖家在服务态度和发货时间上绝对ok

大小正好,感觉味道不是特别重,挺好的,。

车传迈后备箱垫 别克新君威 新君越 凯越 英朗GT/XT专用尾箱垫( )

车传迈汽车后备箱垫 雨燕 天语SX4 新奥拓CS35启辰R50专用尾箱垫

车传迈汽车后备箱垫 雨燕 天语SX4 新奥拓CS35启辰R50专用尾箱垫( )

呵呵 这货到的太速度了 没想到 东西也很好 就是不知道用上什么样 希望给力 全给满分

车传迈长安CX20 K3 悦翔V3V5逸动CS35启辰R50立体大包围皮革脚垫

车传迈汽车后备箱垫 斯柯达明锐晶锐昊锐景逸1,

车传迈 金属壁虎车贴 金色 银色壁虎 庇护车贴避祸车贴个性车贴

大小还算合适,颜色不错

车传迈汽车烤漆挡泥板 别克英朗 新君威 新君越 新凯越烤漆挡泥板

明明要穿孔的,。还说不要。

车传迈铃木北斗星雨燕天语新奥拓利亚纳奔奔迷你大包围皮革脚垫

车传迈汽车后备箱垫 雨燕 天语SX4 新奥拓CS35启辰R50专用尾箱垫

长安奔奔迷你 悦翔 CX30 CX20发动机护板 汽车专用下护板( )

车传迈长安CX20 K3 悦翔V3V5逸动CS35启辰R50立体大包围皮革脚垫

不是专车专用的骗人的过春节物流放假没退成便宜了20元卖给别人了

车传迈后备箱垫 南汽名爵3 MG3 MG6 MG7菲亚特菲翔专用尾箱垫

车传迈 一汽森雅S80M80 奔腾B50 B70 夏利N5 专用大包围皮革脚垫

车传迈 现代雅绅特瑞纳索纳塔伊兰特朗动悦动途胜IX35大包围脚垫

车传迈后备箱垫现代瑞纳悦动伊兰特八代索纳塔 朗动雅绅特尾箱垫( )

汽车脚垫不错啊,!是有点味道,不过我晒了几天就没味道!价格很合算!

车传迈 现代雅绅特瑞纳索纳塔伊兰特朗动悦动途胜IX35大包围脚垫

车传迈后备箱垫现代瑞纳悦动伊兰特八代索纳塔 朗动雅绅特尾箱垫( )

车传迈汽车后备箱垫 雨燕 天语SX4 新奥拓CS35启辰R50专用尾箱垫( )

车传迈铃木北斗星雨燕天语新奥拓利亚纳奔奔迷你大包围皮革脚垫

车传迈 全球鹰GX2 GX7GC7熊猫远景金刚自由舰专用大包围皮革脚垫

车传迈汽车后备箱垫 雨燕 天语SX4 新奥拓CS35启辰R50专用尾箱垫

用过后来评价,收到货后味道很大,放置了一个多星期,,基本上没有味道了,大小基本合适,只有在后备箱口两侧有缝隙,其他地方都还好,,基本满意

车传迈 洗车用品超细纤维洗车毛巾吸水毛巾 擦车巾 擦车布40*60cm

车传迈 汽车防滑垫 汽车车用魔力垫 手机强力魔力垫( )

车传迈 金属壁虎车贴 金色 银色壁虎 庇护车贴避祸车贴个性车贴

产品还可以,质量也不错价格适中。

车传迈汽车后备箱垫 雨燕 天语SX4 新奥拓CS35启辰R50专用尾箱垫

产品还可以,质量也不错价格适中,。

车传迈铃木北斗星雨燕天语新奥拓利亚纳奔奔迷你大包围皮革脚垫( )

味有点大 要先晾晾~~~~挺合适给5分

车传迈大众朗逸 迈腾 新宝来 普桑速腾 捷达K3发动机护板 下护板( )

护板还没装 不过看外观还可以 价格在淘宝也是同款内比较给力的 卖家在服务态度和发货时间上绝对ok

大小正好,感觉味道不是特别重,挺好的,。

车传迈后备箱垫 别克新君威 新君越 凯越 英朗GT/XT专用尾箱垫( )

车传迈汽车后备箱垫 雨燕 天语SX4 新奥拓CS35启辰R50专用尾箱垫

车传迈汽车后备箱垫 雨燕 天语SX4 新奥拓CS35启辰R50专用尾箱垫( )

呵呵 这货到的太速度了 没想到 东西也很好 就是不知道用上什么样 希望给力 全给满分

车传迈长安CX20 K3 悦翔V3V5逸动CS35启辰R50立体大包围皮革脚垫

车传迈汽车后备箱垫 斯柯达明锐晶锐昊锐景逸1,

车传迈 金属壁虎车贴 金色 银色壁虎 庇护车贴避祸车贴个性车贴

大小还算合适,颜色不错

车传迈汽车烤漆挡泥板 别克英朗 新君威 新君越 新凯越烤漆挡泥板

明明要穿孔的,。还说不要。

车传迈铃木北斗星雨燕天语新奥拓利亚纳奔奔迷你大包围皮革脚垫

车传迈汽车后备箱垫 雨燕 天语SX4 新奥拓CS35启辰R50专用尾箱垫

长安奔奔迷你 悦翔 CX30 CX20发动机护板 汽车专用下护板( )

车传迈长安CX20 K3 悦翔V3V5逸动CS35启辰R50立体大包围皮革脚垫

不是专车专用的骗人的过春节物流放假没退成便宜了20元卖给别人了

车传迈后备箱垫 南汽名爵3 MG3 MG6 MG7菲亚特菲翔专用尾箱垫

车传迈 一汽森雅S80M80 奔腾B50 B70 夏利N5 专用大包围皮革脚垫

车传迈 现代雅绅特瑞纳索纳塔伊兰特朗动悦动途胜IX35大包围脚垫

车传迈后备箱垫现代瑞纳悦动伊兰特八代索纳塔 朗动雅绅特尾箱垫( )

汽车脚垫不错啊,!是有点味道,不过我晒了几天就没味道!价格很合算!

车传迈 现代雅绅特瑞纳索纳塔伊兰特朗动悦动途胜IX35大包围脚垫

车传迈后备箱垫现代瑞纳悦动伊兰特八代索纳塔 朗动雅绅特尾箱垫( )

车传迈汽车后备箱垫 雨燕 天语SX4 新奥拓CS35启辰R50专用尾箱垫( )

车传迈铃木北斗星雨燕天语新奥拓利亚纳奔奔迷你大包围皮革脚垫

车传迈 全球鹰GX2 GX7GC7熊猫远景金刚自由舰专用大包围皮革脚垫

车传迈汽车后备箱垫 雨燕 天语SX4 新奥拓CS35启辰R50专用尾箱垫

用过后来评价,收到货后味道很大,放置了一个多星期,,基本上没有味道了,大小基本合适,只有在后备箱口两侧有缝隙,其他地方都还好,,基本满意

车传迈 洗车用品超细纤维洗车毛巾吸水毛巾 擦车巾 擦车布40*60cm

车传迈 汽车防滑垫 汽车车用魔力垫 手机强力魔力垫( )

车传迈 金属壁虎车贴 金色 银色壁虎 庇护车贴避祸车贴个性车贴

产品还可以,质量也不错价格适中。

车传迈汽车后备箱垫 雨燕 天语SX4 新奥拓CS35启辰R50专用尾箱垫

产品还可以,质量也不错价格适中,。

车传迈铃木北斗星雨燕天语新奥拓利亚纳奔奔迷你大包围皮革脚垫( )

味有点大 要先晾晾~~~~挺合适给5分

车传迈大众朗逸 迈腾 新宝来 普桑速腾 捷达K3发动机护板 下护板( )

护板还没装 不过看外观还可以 价格在淘宝也是同款内比较给力的 卖家在服务态度和发货时间上绝对ok

大小正好,感觉味道不是特别重,挺好的,。

车传迈后备箱垫 别克新君威 新君越 凯越 英朗GT/XT专用尾箱垫( )

车传迈汽车后备箱垫 雨燕 天语SX4 新奥拓CS35启辰R50专用尾箱垫

车传迈汽车后备箱垫 雨燕 天语SX4 新奥拓CS35启辰R50专用尾箱垫( )

呵呵 这货到的太速度了 没想到 东西也很好 就是不知道用上什么样 希望给力 全给满分

车传迈长安CX20 K3 悦翔V3V5逸动CS35启辰R50立体大包围皮革脚垫

车传迈汽车后备箱垫 斯柯达明锐晶锐昊锐景逸1,

车传迈 金属壁虎车贴 金色 银色壁虎 庇护车贴避祸车贴个性车贴

大小还算合适,颜色不错

车传迈汽车烤漆挡泥板 别克英朗 新君威 新君越 新凯越烤漆挡泥板

明明要穿孔的,。还说不要。

车传迈铃木北斗星雨燕天语新奥拓利亚纳奔奔迷你大包围皮革脚垫

车传迈汽车后备箱垫 雨燕 天语SX4 新奥拓CS35启辰R50专用尾箱垫

长安奔奔迷你 悦翔 CX30 CX20发动机护板 汽车专用下护板( )

车传迈长安CX20 K3 悦翔V3V5逸动CS35启辰R50立体大包围皮革脚垫

不是专车专用的骗人的过春节物流放假没退成便宜了20元卖给别人了

车传迈后备箱垫 南汽名爵3 MG3 MG6 MG7菲亚特菲翔专用尾箱垫

车传迈 一汽森雅S80M80 奔腾B50 B70 夏利N5 专用大包围皮革脚垫

车传迈 现代雅绅特瑞纳索纳塔伊兰特朗动悦动途胜IX35大包围脚垫

车传迈后备箱垫现代瑞纳悦动伊兰特八代索纳塔 朗动雅绅特尾箱垫( )

汽车脚垫不错啊,!是有点味道,不过我晒了几天就没味道!价格很合算!

车传迈 现代雅绅特瑞纳索纳塔伊兰特朗动悦动途胜IX35大包围脚垫

车传迈后备箱垫现代瑞纳悦动伊兰特八代索纳塔 朗动雅绅特尾箱垫( )

车传迈汽车后备箱垫 雨燕 天语SX4 新奥拓CS35启辰R50专用尾箱垫( )

车传迈铃木北斗星雨燕天语新奥拓利亚纳奔奔迷你大包围皮革脚垫

车传迈 全球鹰GX2 GX7GC7熊猫远景金刚自由舰专用大包围皮革脚垫

车传迈汽车后备箱垫 雨燕 天语SX4 新奥拓CS35启辰R50专用尾箱垫

用过后来评价,收到货后味道很大,放置了一个多星期,,基本上没有味道了,大小基本合适,只有在后备箱口两侧有缝隙,其他地方都还好,,基本满意

车传迈 洗车用品超细纤维洗车毛巾吸水毛巾 擦车巾 擦车布40*60cm

车传迈 汽车防滑垫 汽车车用魔力垫 手机强力魔力垫( )

车传迈 金属壁虎车贴 金色 银色壁虎 庇护车贴避祸车贴个性车贴

产品还可以,质量也不错价格适中。

车传迈汽车后备箱垫 雨燕 天语SX4 新奥拓CS35启辰R50专用尾箱垫

产品还可以,质量也不错价格适中,。

车传迈铃木北斗星雨燕天语新奥拓利亚纳奔奔迷你大包围皮革脚垫( )

味有点大 要先晾晾~~~~挺合适给5分

车传迈大众朗逸 迈腾 新宝来 普桑速腾 捷达K3发动机护板 下护板( )

护板还没装 不过看外观还可以 价格在淘宝也是同款内比较给力的 卖家在服务态度和发货时间上绝对ok

大小正好,感觉味道不是特别重,挺好的,。

车传迈后备箱垫 别克新君威 新君越 凯越 英朗GT/XT专用尾箱垫( )

车传迈汽车后备箱垫 雨燕 天语SX4 新奥拓CS35启辰R50专用尾箱垫

车传迈汽车后备箱垫 雨燕 天语SX4 新奥拓CS35启辰R50专用尾箱垫( )

呵呵 这货到的太速度了 没想到 东西也很好 就是不知道用上什么样 希望给力 全给满分

车传迈长安CX20 K3 悦翔V3V5逸动CS35启辰R50立体大包围皮革脚垫

车传迈汽车后备箱垫 斯柯达明锐晶锐昊锐景逸1,

车传迈 金属壁虎车贴 金色 银色壁虎 庇护车贴避祸车贴个性车贴

大小还算合适,颜色不错

车传迈汽车烤漆挡泥板 别克英朗 新君威 新君越 新凯越烤漆挡泥板

明明要穿孔的,。还说不要。

车传迈铃木北斗星雨燕天语新奥拓利亚纳奔奔迷你大包围皮革脚垫

车传迈汽车后备箱垫 雨燕 天语SX4 新奥拓CS35启辰R50专用尾箱垫

长安奔奔迷你 悦翔 CX30 CX20发动机护板 汽车专用下护板( )

车传迈长安CX20 K3 悦翔V3V5逸动CS35启辰R50立体大包围皮革脚垫

不是专车专用的骗人的过春节物流放假没退成便宜了20元卖给别人了

车传迈后备箱垫 南汽名爵3 MG3 MG6 MG7菲亚特菲翔专用尾箱垫

车传迈 一汽森雅S80M80 奔腾B50 B70 夏利N5 专用大包围皮革脚垫

车传迈 现代雅绅特瑞纳索纳塔伊兰特朗动悦动途胜IX35大包围脚垫

车传迈后备箱垫现代瑞纳悦动伊兰特八代索纳塔 朗动雅绅特尾箱垫( )

汽车脚垫不错啊,!是有点味道,不过我晒了几天就没味道!价格很合算!

车传迈 现代雅绅特瑞纳索纳塔伊兰特朗动悦动途胜IX35大包围脚垫

车传迈后备箱垫现代瑞纳悦动伊兰特八代索纳塔 朗动雅绅特尾箱垫( )

车传迈汽车后备箱垫 雨燕 天语SX4 新奥拓CS35启辰R50专用尾箱垫( )

车传迈铃木北斗星雨燕天语新奥拓利亚纳奔奔迷你大包围皮革脚垫

车传迈 全球鹰GX2 GX7GC7熊猫远景金刚自由舰专用大包围皮革脚垫

车传迈汽车后备箱垫 雨燕 天语SX4 新奥拓CS35启辰R50专用尾箱垫

用过后来评价,收到货后味道很大,放置了一个多星期,,基本上没有味道了,大小基本合适,只有在后备箱口两侧有缝隙,其他地方都还好,,基本满意

车传迈 洗车用品超细纤维洗车毛巾吸水毛巾 擦车巾 擦车布40*60cm

车传迈 汽车防滑垫 汽车车用魔力垫 手机强力魔力垫( )

车传迈 金属壁虎车贴 金色 银色壁虎 庇护车贴避祸车贴个性车贴

产品还可以,质量也不错价格适中。

车传迈汽车后备箱垫 雨燕 天语SX4 新奥拓CS35启辰R50专用尾箱垫

产品还可以,质量也不错价格适中,。
}

我要回帖

更多关于 进行同步时出错 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信