VideoView无法正常播放视频中的音频

时间:2014-01-28 07:39:10

标签: android audio video ffmpeg android-videoview

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

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

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

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

修改

我使用了-itsoffset Ffmpeg命令来获得上述视频。

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

提前致谢。

2 个答案:

答案 0 :(得分:0)

必须有一种更简单的方法,但以下工作对我来说还不错:

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”,更容易,检查它!

答案 1 :(得分:0)

好吧最后我通过添加一个选项-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仅更正音频的初始时间戳。我知道这个选项已被弃用;但无论如何它解决了我的情况。