Ant*_*C G 5 android video-streaming android-mediacodec
我正在开发一个应用程序,该应用程序可以流式传输屏幕内容并将其通过 rtsp 流式传输。我正在使用 MediaCodec 和 VirtualDisplay。我遇到的问题是,当屏幕保持静态时,不会通过网络发送数据(不会生成新帧)。10 秒后,客户端断开连接。我看过一些帖子,人们说他们使用 KEY_REPEAT_PREVIOUS_FRAME_AFTER 来解决这个问题,但这个值似乎被忽略了。
这是我正在使用的代码:
MediaFormat format = MediaFormat.createVideoFormat(VIDEO_MIME_TYPE, VIDEO_WIDTH, VIDEO_HEIGHT);
format.setInteger(MediaFormat.KEY_COLOR_FORMAT,
MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface);
format.setInteger(MediaFormat.KEY_BIT_RATE, BIT_RATE);
format.setInteger(MediaFormat.KEY_FRAME_RATE, FRAME_RATE);
format.setInteger(MediaFormat.KEY_CAPTURE_RATE, FRAME_RATE);
format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 1); // 1 seconds between I-frames
format.setLong(MediaFormat.KEY_REPEAT_PREVIOUS_FRAME_AFTER, 1000000L / (long) FRAME_RATE);
MediaCodec mediaCodec = MediaCodec.createEncoderByType(VIDEO_MIME_TYPE);
mediaCodec.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
mediaCodecSurface = mediaCodec.createInputSurface();
mediaCodec.start();
Run Code Online (Sandbox Code Playgroud)
FRAME_RATE 为 30,VIDEO_MIME_TYPE 为 video/avc,BIT_RATE 为 1800000,VIDEO_WIDTH 为 1280,VIDEO_HEIGHT 为 720。
我将 mediaCodecSurface 传递给 VirtualDisplay。
有什么建议吗?
| 归档时间: |
|
| 查看次数: |
500 次 |
| 最近记录: |