【问题标题】:How Fix issue of Exoplayer with playinp H.264 format video如何修复 Exoplayer playinp H.264 格式视频的问题
【发布时间】:2025-12-19 13:50:11
【问题描述】:

我有一台运行 android 4.2.2 的设备,并创建了一个使用最新版本的 ExoPlayer 作为视频播放器组件的应用。我的播放器在使用 ProgressiveMediaSource 播放视频方面表现出色。但是昨天我发现播放H.264格式视频有问题。视频正在播放,但只是显示灰屏

我深入挖掘并意识到此视频与早期视频之间的唯一区别是它们具有不同的 profile 规范(工作视频是 主要,而该视频是 高)。

首先,我猜可能是它的 codec 不支持,但我用 MediaPlayer 创建了一个应用程序,它可以正常播放。

这似乎与 this question 重复,但对我没有帮助。

我阅读了整个 troubleshooting page of ExoPlayer docs,尤其是那些与我的文件类型 (MP4) 相关的内容,但似乎与我的问题无关。

我尝试的最后一件事是将 analytics 添加到我的 ExoPlayer 中,但没有看到任何这样的日志:

[ ] Track:x, id=x, mimeType=mime/type, ... , supported=NO_UNSUPPORTED_TYPE

我知道我对这个问题的了解并不广泛,我需要改进它以解决这个问题,任何直接或间接的建议都将不胜感激。

PS。你可以看到我的视频文件here。我在那里添加了三个工作视频和一个特别损坏的视频。所有视频文件都有标准格式、比特率、配置文件和编码。

【问题讨论】:

  • 你能分享视频吗?
  • @VolkanSahin45 我根据您的要求添加了一些视频文件。其中一个被命名为损坏的,这就是我正在谈论的视频文件。
  • 您是否使用 exoplayer 演示应用播放这些视频? github.com/google/ExoPlayer/tree/release-v2/demos/main
  • @VolkanSahin45 是的,但是不,它不起作用。

标签: android encoding android-mediaplayer h.264 exoplayer


【解决方案1】:

我还在exoplayer-kotlin 的示例中试用了您的视频。它没有用,并且遇到了同样的问题。

我去查看 github repo 发现了这个exoplayer issue。这似乎是图书馆不打算解决的错误。如果这对您的应用程序至关重要,您必须对您的视频进行一些处理,或者使用另一个视频组件。

编辑:我已经获取了official-exoplayer 提供的样本并添加到media.exolist.json 这个:

"name": "Widevine DASH: MP4,H264",
"samples": [
  {
    "name": "TEST: CORRUPTED",
    "uri": "https://YOUR-IP/corrupted.mp4"
  },
...

在日志中我得到了这个:

tracks [eventTime=0.21, mediaPos=0.00, window=0, period=0, 
  Renderer:0 [
    Group:0, adaptive_supported=N/A [
      [X] Track:0, id=1, mimeType=video/avc, res=1280x800, fps=29.970032, supported=YES
    ]
  ]
]

但是视频断断续续,无法观看。

【讨论】:

  • 谢谢,但无法更改视频格式,因为我的老板知道它可以与 MediaPlayer 一起播放,并希望我无论如何都能解决问题。您所指的问题是说这不是与 ExoPlayer 相关的问题。我需要打开一个问题吗?
  • 您应该打开一个问题并尝试与他们一起查看它的来源。如果有人与您有相同的行为,您也可以查看old issue