webrtc M75支持android安卓H264软编解遇到的一些坑

webrtc android引擎遇到使用MTK芯片华为荣耀手机截另外一款HISI芯片编的H264时,解码器不停的重启,判断可能是芯片问题,考虑到后续其他机型下的兼容问题,决心给webrtc加上ffmpeg软解,网上找的相关资料基本都是比较老的版本,M75下遇到一些新的坑,记在这里供大家参考。

1. third_party/ffmpeg/ffmpeg_generated.gni

打开此文件,可以看到许多编译选项,检查下,把包含H264的开关打开,这里遇到的坑是该打开哪些文件,可能会遇到一些问题,铁在这里:

 

2.third_party/ffmpeg/chromium/config/Chrome/{ABI}/config.h

// #define CONFIG_H264_DECODER 0
// 修改为:
#define CONFIG_H264_DECODER 1

3.third_party/ffmpeg/chromium/config/Chrome/android/{ABI}/libavcodec/parser_list.c

    &ff_libopus_decoder,
// 增加 ff_h264_decoder
    &ff_h264_decoder,
    NULL };

4.third_party/ffmpeg/chromium/config/Chrome/android/{ABI}/libavcodec/codec_list.c

     &ff_vorbis_parser,
// 增加 ff_h264_parser
    &ff_h264_parser,
    NULL };

5.sdk/android/api/org/webrtc/LibH264Decoder.java

copy同目录下的LibvpxVp8Decoder.java改名而来,把VP8名字改成H264

 

6.sdk/android/api/org/webrtc/LibH264Encoder.java

copy同目录下的LibvpxVp8Encoder.java改名而来,把VP8名字改成H264

 

7.sdk/android/jni/h264codec.cc

copy同目录下的vp8codec.cc改名而来,把VP8名字改成H264

#include

#include "modules/video_coding/codecs/h264/include/h264.h"
#include "sdk/android/generated_libvpx_h264_jni/jni/LibvpxH264Decoder_jni.h"
#include "sdk/android/generated_libvpx_h264_jni/jni/LibvpxH264Encoder_jni.h"
#include "sdk/android/src/jni/jni_helpers.h"

namespace webrtc {
namespace jni {

static jlong JNI_LibvpxH264Encoder_CreateEncoder(JNIEnv* jni) {
  return jlongFromPointer(H264Encoder::Create(cricket::VideoCodec(cricket::kH264CodecName)).release());
}

static jlong JNI_LibvpxH264Decoder_CreateDecoder(JNIEnv* jni) {
  return jlongFromPointer(H264Decoder::Create().release());
}

}  // namespace jni
}  // namespace webrtc
 

8.sdk/android/BUILD.gn

把包含LibvpxVp8Decoder.java、LibvpxVp8Encoder.java、vp8codec.cc的所有段复制一份,并改成前面我们copy出来的文件名

9.在 sdk/android/api/org/webrtc/SoftwareVideoDecoderFacoty.java 和 sdk/android/api/org/webrtc/SoftwareVideoEncoderFacoty.java 中分别注册 H.264 并添加创建 codec 的代码

10../tools_webrtc/android/build_aar.py --arch "arm64-v8a" "armeabi-v7a" 

编译打包成aar

你可能感兴趣的:(webrtc M75支持android安卓H264软编解遇到的一些坑)