【问题标题】:VideoView does not play Audio in Video properlyVideoView 无法正确播放视频中的音频
【发布时间】:2014-02-19 09:28:33
【问题描述】:

我有一个持续时间为 2 分钟的 *.mp4 文件。现在它有从30 seconds upto 1.10 min 开始的音轨。 30s 之前和1.10min 之后的其余部分为空白。

现在的问题是当我尝试在videoviewmediaplayer 中播放它时,它会从视频的开头而不是从其实际位置播放音频。我在多部手机上尝试过,结果相同。

当我在MXPlayerWindows(VLC) 中播放相同的视频时;它播放正常。

这个问题的解决方法是什么?

编辑

我已经使用Ffmpeg-itsoffset命令来实现上述视频。

ffmpeg -y -i a.mp4 -itsoffset 00:00:30 sng.m4a -map 0:0 -map 1:0 -c:v copy -preset ultrafast out.mp4

提前致谢。

【问题讨论】:

    标签: android audio video ffmpeg android-videoview


    【解决方案1】:

    必须有一种更简单的方法来做到这一点,但以下方法对我来说很好:

    ffmpeg -y -i a.mp4 -itsoffset 00:00:30 sng.m4a -f lavfi -i "aevalsrc=0" -filter_complex "[1:a][2:a]amix=inputs=2:duration=first:dropout_transition=0, apad[out]" -map 0:v -map '[out]' -c:v copy -preset ultrafast -shortest out.mp4
    

    它执行以下操作:

    • 创造安静的声音
    • 将其与转换后的音频混合,直到 m4a 文件结束
    • 无限期地保持沉默
    • 将此视频与输入视频映射
    • 选择最短的时长(视频时长作为音频时长由于填充过滤器是无限的)

    试一试;)

    编辑: Jay 的解决方案,使用“-async 1”,要容易得多,检查一下!

    【讨论】:

    • 谢谢;但是使用-async 选项解决了从初始而不是偏移开始的音频问题。
    【解决方案2】:

    好的,最后我通过添加 1 个选项 -async 解决了这个问题

    ffmpeg -y -i a.mp4 -itsoffset 00:00:30 sng.m4a -map 0:0 -map 1:0 -c:v copy -preset ultrafast -async 1 out.mp4
    

    默认情况下,音频/视频时间戳被拉伸以相互匹配;这是我在给出itsoffset 之后从初始开始的音频问题。

    根据Ffmpeg Doc,使用async 1 仅更正音频的初始时间戳。我知道这个选项已被弃用;但无论如何它解决了我的问题。

    【讨论】:

    • 我想在 Android 中使用 FFMPEG 在 VideoView 中播放带声音的视频。你能指导我吗!我已经用 android stdio 配置了 FFMPEG。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多