您当前位置: 首页 »

chromium

分类目录归档: chromium

【MAC、iOS、Webrtc】由于证书问题导致webrtc编译隐形失败问题

由于最近在接手一些脏活累活,所以就被拉来解决一下ios下关于播放设备切换的问题,实际上当听到这个问题的现象是基本可以判断播放设备切换的时候没有重设播放参数引起的。

后面说为了给我个环境去调一下,iMac拿过来很开心的执行编译,谁知道编译隐形失败。。。之所以说隐形失败是gyt_webrtc和ninjia没有报错什么让人感觉在意的错。

捣腾了几天,七弄八弄的最后查到由于在执行gyp_webrtc后通过gyp生成的ninja中有几个主要工程配置没有生成。

当时由于感觉找到完整的问题了,今天过来就直接干脆手动执行后续的步骤把整个编译执行完成。起初发现有问题,因为i386的构架被打包到静态库了,然后网上找到删除掉i386方法,随之删掉i386手工合成最终的包,加入到xcode工程里面跑,结果连接失败,出现符号找不到。

继续查问题,最终还是留意到了gyp_webrtc的错误,错误如下:

iMac:build hyt$ ./ios.sh release
Updating projects from gyp files...
Traceback (most recent call last):
  File "../src/webrtc/build/gyp_webrtc", line 115, in <module>
    gyp_rc = gyp.main(args)
  File "/Users/hyt/webrtc/src/chromium/src/tools/gyp/pylib/gyp/__init__.py", line 538, in main
    return gyp_main(args)
  File "/Users/hyt/webrtc/src/chromium/src/tools/gyp/pylib/gyp/__init__.py", line 523, in gyp_main
    generator.GenerateOutput(flat_list, targets, data, params)
  File "/Users/hyt/webrtc/src/chromium/src/tools/gyp/pylib/gyp/generator/ninja.py", line 2469, in GenerateOutput
    pool.map(CallGenerateOutputForConfig, arglists)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/pool.py", line 251, in map
    return self.map_async(func, iterable, chunksize).get()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/pool.py", line 567, in get
    raise self._value
AssertionError: Multiple codesigning fingerprints for identity: iPhone Developer

网上查到主要是证书冲突问题。
解决步骤大致如下:

1,列出有效证书

security find-identity

2,寻找证书配置gyp文件

find . -name common.gypi | xargs grep CODE_SIGN_IDENTITY

会看到这么几行:

./chromium/src/build/common.gypi: ‘CODE_SIGN_IDENTITY[sdk=iphoneos*]’: ‘iPhone Developer’,
./chromium/src/build/common.gypi: ‘CODE_SIGN_IDENTITY[sdk=iphoneos*]’: ”,

3,用之前证书列表中Valid identities only的字段替换‘iPhone Developer’里面的内容

 

4,重新执行gyp_webrtc即可

2017-03-01 | | [linux总结], chromium, iOS, 移动开发, 音视频_图像相关

【MAC、iOS、Webrtc】由于证书问题导致webrtc编译隐形失败问题已关闭评论

【chromium、webrtc、gn】引入gn之后下载代码和生成vs工程的方法

按照惯例,还是一如既往的通过代理进行下代码,并生成工程。因为webrtc是chromium里面的一个组件,所以webrtc和chromium的下载和生成工程的方法大同小异。

具体步骤如下:

1. 首先把depot_tools装好。

2. 配置代理

netsh set winhttp proxy 127.0.0.1:10808
set http_proxy=http://127.0.0.1:10808
set https_proxy=https://127.0.0.1:10808

3. 按照官方的步骤,下载代码

mkdir webrtc-checkout
cd webrtc-checkout
fetch --nohooks webrtc
gclient sync

4*. 如果gclient sync过程出现异常,或建议最好执行本步骤

gclient runhooks

5. 通过gn生成vs2015的工程

cd src
gn gen --ide=vs2015 /out/Default

结束。

这个过程中比较头疼的问题就是需要一个稳定的代理

2016-11-14 | | chromium, 音视频_图像相关, 音视频容器, 音视频编解码

【chromium、webrtc、gn】引入gn之后下载代码和生成vs工程的方法已关闭评论

【webrtc & h264】不小心又掉大坑里了

最近在看webrtc的最新分支代码,和手里正在跑的代码做了简单的比较以后,顿时发现我已掉入深坑。。。。。

 

我们手里目前正在跑的webrtc代码是2014年最后一个稳定版本。且我们在这个代码上做了一定的修改和二次开发,同时移入了openh264(当时不知道谁决定的)。

现阶段,发现新版本的webrtc已经和手头的webrtc有着天然之别了,大致内容如下:

1,代码框架有所改变。尤其是设备管理,编解码器相关的代码布局

2,和h264编解码器相关的代码,有一个简单实现。即,直接调用ffmpeg中的编码器来实现。但同样支持openh264,只不过工作量会大一些。

3,使用了大量的c++11特性

4,对windows sdk的要求不同。

5,编译难度的增加。虽然gclient能够完成工程配置,但这也严重导致了工程要移动到另外一台电脑上将会是很难的一件事情(工程配置。。。。)。就算运行gclient runhooks,可能也会存在一些乱七八糟的问题。

 

接下来可能需要一点一点去看看openh264和x264到底有多大区别,并有区分的使用。

2016-04-08 | | chromium, 音视频_图像相关, 音视频编解码

【webrtc & h264】不小心又掉大坑里了已关闭评论

gclient下载chromium代码及代码构建(chromium 36版本,gclient使用http代理)

新版本的chromium代码下载方式远比以往的版本要麻烦了一些。

首先说一下chromium几个必备的条件,我的系统是win7 64就按照这个环境描述。

必须安装环境:

win8 sdk

directx sdk

vs 2010(至少)

 

由于vs 2010对C++11支持的问题,试了好几次实在受不了了果断装了vs 2013,所以我的新环境是:

vs 2013 update 3

win8 sdk

directx sdk(没有装,也不清楚vs 2013会不会帮我装,遇到编译问题再说)

 

准备好环境以后就是下代码,我觉得vpn太麻烦,所以下面用的http代理方式,下面是配置http代理:


set http_proxy=http://127.0.0.1:808

#配置winhttp代理,cscript 走代理
netsh winhttp set proxy 127.0.0.1:808 

git config --global http.proxy http://127.0.0.1:8080

#svn配置略,这个简单

 

配置好http代理以后,需要做的就是拿代码,如果是一个新建的chromium环境,由于没有代码和.gclient文件,所以不能直接用gclient sync,官方也没有说gclient config要怎么配。

所以按照官方的说明就只能通过fetch拿代码了:

<pre>#从代码库拿chromium
fetch --nohooks --no-history chromium --nosvn=True

#看看在拿代码的期间有没有什么代码产生变动
gclient sync --force --nohooks

 

拿完代码以后,让gclient生成vs 2013工程配置

<pre>set GYP_DEFINES=component=shared_library
set GYP_GENERATORS=msvs
set GYP_MSVS_VERSION=2013

gclient unhooks --force

 

这样就完成了整个chromium代码的下载和工程配置,接下来就是编译的事情了。

新版本的gclient和获取chromium方式带来了很多问题,通过google发现其实gclient的bug还很多,这需要各种斗智斗勇。。。。。。

 

2014-08-22 | | chromium

gclient下载chromium代码及代码构建(chromium 36版本,gclient使用http代理)已关闭评论

gclient 生成webrtc对应的vs 2010解决方案及工程

通过gclient拿下来的只有代码和一堆配置文件,需要让其生成工程文件。

由于已经安装vs 2010和win8 sdk了。不打算走vs 2013的路线,参考chromium官方文档后,需要在执行gclient runhooks之前执行以下环境变量的配置

set GYP_DEFINES=windows_sdk_path="C:\Program Files (x86)\Windows Kits\8.0"
set GYP_GENERATORS=msvs
set GYP_MSVS_VERSION=2010
set DEPOT_TOOLS_WIN_TOOLCHAIN=0

其中几个参数的说明:
GYP_DEFINES 指明win8 sdk的位置。
GYP_GENERATORS 指明是msvs环境
GYP_MSVS_VERSION 指明是2010 pro版本

DEPOT_TOOLS_WIN_TOOLCHAIN 让gclient不要自动去构造环境,利用本机现有环境即可。

由于代码中用到了c++11还有一些其他我还没搞清楚的特性,所以编译代码最好用vs 2010。vs 2008可能会存在大量的问题。

2014-08-14 | | chromium

gclient 生成webrtc对应的vs 2010解决方案及工程已关闭评论

gclient 走代理方式获取google开放源码 — gclient内git走http代理

继 《gclient 走代理方式获取google开放源码 — gclient说明》

我这边的环境比较奇怪,gclient总是会找google去下chromium对应的git包,它不使用环境里面的git,这样也好,在gclient的配置至少不会影响到大局。

1,进入cmd

2,cmd中配置让cmd走代理(我的http代理不需要认证,所以注释掉了其中两个命令)

set http_proxy=http://127.0.0.1:8080

#set http_proxy_user=<你的用户名>
#eset http_proxy_pass=<你的密码>

3,配置gclient的git走http代理,在之前的cmd中执行如下命令

#gclient git的位置
cd D:\work\depot_tools\git-1.9.0.chromium.5_bin\bin

#执行配置
git config --global http.proxy http://127.0.0.1:8080

这样gclient通过自身目录下的git拿代码时就走了http代理了。

2014-08-13 | | chromium

gclient 走代理方式获取google开放源码 — gclient内git走http代理已关闭评论

gclient 走代理方式获取google开放源码 — gclient自身更新走http代理

继 《gclient 走代理方式获取google开放源码 — gclient说明》

查了一下网上的说明,基本大同小异,但还是有些地方没有说清楚。现在这里总结一下我实验成功的用法。


netsh winhttp set proxy 127.0.0.1:808 "<local>" #配置winhttp代理
set http_proxy=http://127.0.0.1:808             #gclient 的 python脚本里的urllib2和其他几个对象默认使用http代理

 

2014-08-13 | | chromium

gclient 走代理方式获取google开放源码 — gclient自身更新走http代理已关闭评论

gclient 走代理方式获取google开放源码 — gclient说明

chromuim和webrtc均使用了gclient。

实际上直接使用svn或git将代码拿下来也是可以的,但只不过gclient做了一些工程配置相关的行为,不使用gclient去管理源码,后期对代码的编译、修改都多少会有点影响。

从chromium项目上拿下来的gclient是缺少几个必备的辅助工具:python runtime、svn、git。

我的win7下已经安装了git和svn,很奇怪的是gclient每次都会自动去下git和svn,也引起也不小的困扰。

先说说gclient拿代码的几个步骤:
1,检查gclient是否完整
*2,如果不完整就安装缺少的东西,或者更新gclient自身
3,拿代码(假设运行的是gclient sync)

对于第二步来说,gclient下python、svn、git等工具均是采用javascript。
对于第三部来说,gclient会根据.gclient配置去使用svn/git去下载代码。

由于众所周知的原因,gclient最容易受阻的地方显然是2和3。下面几篇文章将分别说明如何解决。

2014-08-13 | | chromium

gclient 走代理方式获取google开放源码 — gclient说明已关闭评论