Disclosure Statement: This site contains affiliate links, which means that I may receive a commission if you make a purchase using these links. As an eBay Partner, I earn from qualifying purchases.

How to support mp3 and mp4?

User avatar
salvadordf
Posts: 4056
Joined: Thu Feb 02, 2017 12:24 pm
Location: Spain
Contact:

Re: How to support mp3 and mp4?

Post by salvadordf »

Hi,

Propietary codec support must be enabled at compile time in the CEF3 binaries used in CEF4Delphi.
The Spotify binaries don't have them enabled to avoid legal problems.

You need to compile the CEF3 binaries as described here :
http://www.magpcss.org/ceforum/viewtopi ... =6&t=13515
https://bitbucket.org/chromiumembedded/ ... uilding.md
https://bitbucket.org/chromiumembedded/ ... ckStart.md

Once you have the new binaries you should only hace to replace the CEF3 binaries from Spotify in your application.
coater
Posts: 135
Joined: Sat Sep 29, 2018 1:51 pm

Re: How to support mp3 and mp4?

Post by coater »

How to do that with new version? Are there some detailed instructions. thank you!
User avatar
salvadordf
Posts: 4056
Joined: Thu Feb 02, 2017 12:24 pm
Location: Spain
Contact:

Re: How to support mp3 and mp4?

Post by salvadordf »

I'm sorry but I've never built the CEF binaries and I don't know the details.
The links I gave in my previous message have a lot of information about building CEF.

In case you need help to build them you can ask in the official CEF forum :

http://www.magpcss.org/ceforum
coater
Posts: 135
Joined: Sat Sep 29, 2018 1:51 pm

Re: How to support mp3 and mp4?

Post by coater »

thank you! hope there are someone to provide compiled binary CEF3 binaries (cef_binary_74.1.19+gb62bacf+chromium-74.0.3729.157_windows32.tar.bz2). :roll:
thefunkyjoint
Posts: 460
Joined: Thu Aug 10, 2017 12:40 pm

Re: How to support mp3 and mp4?

Post by thefunkyjoint »

I follow this topic, i really need this support and so far i could not achieve this due to my limited technical skills...
coater
Posts: 135
Joined: Sat Sep 29, 2018 1:51 pm

Re: How to support mp3 and mp4?

Post by coater »

I found cef_binary_3.3578.1860.g36610bd_windows32.tar(H264) from web, but CEF4Delphi-71.0.3578.98 need CEF 3.3578.1869. Is it possible to run cef4 on CEF 3.3578.1869?
coater
Posts: 135
Joined: Sat Sep 29, 2018 1:51 pm

Re: How to support mp3 and mp4?

Post by coater »

thefunkyjoint wrote: Fri Jun 14, 2019 5:35 pm I follow this topic, i really need this support and so far i could not achieve this due to my limited technical skills...
I can't obtain source file of cef because of web firewall. If you send it to me I can try to build it。


https://bitbucket.org/chromiumembedded/ ... ownloading
https://stackoverflow.com/questions/438 ... 0#45404590
https://chromium.googlesource.com/chrom ... uctions.md

https://chromium.googlesource.com/chrom ... uctions.md


cef_create_projects patches fail…
run update.bat, then create.bat
gn.py: Could not find gn executable..
1: run again update.bat
2: cd ……\chromium_git\chromium\
gclient runhooks


“media/media_features.h”: No such file or directory
run Ninja

windows.h error
update.bat :
set vs_root=C:\Program Files (x86)\Microsoft Visual Studio .... //replace with yours
set sdk_root=C:\Program Files (x86)\Windows Kits\10 .... //replace with yours
set sdk_ver=10.0.16299.0 .... //replace with yours
set vs_crt_root=C:\Program Files (x86)\Microsoft Visual Studio ***\VC\crt .... //replace with yours
set GYP_MSVS_VERSION=2017.... //replace with yours
set WIN_CUSTOM_TOOLCHAIN=1
set CEF_VCVARS=none
set GYP_MSVS_OVERRIDE_PATH=%vs_root%
set VS_CRT_ROOT=%vs_crt_root%
set SDK_ROOT=%sdk_root%
set PATH=%sdk_root%\bin\x86;%sdk_root%\bin\%sdk_ver%\x86;%vs_root%\VC\bin;%PATH%
set LIB=%sdk_root%\Lib\%sdk_ver%\um\x86;%sdk_root%\Lib\%sdk_ver%\ucrt\x86;%vs_root%\VC\lib;%vs_root%\VC\atlmfc\lib;%LIB%
set INCLUDE=%sdk_root%\Include\%sdk_ver%\um;%sdk_root%\Include\%sdk_ver%\ucrt;%sdk_root%\Include\%sdk_ver%\shared;%sdk_root%\Include\%sdk_ver%\winrt;%vs_root%\VC\include;%vs_root%\VC\atlmfc\include;%INCLUDE%

no mc.exe….
%Path% add win10 sdk version %sdk_root%\bin\%sdk_ver%\x86





automate-git.py –help
from:https://blog.csdn.net/kegechen/article/details/78774729


Detailed Chromium and CEF version information is available in the include/cef_version.h header file which is created during the build process or by loading the “about:version” URL in a CEF-derived application.
Last edited by coater on Wed Jun 19, 2019 2:51 pm, edited 4 times in total.
coater
Posts: 135
Joined: Sat Sep 29, 2018 1:51 pm

Re: How to support mp3 and mp4?

Post by coater »

Visual Studio VS2017 15.7.1+ [ https://docs.microsoft.com/en-us/visual ... 7-relnotes ]installed in the default location.
Windows 10.0.17763 SDK [ https://developer.microsoft.com/en-us/w ... ows-10-sdk ] installed in the default location. You must install this exact SDK version to avoid build issues.

Setting up Windows

Visual Studio

Chromium requires Visual Studio 2017 (>=15.7.2) or 2019 (>=16.0.0) to build. Visual Studio can also be used to debug Chromium and Visual Studio 2019 is preferred for this as it handles Chromium‘s large debug information much better. The clang-cl compiler is used but Visual Studio’s header files, libraries, and some tools are required. Visual Studio Community Edition should work if its license is appropriate for you. You must install the “Desktop development with C++” component and the “MFC/ATL support” sub-components. This can be done from the command line by passing these arguments to the Visual Studio installer (see below for ARM64 instructions):

$ PATH_TO_INSTALLER.EXE ^
--add Microsoft.VisualStudio.Workload.NativeDesktop ^
--add Microsoft.VisualStudio.Component.VC.ATLMFC ^
--includeRecommended
If you want to build for ARM64 Win32 then some extra arguments are needed. The full set for that case is:

$ PATH_TO_INSTALLER.EXE ^
--add Microsoft.VisualStudio.Workload.NativeDesktop ^
--add Microsoft.VisualStudio.Component.VC.ATLMFC ^
--add Microsoft.VisualStudio.Component.VC.Tools.ARM64 ^
--add Microsoft.VisualStudio.Component.VC.MFC.ARM64 ^
--includeRecommended
for example:
run in cmd.:: use -- layout you can save setup files for next installing if you reinstall your computer.
vs_professional.exe --layout d:\vs2017offline --lang en-US --add Microsoft.VisualStudio.Workload.NativeDesktop --add Microsoft.VisualStudio.Component.VC.ATLMFC --add Microsoft.VisualStudio.Component.VC.Tools.ARM64 --add Microsoft.VisualStudio.Component.VC.MFC.ARM64 --includeRecommended
vs_professional.exe --lang en-US --add Microsoft.VisualStudio.Workload.NativeDesktop --add Microsoft.VisualStudio.Component.VC.ATLMFC --add Microsoft.VisualStudio.Component.VC.Tools.ARM64 --add Microsoft.VisualStudio.Component.VC.MFC.ARM64 --includeRecommended

note: If vs not installed installed in the default location. for exampl(installed vs2017PRO on E:): With VS 2017 Microsoft stopped setting environment variables to indicate where VS was installed. Nobody has bothered to write the necessary code to track down copies of VS that aren't installed in the default location. A long-term solution is to set this environment variable:
set vs2017_install=E:\Program Files (x86)\Microsoft Visual Studio\2017\Professional
:: set GYP_MSVS_VERSION = 2017
::set GYP_MSVS_OVERRIDE_PATH = E:\Program Files (x86)\Microsoft Visual Studio\2017\Professional
If VS2017 or SDK is not installed to the default location then set the following before executing automate-git.py:
set WIN_CUSTOM_TOOLCHAIN=1
set CEF_VCVARS=none
set GYP_MSVS_OVERRIDE_PATH=%vs_root%
set VS_CRT_ROOT=%vs_crt_root%
set SDK_ROOT=%sdk_root%
set PATH=%sdk_root%\bin\%sdk_version%\x64;%vs_root%\VC\Tools\MSVC\%vc_tools_version%\bin\HostX64\x64;%vs_root%\VC\Redist\MSVC\%vc_redist_version%\x64\%vc_redist_crt%;%vs_root%\SystemCRT;%PATH%
set LIB=%sdk_root%\Lib\%sdk_version\um\x64;%sdk_root%\Lib\%sdk_version\ucrt\x64;%vs_root%\VC\Tools\MSVC\%vc_tools_version%\lib\x64;%vs_root%\VC\Tools\MSVC\%vc_tools_version%\atlmfc\lib\x64;%LIB%
set INCLUDE=%sdk_root%\Include\%sdk_version%\um;%sdk_root%\Include\%sdk_version%\ucrt;%sdk_root%\Include\%sdk_version%\shared;%vs_root%\VC\Tools\MSVC\%vc_tools_version%\include;%vs_root%\VC\Tools\MSVC\%vc_tools_version%\atlmfc\include;%INCLUDE%

https://bitbucket.org/chromiumembedded/ ... ldSetup.md

You must have the version 10.0.17763 or higher Windows 10 SDK installed. This can be installed separately or by checking the appropriate box in the Visual Studio Installer.
Please follow the cleanup steps and retry VS install
[ https://devblogs.microsoft.com/setup/mo ... udio-2017/ ]
See if you have this file on your machine: "%programfiles(x86)%\Microsoft Visual Studio\Installer\resources\app\layout\InstallCleanup.exe"
If so, please launch it from an admin command prompt with a -full param:
InstallCleanup.exe -full
If not, please manually delete the "%programfiles(x86)%\Microsoft Visual Studio\Installer” folder
please manually delete the VS install folder you installed to
Relaunch the newly downloaded vs_enterprise.exe (or vs_professional.exe or vs_community.exe…)
Allow the first step to install the installer
Once the installer comes up and you can see workload choices (.net desktop and the like), close it
Go launch the same InstallCleanup.exe to clean up old build of VS
Then relaunch vs_enterprise.exe and install VS
The SDK Debugging Tools must also be installed. If the Windows 10 SDK was installed via the Visual Studio installer, then they can be installed by going to: Control Panel → Programs → Programs and Features → Select the “Windows Software Development Kit” → Change → Change → Check “Debugging Tools For Windows” → Change. Or, you can download the standalone SDK installer and use it to install the Debugging Tools.

remember turn off window autoupdate!!!!
do not use Control-C to stop cmd, shut down window may be better if you really want to stop it and succeed next time.(just my experience)

1. Create the following directories.
c:\code\automate
c:\code\chromium_git
WARNING: If you change the above directory names/locations make sure to (a) use only ASCII characters and (b) choose a short file path (less than 35 characters total). Otherwise, some tooling may fail later in the build process due to invalid or overly long file paths.
2. Download depot_tools.zip [ https://storage.googleapis.com/chrome-i ... _tools.zip ]and extract to "c:\code\depot_tools". Do not use drag-n-drop or copy-n-paste extract from Explorer, this will not extract the hidden ".git" folder which is necessary for depot_tools to auto-update itself. You can use "Extract all..." from the context menu though. 7-zip is also a good tool for this.
3. Run "update_depot_tools.bat" to install Python, Git and SVN.
cd c:\code\depot_tools
update_depot_tools.bat
4. Add the "c:\code\depot_tools" folder to your system PATH. For example, on Windows 10:
Run the "SystemPropertiesAdvanced" command.
Click the "Environment Variables..." button.
Double-click on "Path" under "System variables" to edit the value.
Also, add a DEPOT_TOOLS_WIN_TOOLCHAIN system variable in the likely way, and set it to 0. This tells depot_tools to use your locally installed version of Visual Studio (by default, depot_tools will try to use a google-internal version).(That particular environment variable DEPOT_TOOLS_WIN_TOOLCHAIN is different for Google employees because of licensing reasons (distributing Microsoft toolchain via depot_tools))
5. Download the automate-git.py [ https://bitbucket.org/chromiumembedded/ ... ate-git.py ] script to "c:\code\automate\automate-git.py".
6. Create the "c:\code\chromium_git\update.bat" script with the following contents.
set CEF_USE_GN=1
set GN_DEFINES=is_official_build=true proprietary_codecs=true ffmpeg_branding=Chrome
set GN_ARGUMENTS=--ide=vs2017 --sln=cef --filters=//cef/*
python ..\automate\automate-git.py --branch=3729 --download-dir=c:\code\chromium_git --depot-tools-dir=c:\code\depot_tools –no-update --no-distrib --no-build
Run the "update.bat" script and wait for CEF and Chromium source code to download. CEF source code will be downloaded to "c:\code\chromium_git\cef" and Chromium source code will be downloaded to "c:\code\chromium_git\chromium\src". After download completion the CEF source code will be copied to "c:\code\chromium_git\chromium\src\cef".
cd c:\code\chromium_git
update.bat
run again IF errors happened(of course u must know why and resolve them before running again)
fetch process:
git clone ...
Cloning into ...
remote: Counting objects: ..., done.
remote: Total ...(delta 0), reused ...(delta 0), pack-reused ...
Receiving objects: 100% (.../...), done.,it will download files to an object like ':\code\chromium_git\chromium\_gclient_src_q4x_61\.git\objects\pack'
Resolving deltas: 100% (.../...), done.
Checking connectivity... done.

7. Create the "c:\code\chromium_git\chromium\src\cef\create.bat" script with the following contents.
set CEF_USE_GN=1
set GN_DEFINES=use_jumbo_build=true proprietary_codecs=true ffmpeg_branding=Chrome
set GN_ARGUMENTS=--ide=vs2017 --sln=cef --filters=//cef/*
call cef_create_projects.bat
For best local developer (non-official debug) build-time performance:
When using VS2015 set GN_DEFINES=is_win_fastlink=true for improved compile and link time.
When using VS2017 set GN_DEFINES=use_jumbo_build=true for improved compile and link time.
Component builds are supported by 3202 branch and newer and significantly reduce link time. Add is_component_build=true to GN_DEFINES in combination with the above VS-version-specific values. Component builds cannot be used to create a CEF binary distribution. See issue #1617 for details.
Run the "create.bat" script to generate Ninja and Visual Studio project files.
cd c:\code\chromium_git\chromium\src\cef
create.bat
This will generate a "c:\code\chromium_git\chromium\src\out\Debug_GN_x86\cef.sln" file that can be loaded in Visual Studio for debugging and compiling individual files. Replace “x86” with “x64” in this path to work with the 64-bit build instead of the 32-bit build. Always use Ninja to build the complete project. Repeat this step if you change the project configuration or add/remove files in the GN configuration (BUILD.gn file).
8. Create a Debug build of CEF/Chromium using Ninja. Replace “x86” with “x64” in the below example to generate a 64-bit build instead of a 32-bit build. Edit the CEF source code at "c:\code\chromium_git\chromium\src\cef" and repeat this step multiple times to perform incremental builds while developing.
cd c:\code\chromium_git\chromium\src
ninja -C out\Debug_GN_x86 cef
must be patient!!!!!!!!!! even if the number didn't change on cmd window. (I took 16h use 8G ram)
9. Run the resulting cefclient sample application.
cd c:\code\chromium_git\chromium\src
out\Debug_GN_x86\cefclient.exe

# Setup options.
--download-dir : 'Download directory with no spaces [required].'
--depot-tools-dir : 'Download directory for depot_tools.'
--depot-tools-archive : 'Zip archive file that contains a single top-level '
--branch : 'Branch of CEF to build (trunk, 1916, ...). This will be used to name the CEF download directory and
to identify the correct URL if --url is not specified. The default value is trunk.'
--url : 'CEF download URL. If not specified the default URL will be used.'
--chromium-url : 'Chromium download URL. If not specified the default URL will be used.'
--checkout : 'Version of CEF to checkout. If not specified the most recent remote version of the branch will be used.'
--chromium-checkout : 'Version of Chromium to checkout (Git branch/hash/tag). This overrides the value specified by CEF in CHROMIUM_BUILD_COMPATIBILITY.txt.'
--chromium-channel : 'Chromium channel to check out (canary, dev, beta or stable). This overrides the value specified by CEF in CHROMIUM_BUILD_COMPATIBILITY.txt.'
--chromium-channel-distance : 'The target number of commits to step in the channel, or 0 to use the newest channel version. Used in combination with --chromium-channel.'

# Miscellaneous options.
--force-config : 'Force creation of a new gclient config file.'
--force-clean : 'Force a clean checkout of Chromium and CEF. This will trigger a new update, build and distribution.'
--force-clean-deps : 'Force a clean checkout of Chromium dependencies. Used in combination with --force-clean.'
--dry-run : 'Output commands without executing them.'
--dry-run-platform : 'Simulate a dry run on the specified platform (windows, macosx, linux). Must be used in combination with the --dry-run flag.'

# Update-related options.
--force-update : 'Force a Chromium and CEF update. This will trigger a new build and distribution.'
--no-update : 'Do not update Chromium or CEF. Pass --force-build or --force-distrib if you desire a new build or distribution.'
--no-cef-update : 'Do not update CEF. Pass --force-build or --force-distrib if you desire a new build or distribution.'
--force-cef-update : 'Force a CEF update. This will cause local changes in the CEF checkout to be discarded and patch files to be reapplied.'
--no-chromium-update : 'Do not update Chromium.'
--no-depot-tools-update : 'Do not update depot_tools.'
--fast-update : 'Update existing Chromium/CEF checkouts for fast incremental builds by attempting to minimize the number of modified files. The update will fail if there are unstaged CEF changes or if Chromium changes are not included in a patch file.'
--force-patch-update : 'Force update of patch files.'
--resave : 'Resave patch files.'
--log-chromium-changes : 'Create a log of the Chromium changes.'

# Build-related options.
--force-build : 'Force CEF debug and release builds. This builds [build-target] on all platforms and chrome_sandbox on Linux.'
--no-build: 'Do not build CEF.'
--build-target : 'Target name(s) to build (defaults to "cefclient").'
--build-tests : 'Also build the test target specified via --test-target.'
--no-debug-build : 'Don't perform the CEF debug build.'
--no-release-build: 'Don't perform the CEF release build.'
--verbose-build : 'Show all command lines while building.'
--build-failure-limit : 'Keep going until N jobs fail.'
--build-log-file : 'Write build logs to file. The file will be named "build-[branch]-[debug|release].log" in the download directory.'
--x64-build : 'Create a 64-bit build.'
--arm-build : 'Create an ARM build.'

# Test-related options.
--run-tests : 'Run the ceftests target.'
--no-debug-tests : 'Don't run debug build tests.'
--no-release-tests : 'Don't run release build tests.'
--test-target : 'Test target name to build (defaults to "ceftests").'
--test-prefix : 'Prefix for running the test executable (e.g. `xvfb-run` on Linux).'
--test-args : 'Arguments that will be passed to the test executable.')

# Distribution-related options.
--force-distrib : 'Force creation of a CEF binary distribution.'
--no-distrib : 'Don't create a CEF binary distribution.'
--minimal-distrib : 'Create a minimal CEF binary distribution.'
--minimal-distrib-only : 'Create a minimal CEF binary distribution only.'
--client-distrib : 'Create a client CEF binary distribution.'
--client-distrib-only : 'Create a client CEF binary distribution only.'
--sandbox-distrib : 'Create a cef_sandbox static library distribution.'
--sandbox-distrib-only : 'Create a cef_sandbox static library distribution only.'
--no-distrib-docs : "Don't create CEF documentation."
--no-distrib-archive : "Don't create archives for output directories."
--clean-artifacts : 'Clean the artifacts output directory.'
--distrib-subdir : 'CEF distrib dir name, child of chromium/src/cef/binary_distrib
Last edited by coater on Fri Jun 21, 2019 10:08 am, edited 17 times in total.
User avatar
salvadordf
Posts: 4056
Joined: Thu Feb 02, 2017 12:24 pm
Location: Spain
Contact:

Re: How to support mp3 and mp4?

Post by salvadordf »

Read this post before you try to build the binaries.
You will need lots of RAM! 32GB or more! :o

https://www.magpcss.org/ceforum/viewtop ... 829#p42118

I'll release a new CEF4Delphi version as soon as I can download the new CEF 75.0.7 binaries from Spotify.
coater wrote: Sat Jun 15, 2019 2:27 am I can't obtain source file of cef because of web firewall. If you send it to me I can try to build it。
The CEF sources are available from GitHub too :
https://github.com/chromiumembedded/cef
coater
Posts: 135
Joined: Sat Sep 29, 2018 1:51 pm

Re: How to support mp3 and mp4?

Post by coater »

salvadordf wrote: Sat Jun 15, 2019 6:42 am Read this post before you try to build the binaries.
You will need lots of RAM! 32GB or more! :o

https://www.magpcss.org/ceforum/viewtop ... 829#p42118

I'll release a new CEF4Delphi version as soon as I can download the new CEF 75.0.7 binaries from Spotify.
coater wrote: Sat Jun 15, 2019 2:27 am I can't obtain source file of cef because of web firewall. If you send it to me I can try to build it。
The CEF sources are available from GitHub too :
https://github.com/chromiumembedded/cef
after searching help CEF sources from GitHub cannot be used because there are many tools must download from g.

I completed use v! nearly 16h for X86 build(8G ram).(CEF 74.1.19 Debug_version ) .

I wonder which files I should used to support cef4?
How to find cef version in builds?
I should use release version or debug version?
Thank you!
You do not have the required permissions to view the files attached to this post.
Post Reply