我在我的应用中录制视频。录制视频时,我想让用户使用控件预览录制内容,以便更改音轨的音量和平移。要预览视频录制,我使用AVMutableComposition
并从录制文件的本地网址添加AVAsset
,并使用作为AVPlayerItem
的作品进行播放通过AVPlayer
。我这样做是因为我想添加音量和平移 - "过滤器(?)"到合成中的音轨,然后导出整个合成。
播放效果很好,但我无法找到任何方法来添加这样的"过滤器" (更改AVAssetTrack
或此级别上任何其他内容的音量或平移)。到目前为止,我只能通过以下方式更改播放音量:
NSMutableArray *audioParam = [NSMutableArray array];
AVMutableAudioMixInputParameters *audioInputParams = [AVMutableAudioMixInputParameters audioMixInputParameters];
[audioInputParams setVolume:volumeSlider.value atTime:kCMTimeZero];
[audioInputParams setTrackID:[audioTrack trackID]];
[audioParam addObject:audioInputParams];
AVMutableAudioMix *audioMix = [AVMutableAudioMix audioMix];
[audioMix setInputParameters:audioParam];
[playerItem setAudioMix:audioMix];
在此,我相信,我只是改变了作品的表现形式,而不是作品本身。当用户对音量和音量水平感到满意时,他应该点击"接受",然后我将合成导出到一个独立的电影文件(它赢得的IE没有任何改变如果我以这种方式改变玩家的音量,那么这个构图。)
有没有办法将源影片添加到AVComposition,更改音频的音量/声像,并使用新信息导出到新文件?
如上所述,我也正在寻找平移音频立体声或单声道音轨,但我根本找不到任何东西。在Apple Docs中唯一提到的平移是使用AVAudioPlayer
,我无法使用,因为这是一个视频文件。此外,改变播放器中的pan
也没有任何好处,正如我用音量解释的那样。是否真的无法通过AVAsset
,AVAssetTrack
,AVComposition
或与此相关的任何内容来更改平移?
我想我可能必须通过减少立体声音轨每个声道的音量来手动完成,但我也找不到任何方法。
简单地说; 我正在寻找一种方法来改变单个视频的音轨的音量和声音(左/右)级别(在预览期间最好)播放所述视频),然后能够将此视频导出到新的视频文件,然后将新的音量和平移信息作为源信息。
示例:
1。录制视频。
2. 预览视频。
3. 将音频平移设置为最左侧(仅限左声道音频),音量设置为20%
4. 使用新信息导出视频
5. 如果我现在将此视频文件上传到互联网,并且sombody将其下载到任何设备/计算机上,它只会在左扬声器中发出声音,而且音量相当低
答案 0 :(得分:0)
由于您希望将这些参数(音量和声像)应用于您的输出,您可能需要创建一个AVMutableComposition,然后创建一个AVAssetExportSession,以便按照您的预期将其全部吐出。
为了处理平移,我通常会在录制的音频中处理它,或者通过简单地对任一通道的样本进行适当的快速乘法来放入AVMutableComposition。这取决于您的应用在何处适合您的应用。
要获得音量控制,您可以设置添加到AVComposition的每个AVMutableCompositionTrack或AVAssetTrack的音量,也可以将AVMutableAudioMix应用于AVAssetExportSession audioMix属性。执行导出时,将使用所述音频混合导出。这将"打印"您的音量发生变化,因此您无需在播放过程中更改它们。
audioMix很不错,因为它可以让你做淡化等。