是否可以编辑视频音轨的音量和声像并导出到包含该信息的独立视频?

Sti*_*Sti 6 audio video objective-c avfoundation ios

我在我的应用中录制视频.录制视频时,我想让用户使用控件预览录制内容,以便更改音轨的音量和平移.要预览视频录制,我正在使用AVMutableComposition并添加AVAsset录制文件的本地URL,并使用合成作为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];
Run Code Online (Sandbox Code Playgroud)

在这里,我相信,我只是改变了构图的表现形式,而不是构图本身.当用户对音量和音量水平感到满意时,他应该点击"接受",然后我将合成导出到一个独立的电影文件中(如果我改变音量,IE将不会对作曲产生任何影响)这种方式的球员).

有没有办法将源影片添加到AVComposition,更改音频的音量/声像,并使用新信息导出到新文件?

如上所述,我也正在寻找平移音频立体声或单声道音轨,但我找不到任何东西.在Apple Docs中唯一提到的平移是使用AVAudioPlayer,我不能使用,因为这是一个视频文件.而且,pan正如我用音量解释的那样,改变玩家也没有任何好处.难道真的没有办法改变平移通过任AVAsset,AVAssetTrack,AVComposition或任何与此?

我想我可能必须通过减少立体声音轨的每个声道的音量来手动完成,但我也找不到任何方法.

简单的说; 我正在寻找一种方法来改变单个视频的音轨的音量和平移(左/右)级别(最好在预览/播放所述视频期间),然后能够将此视频导出到一个新的视频文件,然后将这个新的音量和平移信息作为源信息.

例:

1.录制视频.

2.预览视频.

3.将音频平移设置为最左侧(仅左声道音频),音量设置为20%

4.导出包含新信息的视频

5.如果我现在将此视频文件上传到互联网,并且sombody在任何设备/计算机上下载它,它只会在左扬声器中发出声音,而且音量相当低.

小智 0

由于您希望将这些参数(音量和声像)应用于输出,因此您可能需要创建一个 AVMutableComposition,然后创建一个 AVAssetExportSession 以按照您的预期将其全部吐出。

为了处理平移,我通常通过简单地对任一通道的样本进行适当的快速乘法来处理我正在录制或即将放入 AVMutableComposition 的音频。这取决于您的应用程序的结构方式,您可以将其放入其中。

要获得音量控制,您可以设置添加到 AVComposition 的每个 AVMutableCompositionTrack 或 AVAssetTrack 的音量,或者您可以将 AVMutableAudioMix 应用于 AVAssetExportSession audioMix 属性。当您执行导出时,它将与所述音频混合一起导出。这将“打印”您的音量更改,因此您不必在播放期间更改它们。

audioMix 很好,因为它可以让你做淡入淡出等。

  • 嗨 nsdebug - 希望听到更多有关您提到的平移的信息。“对任一通道的样本进行快速乘法”是什么意思 - 您是否有任何代码可以进一步说明这一点?非常感谢,我真的需要在 AVAssetTracks (音频)上进行平移工作。谢谢 (2认同)