gpt4 book ai didi

android - MediaPlayer -- 如何分离一个旁白轨道?

转载 作者:行者123 更新时间:2023-11-30 03:13:30 30 4
gpt4 key购买 nike

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

正确执行此操作的方法是通过具有 3 个音轨(左右和旁白)的 mp4 视频文件进行编码,然后使用 deselectTrack() 关闭旁白音轨吗?

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

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

谢谢。

最佳答案

很抱歉打破你的泡沫,但是......

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

2) 一次只能选择1条音轨,所以你不可能像你想的那样同时有背景和旁白。

3) 只能在准备状态下选择音轨(即不能在播放开始后)。 documentation提到这个限制并不理想,所以它可能会在未来改变。如果不是因为这个问题,您的目标可以通过在流中编码的两个音轨来实现,一个具有背景和旁白,另一个只是背景。

您可能会发现同步两个 MediaPlayer 很困难,但我没有尝试过。也许这种方法适合您的情况,但请注意 seekTo 方法并不准确。这取决于文件的编码。

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

关于android - MediaPlayer -- 如何分离一个旁白轨道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20538433/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com