【问题标题】:MPEG-TS H.264 with ExoPlayer带 ExoPlayer 的 MPEG-TS H.264
【发布时间】:2017-08-21 18:42:06
【问题描述】:

我有两个 mpeg-ts + h.264 视频文件,我尝试在带有 ExoPlayer 的 Android 设备(Samsung Tab A 10.1")上阅读:

SimpleExoPlayerView view = new SimpleExoPlayerView(this);
TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveVideoTrackSelection.Factory(new DefaultBandwidthMeter());
TrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
SimpleExoPlayer mediaPlayer = ExoPlayerFactory.newSimpleInstance(this, trackSelector, new DefaultLoadControl());
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this, Util.getUserAgent(this, getString(R.string.app_name)));
ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
MediaSource source = new ExtractorMediaSource(uri, dataSourceFactory, extractorsFactory, null, null);
view.setPlayer(mediaPlayer);
mediaPlayer.setPlayWhenReady(true);
mediaPlayer.prepare(source);

第一个成功(图像正确显示),但第二个失败(不显示图像),尽管它们在视频特征方面非常相似。我想知道为什么。

我使用mediainfo提取视频编码细节。

第一个视频(成功):

General
ID                                       : 0 (0x0)
Complete name                            : 1080i.ts
Format                                   : MPEG-TS
File size                                : 56.7 MiB
Duration                                 : 47s 456ms
Overall bit rate mode                    : Constant
Overall bit rate                         : 10.0 Mbps

Video
ID                                       : 256 (0x100)
Menu ID                                  : 1 (0x1)
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : High@L4.0
Format settings, CABAC                   : Yes
Format settings, ReFrames                : 2 frames
Codec ID                                 : 27
Duration                                 : 47s 282ms
Bit rate                                 : 9 185 Kbps
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Frame rate                               : 29.970 fps
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : MBAFF
Bits/(Pixel*Frame)                       : 0.148
Stream size                              : 51.8 MiB (91%)

第二个视频(失败):

General
ID                                       : 1 (0x1)
Complete name                            : fr5.ts
Format                                   : MPEG-TS
File size                                : 13.8 MiB
Duration                                 : 32s 270ms
Overall bit rate mode                    : Variable
Overall bit rate                         : 3 557 Kbps

Video
ID                                       : 420 (0x1A4)
Menu ID                                  : 1045 (0x415)
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : High@L4.0
Format settings, CABAC                   : Yes
Format settings, ReFrames                : 4 frames
Codec ID                                 : 27
Duration                                 : 31s 760ms
Bit rate                                 : 3 252 Kbps
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Frame rate                               : 25.000 fps
Standard                                 : Component
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : MBAFF
Bits/(Pixel*Frame)                       : 0.063
Stream size                              : 12.3 MiB (89%)
Color primaries                          : BT.709
Transfer characteristics                 : BT.709
Matrix coefficients                      : BT.709

【问题讨论】:

  • 两个流之间的唯一区别是支持的参考帧数。这不太可能成为问题,因为玩家将拥有一个通用解码器,但仍然可以通过仅使用 2 个参考帧尝试其他一些序列来进行检查?

标签: android h.264 exoplayer exoplayer2.x


【解决方案1】:

两个文件之间最显着的区别是比特率。工作的具有更高的比特率,并且是恒定的,而损坏的具有相同的高分辨率,但比特率低得多且可变。在不了解提供的统计数据的情况下,我会责怪用于编码视频的工具。也许有关配置的某些原因导致编码器输出黑帧。您是否在不同的设备上尝试过相同的文件?你能用稍微不同的设置重新编码吗?

【讨论】:

  • 我尝试了几种不同的设备,但总是得到相同的结果。第一个文件是我在网上找到的示例文件。第二个来自 iptv 流(我无法对其进行任何配置),我的最终目标是能够读取第二个流。
  • 您是否在日志中看到任何表明这是何种错误的错误?如果您正在播放不属于您的流媒体,则它可能受 DRM 保护。
猜你喜欢
  • 2014-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-29
  • 1970-01-01
  • 2016-01-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多