Chromium工程ffmpeg生效及增加多媒体格式支持类型的方法

在Chromium工程中,编译后的程序可能无法播放网页音视频或支持有限的多媒体格式。问题主要由ffmpeg的branding设置和proprietary_codecs变量控制。要解决这些问题,可以在build/common.gypi中设定branding为支持的类型(如Chrome),并启用proprietary_codecs变量(设为1),以确保ffmpeg能有效工作并支持更多多媒体格式。
摘要由CSDN通过智能技术生成

利用Chromium工程编译生成的程序播放网页audio或video时,可能会遇到如下两种情况:

1、编译生成的content_shell程序,无法播放网页音视频。

2、编译生成Chrome或chromium浏览器时,虽然网页音视频可以播放,但经常遇到某些格式无法打开,如mp4音视频或mpeg类型的音频文件。

问题1的原因:

多媒体文件播放所依赖的ffmpeg受编译时指定的branding变量控制。参见third_party\ffmpeg\ffmpeg.gyp:

'platform_config_root': 'chromium/config/<(ffmpeg_branding)/<(os_config)/<(ffmpeg_config)',

根据上述信息可知,ffmpeg的平台配置相关信息存在于third_party\ffmpeg\chromium\config目录下,可见

只有指定为Chrome、Chromium、ChromeOS、ChromiumOS这四种类型时,才会生效。

即为什么content_shell无法播放音视频。

【解决方法】

1、在build/common.gyp

要在 Chromium增加 JavaScript 方法,你需要进行以下步骤: 1. 下载 Chromium 源代码并进行编译。你可以从 https://www.chromium.org/developers/how-tos/get-the-code 下载 Chromium 源代码。 2. 打开 Chromium 源代码中的 "content" 目录,然后找到 "renderer" 子目录。 3. 在 "renderer" 目录中,你可以找到一个名为 "blink_platform_impl.cc" 的文件。该文件包含了 Chromium 的 JavaScript 引擎 Blink 的实现代码。 4. 在 "blink_platform_impl.cc" 文件中,你可以找到一个名为 "WebCore::ScriptController::registerExtensionMethods()" 的函数。该函数用于注册扩展的 JavaScript 方法。 5. 在该函数中,你可以添加你自己的 JavaScript 方法。例如,你可以添加以下代码: ``` static const char* const kMyExtensionMethods[] = { "function myMethod() { return 'Hello, world!'; }", nullptr }; void ScriptController::registerExtensionMethods() { // Register the extension methods for (const char* const* method = kMyExtensionMethods; *method; ++method) { v8::Isolate::GetCurrent()->RunMicrotasks(); ScriptState::scopeForMainWorld()->getScriptState()->context()->Global()->Eval( String(*method, strlen(*method)), v8::Undefined(Isolate::GetCurrent())); } } ``` 6. 保存 "blink_platform_impl.cc" 文件并重新编译 Chromium。 完成上述步骤后,你就可以在 Chromium 中使用你添加的 JavaScript 方法了。例如,在 JavaScript 代码中调用 myMethod() 方法将返回 "Hello, world!" 字符串。注意,对 Chromium 进行修改需要小心谨慎,不当的操作可能会导致浏览器出现故障或不稳定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值