第1个python脚本:过滤webrtc log

本文介绍了一种使用Python脚本快速过滤大型手机日志文件的方法,通过指定标签和值来筛选信息,将结果保存为文本文件。脚本易于理解且可修改,适用于处理大量日志数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

手机上抓的log太大,文本编辑器的Find只能过滤出tag,按value过滤比较麻烦, 于是写了个python脚本, 几十万行的log, 很快就按指定条件过滤出来。 而且脚本很容易理解和修改。
PS: 不太完善, 编码要处理, 只能读取utf-8文件。


#遍历log文件,按指定TAG查找,并过滤指定的value,将value存入到result.txt中。
#2013年11月4日
import os
import time
import json

FILE_NAME = 'logvv_gd11.txt'
KEY = 'lost'
TAG = 'onVideoStatus'
size = os.path.getsize(FILE_NAME) / 1024 / 1024 
if	10	 < size :
	print("File too large , it will be take more time for to done.  \n")	
def fetch():
	fp = open(FILE_NAME)
	fp_res = open("lost.txt","w")
	str1 = 'info'
	str2 = '}'
	count =0
	msg = 'All lost packages :'
	file_info = 'Work directory:'+os.getcwd()+' , File size:'+str(size)+'M\n'
	fp_res.write(file_info)
	total_lost = 0
	losttime = time.time()
	for line in fp:
		#过滤 
		if line.find(TAG) ==-1:
			continue
		if len(line) < 20:
			continue
		
		#匹配
		i1 = line.index(str1) +5
		i2 = line.index(str2) +1
		info = line[i1:i2]
		if len(info) < 1:
			continue
		
		json.dumps(info)
		decodejson	= json.loads( info)
		lost = decodejson['lost']
		if lost>0  :
			#输出
			print(info)
			#保存
			fp_res.write(line+'')
			count +=1
			total_lost+=lost
	msg = msg+str(count)
	print(msg)
	fp_res.write(msg)
	losttime = (time.time() - losttime)
	print('Losttime:',losttime)
	print('Total lost packages:',str(total_lost))
	fp_res.write(', Losttime:'+str(losttime))
	fp.close()
	fp_res.close()
		

fetch()

 

<think>嗯,用户想了解如何将WebRTC移植到特定平台或环境中使用,具体需要教程和开发指南。首先,我需要回忆WebRTC的基本结构,它主要用C++编写,所以跨平台移植通常涉及编译和适配不同系统的API。接下来,用户可能需要步骤化的指导,比如环境准备、代码获取、构建配置、平台适配、功能测试等。 根据提供的引用内容,用户提到的WebRTC_VAD项目使用了CMake,这可能意味着CMake是构建管理的关键工具。引用1提到安装和配置指南,可能需要指导用户如何配置构建系统。引用2和3涉及将WebRTC移植到Windows和Android的经验,这可能作为案例参考。 我需要分步骤说明,首先介绍通用移植流程,然后举例具体平台如Android和Windows,参考引用中的案例。要注意用户可能需要处理平台相关的依赖,比如Android的JNI接口或Windows的API调用。此外,编译工具链的选择也很重要,比如使用GN和Ninja,或者CMake。 另外,用户可能需要优化和调试的建议,比如日志模块和性能优化,这部分需要结合常见问题和解决方案。最后,生成相关问题,帮助用户深入探索,比如如何优化性能或处理特定依赖。 需要确保回答结构清晰,分步骤,结合引用中的示例,并自然插入引用标记。同时,避免使用Markdown,保持口语化但专业。</think>以下是将WebRTC移植到特定平台/环境的开发指南,包含关键步骤和技术要点: ### 一、WebRTC移植基础流程 1. **环境准备** - 安装必要工具链:GN(生成构建文件)、Ninja(编译工具)、Python脚本支持) - 配置平台SDK(如Android NDK、Windows SDK等) - 下载WebRTC源码(建议使用官方仓库同步): ```bash fetch --nohooks webrtc gclient sync ``` 2. **构建系统配置** - 通过GN生成平台专属构建文件: ```bash gn gen out/Android --args='target_os="android" target_cpu="arm64"' ``` - 支持跨平台参数包括: - `target_os`(android/win/linux等) - `rtc_use_h264`(编解码器开关) - `rtc_enable_protobuf`(协议支持) 3. **平台适配层开发** - 实现`rtc_base/platform_thread.h`中的线程接口 - 重写`rtc_base/physical_socket_server.cc`网络层 - 适配硬件加速接口(如Android的MediaCodec) ### 二、Android平台移植示例(引用[3]) 1. **JNI接口封装** ```java public class WebRTCBridge { static { System.loadLibrary("webrtc_jni"); } public native void createPeerConnection(); } ``` 2. **Gradle配置要点 ```gradle android { externalNativeBuild { cmake { path "src/main/cpp/CMakeLists.txt" } } } ``` ### 三、Windows平台移植要点(引用[2]) 1. COM组件适配 - 实现`webrtc::WinVideoCapture`模块 - DirectShow滤镜链集成 2. 音频子系统重写 ```cpp class WindowsAudioDevice : public webrtc::AudioDeviceModule { int32_t InitSpeaker() override { // 调用Windows Core Audio API } }; ``` ### 四、关键调试技术 1. 日志系统配置 ```cpp rtc::LogMessage::LogToDebug(rtc::LS_VERBOSE); ``` 2. 单元测试接入 ```bash ninja -C out/Release rtc_unittests ``` ### 五、优化建议 - 使用`RTC_DCHECK`进行运行时验证 - 开启LTO(链接时优化)减小二进制体积 - 定制化编译参数排除不需要的模块
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值