【问题标题】:MediaPlayer -- how to separate a narration track?MediaPlayer——如何分离旁白轨道?
【发布时间】:2013-12-12 21:29:37
【问题描述】:

我正在开发一个播放视频的安卓应用(使用视频视图)。该视频旨在同时包含音乐(左右)和旁白,但我希望能够有选择地关闭 MediaPlayer 中的旁白轨道。

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

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

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

谢谢。

【问题讨论】:

    标签: android audio video android-mediaplayer


    【解决方案1】:

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

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

    2) 一次只能选择 1 个音轨,因此您无法按照自己的想法同时拥有背景和旁白。

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

    你可能会发现很难同步两个MediaPlayers,但我没试过。也许这种方法对您的情况是可以接受的,但请注意seekTo 方法并不准确。这取决于文件的编码。

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

    【讨论】:

    • 戴夫谢谢。由于视频文件的总大小(> 200mb),加载两个版本的视频将是不切实际的混在左右,还有一个是左右音乐?然后使用 track select 选择合适的轨道?
    • 对不起,我看到你回答了——谢谢,我认为这会奏效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    相关资源
    最近更新 更多