【发布时间】:2020-06-08 10:33:49
【问题描述】:
嗨,我有一个 android 项目,我必须通过套接字从服务器接收音频和视频,音频部分运行完美。 但是视频部分不工作我不知道是什么原因,因为解码器在解码视频数据包时没有显示任何错误。 我使用的视频编解码器是来自 ffmepeg 编码器的 H.264/AVC,具有以下设置:-
tune = 零延迟
个人资料 = 基线
等级 = 3
宽度 = 320
身高 = 240
帧率 = 30
GOPSize = 30
我发现我必须将 CSD-0 和 CSD-1 添加到 MediaCodec 配置,但我不知道如何将 H.264 SPS/PPS 数据添加到配置中
这是我找到的代码,但它不适合我,
byte[] header_sps = { 0, 0, 0, 1, 103, 100, 0, 40, -84, 52, -59, 1, -32, 17, 31, 120, 11, 80, 16, 16, 31, 0, 0, 3, 3, -23, 0, 0, -22, 96, -108 };
byte[] header_pps = { 0, 0, 0, 1, 104, -18, 60, -128 };
MediaFormat videoFormat = MediaFormat.createVideoFormat(MediaFormat.MIMETYPE_VIDEO_AVC , 320 , 240 );
videoFormat.setInteger(MediaFormat.KEY_MAX_INPUT_SIZE , 100000);
videoFormat.setByteBuffer("csd-0", ByteBuffer.wrap(header_sps));
videoFormat.setByteBuffer("csd-1", ByteBuffer.wrap(header_pps));
MediaCodec videoDecoder = MediaCodec.createDecoderByType(MediaFormat.MIMETYPE_VIDEO_AVC);
videoDecoder.configure(videoFormat , surface , null , 0);
videoDecoder.start();
如果有人知道在这种情况下解码 H.264 的正确方法是什么,这将很有帮助
【问题讨论】:
标签: android ffmpeg h.264 android-mediacodec