【发布时间】:2020-12-01 06:12:12
【问题描述】:
我正在制作 IP 流 Android 应用程序。我在其中使用 exoplayer 2.12.0。输入视频具有 exoplayer https://github.com/google/ExoPlayer/issues/6525 不支持的 mpeg-L2 音频层编解码器。所以我使用 ffmpeg 扩展来渲染音频。
我已按照https://github.com/google/ExoPlayer/tree/release-v2/extensions/ffmpeg 的步骤使用 android-ndk-r21d-linux-x86_64 和 FFmpeg-release-4.3 构建 ffmpeg 扩展。
在应用程序中添加代码TrackSelector trackSelectors = new DefaultTrackSelector(new AdaptiveTrackSelection.Factory()); RenderersFactory renderersFactory=new DefaultRenderersFactory(this,EXTENSION_RENDERER_MODE_ON,DEFAULT_ALLOWED_VIDEO_JOINING_TIME_MS); player = ExoPlayerFactory.newSimpleInstance(this, renderersFactory,trackSelectors);
仍然没有音频,日志如下
2020-12-01 05:05:10.803 9161-9161/demo.demoapps.com.exoplayer2udpdemo D/EventLogger: videoEnabled [eventTime=1.39, mediaPos=0.00, window=0, period=0]
2020-12-01 05:05:10.808 9161-9161/demo.demoapps.com.exoplayer2udpdemo D/EventLogger:轨道 [eventTime=1.39, mediaPos=0.00, window=0, period=0, []]
2020-12-01 05:05:10.808 9161-9161/demo.demoapps.com.exoplayer2udpdemo I/MainActivity:onTracksChanged
2020-12-01 05:05:10.809 9161-9161/demo.demoapps.com.exoplayer2udpdemo I/MainActivity: 2
2020-12-01 05:05:10.809 9161-9161/demo.demoapps.com.exoplayer2udpdemo I/MainActivity: Format(2204/5204, null, null, video/mpeg2, null, -1, null, [720, 576 , -1.0], [-1, -1])
2020-12-01 05:05:10.809 9161-9161/demo.demoapps.com.exoplayer2udpdemo I/MainActivity: Format(2204/6204, null, null, audio/mpeg-L2, null, -1, null, [- 1, -1, -1.0], [2, 48000])
2020-12-01 05:05:10.813 9161-9161/demo.demoapps.com.exoplayer2udpdemo D/EventLogger: downstreamFormat [eventTime=1.40, mediaPos=0.00, window=0, period=0, id=2204/5204, mimeType=video/mpeg2, res=720x576]
2020-12-01 05:05:10.827 9161-9219/demo.demoapps.com.exoplayer2udpdemo I/OMXClient: 获得 IOmx 服务
2020-12-01 05:05:10.926 9161-9218/demo.demoapps.com.exoplayer2udpdemo D/SurfaceUtils:连接到表面 0x6f5abb1010,原因 connectToSurface
2020-12-01 05:05:10.928 9161-9218/demo.demoapps.com.exoplayer2udpdemo I/MediaCodec:[OMX.qcom.video.decoder.mpeg2] 将表面生成设置为 9380865
2020-12-01 05:05:10.928 9161-9218/demo.demoapps.com.exoplayer2udpdemo D/SurfaceUtils:与表面 0x6f5abb1010 断开连接,原因是 connectToSurface(重新连接)
2020-12-01 05:05:10.929 9161-9218/demo.demoapps.com.exoplayer2udpdemo D/SurfaceUtils:连接到表面 0x6f5abb1010,原因 connectToSurface(重新连接)
2020-12-01 05:05:10.941 9161-9219/demo.demoapps.com.exoplayer2udpdemo I/ExtendedACodec: setupVideoDecoder()
2020-12-01 05:05:10.950 9161-9219/demo.demoapps.com.exoplayer2udpdemo I/ExtendedACodec:解码器将处于逐帧模式
2020-12-01 05:05:10.995 9161-9219/demo.demoapps.com.exoplayer2udpdemo D/SurfaceUtils:为 720x576 设置 nativeWindow 0x6f5abb1010,颜色 0x7fa30c06,旋转 0,使用 0x20002900
2020-12-01 05:05:11.014 9161-9161/demo.demoapps.com.exoplayer2udpdemo D/EventLogger: videoDecoderInitialized [eventTime=1.60, mediaPos=0.00, window=0, period=0, OMX.qcom.video.decoder.mpeg2]
2020-12-01 05:05:11.015 9161-9161/demo.demoapps.com.exoplayer2udpdemo D/EventLogger: videoInputFormat [eventTime=1.60, mediaPos=0.00, window=0, period=0, id=2204/5204, mimeType=video/mpeg2, res=720x576]
2020-12-01 05:05:11.060 9161-9219/demo.demoapps.com.exoplayer2udpdemo D/SurfaceUtils:为 720x576 设置 nativeWindow 0x6f5abb1010,颜色 0x7fa30c06,旋转 0,使用 0x20002900
2020-12-01 05:05:11.101 9161-9161/demo.demoapps.com.exoplayer2udpdemo D/EventLogger: videoSize [eventTime=1.69, mediaPos=0.00, window=0, period=0, 720, 576]
2020-12-01 05:05:11.153 9161-9161/demo.demoapps.com.exoplayer2udpdemo D/EventLogger:surfaceSize [eventTime=1.74, mediaPos=0.00, window=0, period=0, 786, 590]
2020-12-01 05:05:11.180 9161-9161/demo.demoapps.com.exoplayer2udpdemo D/EventLogger: renderFirstFrame [eventTime=1.76, mediaPos=0.00, window=0, period=0, Surface(name=null)/ @0x1c4f9a6]
2020-12-01 05:05:12.517 9161-9161/demo.demoapps.com.exoplayer2udpdemo I/MainActivity:onPlayerStateChanged:playWhenReady = true 播放状态 = 3
2020-12-01 05:05:12.517 9161-9161/demo.demoapps.com.exoplayer2udpdemo I/MainActivity:ExoPlayer 准备就绪!位置:
2020-12-01 05:05:12.518 9161-9161/demo.demoapps.com.exoplayer2udpdemo D/EventLogger:状态 [eventTime=3.10, mediaPos=0.00, window=0, period=0, READY]
2020-12-01 05:05:12.523 9161-9161/demo.demoapps.com.exoplayer2udpdemo D/EventLogger: isPlaying [eventTime=3.11, mediaPos=0.00, window=0, period=0, true]
在这里,无论有没有 ffmpeg 扩展,我都没有在 Eventlogger 中获得 audioEnabled 日志。 同样在使用 ffmpeg 音频渲染后,我不知道它是否被使用。 还是我错过了 Exoplayer 的一些 ffmpeg 扩展配置?
【问题讨论】:
标签: android ffmpeg exoplayer2.x mpeg2-ts