我正在开发一个播放视频(使用视频 View )的android应用。该视频本应具有音乐(左右)和旁白,但是我希望有选择地关闭MediaPlayer中的旁白轨道。

是否可以正确地通过带有3条音轨(向右和旁白)的mp4视频文件进行编码,然后使用deselectTrack()关闭naration音轨的方法?

从文档中我不清楚MediaPlayer可以处理2个以上的音轨。

如果音频轨道限制为2,当我要播放旁白轨道时,同时运行两个媒体播放器(与seekTo()同步)是否有意义?

谢谢。

最佳答案

对不起,您的泡沫破裂了,但是...

1)您对“曲目”的含义有误解。一个轨道可以具有多个通道(例如,一个立体声轨 Prop 有左和右通道)。据我了解,立体声是目前Android AudioTrack实现的范围。我还没有检查OpenSL实现是否比Java API更广泛。

2)一次只能选择1条音轨,因此您将无法以您的思维方式同时拥有背景和旁白。

3)只能在准备状态下选择音轨(即,开始播放后不能选择)。 documentation提到此限制不是理想的,因此将来可能会更改。如果不是这个问题,您的目标可以通过在流中编码的两个音轨来实现,一个音轨既具有背景又具有叙述性,另一个具有背景性。

您可能会发现很难同步两个MediaPlayer,但是我还没有尝试过。尽管事先警告了seekTo方法不准确,但是这种方法也许对您的情况是可以接受的。这取决于文件的编码。

如果您是我,我会尝试的是制作两个完整的编码视频,一个带有旁白,另一个没有。使用两个MediaPlayer并保持它们都准备就绪。当您要切换时,请使用seekTo将正确的密码放在所需的位置(或附近)。这样,您就不必担心同步。如果视频较大,则此方法可能会使用更多资源。

10-05 18:00