Environment: Windows 10, WinForm (.Net 4.7.2) x64 only, CefSharp 71.0.2.0
Нам нужна поддержка воспроизведения MP4 в нашем продукте (у нас есть лицензия), и мы пытаемся перекомпилировать CEF с включенными проприетарными кодеками.
Мы используем инструкции от:
https://bitbucket.org/chromiumembedded/cef/wiki/MasterBuildQuickStart.md#markdown-header-windows-setup
Наш файл create.bat выглядит так:
set CEF_USE_GN=1
set GN_DEFINES=is_win_fastlink=true proprietary_codecs=true ffmpeg_branding=Chrome
set GN_ARGUMENTS=--ide=vs2015 --sln=cef --filters=//cef/*
call cef_create_projects.bat
Наш файл update.bat выглядит как
set CEF_USE_GN=1
set GN_DEFINES=is_official_build=true proprietary_codecs=true ffmpeg_branding=Chrome
set GN_ARGUMENTS=--ide=vs2015 --sln=cef --filters=//cef/*
python ..\automate\automate-git.py --download-dir=C:\code\chromium_git --depot-tools-dir=C:\code\depot_tools --no-distrib --no-build --branch=3578
Мы пытаемся нацелить сборку 3578 так, чтобы она соответствовала сборке, поставляемой с CEFSharp. Мы также включили проприетарный кодек, используя флаг: proprietary_codecs = true
Примерно через 2 часа без ошибок сборка завершается успешно. Когда мы запускаем нашу страницу, используя cefclient.exe из выходной сборки, все работает как положено, видео воспроизводится правильно.
Мы копируем следующие файлы из выходной папки сборки в наше приложение .Net, заменив файлы, упакованные с CEFSharp:
cef.pak
cef_100_percent.pak
cef_200_percent.pak
cef_extensions.pak
chrome_elf.dll
d3dcompiler_47.dll
devtools_resources.pak
icudtl.dat
libcef.dll
libEGL.dll
libGLESv2.dll
natives_blob.bin
snapshot_blob.bin
v8_context_snapshot.bin
\locales\*.*
\swiftshader\libEGL.dll
\swiftshader\libGLESv2.dll
При запуске нашего приложения оно немедленно завершается, и это записывается в файл debug.log:
[0326/094610.429:FATAL:cookie_manager_impl.cc(620)] Check failed: false. context not valid
Backtrace:
cef_string_utf16_to_upper [0x00007FFD2B53E1E5+1713061]
cef_string_utf16_to_upper [0x00007FFD2B53D44D+1709581]
cef_string_utf16_to_upper [0x00007FFD2B5765D5+1943445]
cef_zip_reader_create [0x00007FFD2B3107B8+159661640]
cef_cookie_manager_get_global_manager [0x00007FFD219B0436+54]
CefCookieManager::GetGlobalManager [0x00007FFD7322879E+94]
(No symbol) [0x00007FFD4E1C07DE]
[0326/094721.035:FATAL:cookie_manager_impl.cc(620)] Check failed: false. context not valid
Мне удалось увидеть, что 71.0.2.0 использует CEF 3.3578.1870.gc974488 / Chromium 71.0.3578.98 из:
https://github.com/cefsharp/CefSharp/commit/7d24861e7af79fc4721eb498bb8417b5aa6cad97
Когда мы запускаем cefclient.exe из нашей сборки и переходим к chrome: // об этом отображается:
CEF 3.3578.1870.gc974488
Chromium 71.0.3578.98
Что соответствует странице примечаний к выпуску CEFSharp.
Любые предложения будут с благодарностью!