相关代码:
/root/Projects/webrtc-checkout/src/pc/media_session.cc
/root/Projects/webrtc-checkout/src/media/engine/internal_encoder_factory.cc
/root/Projects/webrtc-checkout/src/pc/sdp_offer_answer.cc
修改文件:
/root/Projects/webrtc-checkout/src/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavcodec/parser_list.c
/root/Projects/webrtc-checkout/src/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavcodec/codec_list.c
/root/Projects/webrtc-checkout/src/third_party/ffmpeg/chromium/config/Chrome/android/arm64/config.h
ld.lld: error: undefined symbol: ff_h264_decoder
>>> referenced by allcodecs.c:848 (../../third_party/ffmpeg/libavcodec/allcodecs.c:848)
>>> ffmpeg_internal/allcodecs.o:(av_codec_init_static) in archive obj/third_party/ffmpeg/libffmpeg_internal.a
>>> referenced by allcodecs.c:848 (../../third_party/ffmpeg/libavcodec/allcodecs.c:848)
>>> ffmpeg_internal/allcodecs.o:(av_codec_init_static) in archive obj/third_party/ffmpeg/libffmpeg_internal.a
>>> referenced by allcodecs.c:849 (../../third_party/ffmpeg/libavcodec/allcodecs.c:849)
>>> ffmpeg_internal/allcodecs.o:(av_codec_init_static) in archive obj/third_party/ffmpeg/libffmpeg_internal.a
>>> referenced 10 more times
ld.lld: error: undefined symbol: ff_h264_parser
>>> referenced by parsers.c:87 (../../third_party/ffmpeg/libavcodec/parsers.c:87)
>>> ffmpeg_internal/parsers.o:(av_parser_init_next) in archive obj/third_party/ffmpeg/libffmpeg_internal.a
>>> referenced by parsers.c:87 (../../third_party/ffmpeg/libavcodec/parsers.c:87)
>>> ffmpeg_internal/parsers.o:(av_parser_init_next) in archive obj/third_party/ffmpeg/libffmpeg_internal.a
>>> referenced by parsers.c
>>> ffmpeg_internal/parsers.o:(parser_list) in archive obj/third_party/ffmpeg/libffmpeg_internal.a
ld.lld: error: undefined symbol: avpriv_h264_has_num_reorder_frames
>>> referenced by utils.c:1001 (../../third_party/ffmpeg/libavformat/utils.c:1001)
>>> ffmpeg_internal/autorename_libavformat_utils.o:(avformat_find_stream_info) in archive obj/third_party/ffmpeg/libffmpeg_internal.a
>>> referenced by utils.c:1001 (../../third_party/ffmpeg/libavformat/utils.c:1001)
>>> ffmpeg_internal/autorename_libavformat_utils.o:(try_decode_frame) in archive obj/third_party/ffmpeg/libffmpeg_internal.a
>>> referenced by utils.c:1001 (../../third_party/ffmpeg/libavformat/utils.c:1001)
>>> ffmpeg_internal/autorename_libavformat_utils.o:(compute_pkt_fields) in archive obj/third_party/ffmpeg/libffmpeg_internal.a
>>> referenced 1 more times
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
修改:
/root/Projects/webrtc-checkout/src/third_party/ffmpeg/ffmpeg_generated.gni
use_linux_config = is_linux || is_chromeos || is_fuchsia
==>
use_linux_config = is_linux || is_chromeos || is_fuchsia || is_android
可能要修改 /root/Projects/webrtc-checkout/src/third_party/ffmpeg/chromium/scripts/build_ffmpeg.py
configure_flags['ChromeAndroid'].extend([
'--enable-demuxer=aac',
'--enable-parser=aac',
'--enable-decoder=aac',
=====>
configure_flags['ChromeAndroid'].extend([
'--enable-demuxer=aac',
'--enable-parser=aac',
'--enable-decoder=aac',
'--enable-demuxer=h264',
'--enable-parser=h264',
'--enable-decoder=h264',
'--enable-demuxer=hevc',
'--enable-parser=hevc',
'--enable-decoder=hevc',
# Set build arguments here. See `gn help buildargs`.
clang_use_chrome_plugins=false
fatal_linker_warnings=false
is_component_build=false
is_debug=true
target_cpu="arm64"
target_os="android"
symbol_level = 2
libcxx_abi_unstable = false
rtc_use_h264 = true
use_rtti = true
android32_ndk_api_level=21
rtc_exclude_field_trial_default=true
android_full_debug=true
strip_debug_info=false
rtc_build_examples=true
use_allocator_shim=true
rtc_include_tests=false
treat_warnings_as_errors=false
is_chrome_branded=true
proprietary_codecs = true
ffmpeg_branding="Chrome"