美文网首页
常用命令

常用命令

作者: hjm1fb | 来源:发表于2024-07-10 15:52 被阅读0次

常用命令:

  • Mac
    录屏快捷键:
    Shift+Command+5

Mac显示隐藏文件夹
打开访达Finder,选择任意文件夹,按快捷键 cmd+shift+. 就会看到隐藏的文件夹和文件,再次按下该快捷键再次隐藏

terminal快捷键

Ctrl + A 将光标跳到行头
Ctrl + K 删除光标到本行末尾
Ctrl + E 将光标跳到行尾
Ctrl + U删除本行开头到光标
Alt + <— 左移一个单词

Sublime 格式化json:
安装Pretty Json后 快捷键 command + ctrl + j 可以格式化json文件

  • JNI调试
    一键分析JNI Crash log
    ndk-stack -sym /Users/xxx/StudioProjects/xxx/xxx/build/intermediates/cmake/release/obj/arm64-v8a -dump jniCrash.txt

addr2line
Users/xxx-x/Library/Android/sdk/ndk/21.1.6352462/toolchains/aarch64-linux-android-4.9/prebuilt/darwin-x86_64/bin/aarch64-linux-android-addr2line -f -e /Users/xxx-xxx/Documents/workspace/app/build/intermediates/merged_native_libs/googleplayDebug/mergeGoogleplayDebugNativeLibs/out/lib/arm64-v8a/libaxmce.so 0x136c74

/Users/xxx-xxx/Library/Android/sdk/ndk/21.1.6352462/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-addr2line -f -e /Users/xxx-xxx/Documents/workspace/v2/xxx-xxx-xxx/app/build/intermediates/merged_native_libs/googleplayDebug/mergeGoogleplayDebugNativeLibs/out/lib/armeabi-v7a/libaxmce.so 0x136c74

查看so文件中的所有函数
查看sections header数目以确定so是否被strip
aarch64-linux-android-readelf -S /Users/xxx/StudioProjects/xxx/rendersdk/build/intermediates/cmake/release/obj/arm64-v8a/libLurker.so

查看某个符号的内存地址(支持正则匹配)
aarch64-linux-android-nm -D /Users/xxx/StudioProjects/RenderSDKAndroid/rendersdk/build/intermediates/cmake/release/obj/arm64-v8a/libLurker.so | grep drawToScreen

arm-linux-androideabi-nm -D /Users/xxx/StudioProjects/RenderSDKAndroid/rendersdk/build/intermediates/cmake/release/obj/armeabi-v7a/libLurker.so | grep drawToScreen

用安卓原生API打印log:

#include <android/log.h>
__android_log_print(ANDROID_LOG_ERROR, "ThisIsTag", "ok = %d %d", ok, notOk);
__android_log_print(ANDROID_LOG_ERROR, "DecodeCallbackAndroid", "destroy");
__android_log_write(ANDROID_LOG_ERROR, "DecodeCallbackAndroid", "destroy2");

C++打印指针类名

UPLOGE(" %s _onDrawing cost = %" PRId64"", typeid(*this).name(), _onDrawingCost);
  • adb
    adb push C:\Users\UFOTO\Desktop\RenderDoc.zip sdcard
    adb pull sdcard\RenderDoc.zip C:\Users\UFOTO\Desktop

查看手机当前在前台运行的应用的包名
adb shell dumpsys window | grep mCurrentFocus

  • AS相关
    AS里正则搜索:
    前面不连着t或p或e且后面不连着e或i或y的art字符串:
    (?<!(t|p|e))art(?!(e|i|y))

SDK文件夹地址
/Users/xxx/Library/Android/sdk

  • 反编译
    jadx-gui
    反混淆
    java -jar /Users/xxx/Documents/开发相关/反编译/工具/simplify-1.3.0.jar /Users/xxx/Documents/开发相关/反编译/APK/Repeat\ Photo\ Window.apk -it '.*repeat.*' -et "com/android||.*K0123455.*" -v

其他常用Python3/Shell脚本

  • FFmpeg
    用FFmpeg提取关键帧
    ffmpeg -i /Users/xxx/Desktop/abc.mp4 -vf select='eq(pict_type\,I)',setpts='N/(25*TB)' /Users/hjm/Desktop/关键帧/abc/%09d.jpg

ffmpeg 将mov转mp4:
ffmpeg -i my-video.mov -vcodec h264 -acodec mp2 my-video.mp4

ffmpeg合并视频的命令(时长不变,扩大尺寸):
//三个视频竖着排列合成一个视频

//扩展是往右下扩展,所以最终的视频从上到下依次显示a b c 的视频
//最后的视频不需要定义别名[c], 不然会报错“Filter has an unconnected output”
ffmpeg -i a.mov -i b.mov -i c.mov -filter_complex "[0:v]pad=iw:ih*3[a];[a][1:v]overlay=0:h[b];[b][2:v]overlay=0:h*2" d.mp4

//两个视频横着排列合成一个视频

ffmpeg -i /Users/xxx/Downloads/注释发布版/v20_30614.mp4 -i /Users/xxx/Downloads/解注释版/vTest_30614.mp4 -filter_complex "[0:v]pad=iw*2:ih[a];[a][1:v]overlay=w:0" /Users/xxx/Downloads/对比/30614左V20右test.mp4

//三个视频横向排列合成一个视频

ffmpeg -i /Users/xxx/Desktop/Demo_RenderSDK/水波AE.mp4 -i /Users/xxx/Desktop/Demo_RenderSDK/水波Demo.mp4 -i /Users/xxx/Desktop/Demo_RenderSDK/F1003.MOV -filter_complex "[0:v]pad=iw*3:ih[a];[a][1:v]overlay=w:0[b];[b][2:v]overlay=w*2:0" /Users/xxx/Desktop/对比2/水波左AE_中Demo_右.mp4

合成对比视频的python脚本:

# -*- coding: utf-8 -*-
import os
import subprocess
tag = input("Tag:").strip()
command = 'ffmpeg -i /Users/atlasv-hongjunmin/Desktop/material/videos/{Tag}_V1.mp4 -i /Users/atlasv-hongjunmin/Desktop/material/videos/{Tag}_V2.mp4 -filter_complex "[0:v]pad=iw*2:ih[a];[a][1:v]overlay=w:0" /Users/atlasv-hongjunmin/Desktop/material/对比/{Tag}_左V1右V2.mp4'.format(Tag = tag)
subprocess.call(command, shell=True)

批量合成对比视频的python脚本:

# -*- coding: utf-8 -*-
import os
import subprocess

def combine_videos(folder_path, v1_suffix, v2_suffix):
    # 检查并创建"对比"子文件夹
    output_folder = os.path.join(folder_path, "对比")
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    for filename in os.listdir(folder_path):
        if filename.endswith(f"{v1_suffix}.mp4"):
            base_name = filename[:-len(f"{v1_suffix}.mp4")]
            v1_path = os.path.join(folder_path, filename)
            v2_path = os.path.join(folder_path, f"{base_name}{v2_suffix}.mp4")
            
            # 判断 _V2.mp4 是否存在
            if not os.path.exists(v2_path):
                print(f"警告: {v2_path} 不存在, 跳过此视频合成")
                continue
            
            output_path = os.path.join(output_folder, f"{base_name}_{v1_suffix}左{v2_suffix}右.mp4")

            command = f'ffmpeg -i {v1_path} -i {v2_path} -filter_complex "[0:v]pad=iw*2:ih[a];[a][1:v]overlay=w:0" {output_path}'
            subprocess.call(command, shell=True)
            print(f"已合成: {output_path}")

# 获取用户输入的文件夹路径、V1 和 V2 后缀
folder_path = input("请输入视频所在的文件夹路径: ").strip()
v1_suffix = input("请输入 V1 视频的后缀名(不含 .mp4): ").strip()
v2_suffix = input("请输入 V2 视频的后缀名(不含 .mp4): ").strip()

# 调用合成视频的函数
combine_videos(folder_path, v1_suffix, v2_suffix)

ffmpeg合并视频的命令(尺寸不变,时间轴上拼接):
Merge videos using FFmpeg concat
通过txt生成长视频:

// 命令行 cd 到视频列表的父级目录后,生成视频列表的txt。也可以再手动调整txt里文件的顺序,会按这个顺序拼接视频
// 注意文件名里如果有emoji或者空格或者标点符号,可能会在执行ffmpeg时报错,可以用Mac的批量重命名工具规范文件名后再执行此行命令(解决方法: 设置safe参数,即ffmpeg -f concat -safe 0 -i videos.txt -c copy 左老版本右引擎.mp4.ts)
// 注意视频的分辨率尽量统一
 for f in *.mp4; do echo "file '$f'" >> videos.txt; done
 // 或者视频间插入封面
 for f in *.mp4; do if [ "$f" != "Cover720.mp4" ]; then echo "file '$f'" >> videos.txt; echo "file 'Cover720.mp4'" >> videos.txt; fi; done

// 对于拼接是视频长度不一致的,concat的结果会中间多出很多静态帧。解决方案是先把MP4转成ts格式:
mkdir ts;for f in *.mp4; do ffmpeg -i "$f" -c:v copy ts/"$f".ts;done
// 然后cd到ts目录执行
for f in *.ts; do if [ "$f" != "Cover720.mp4.ts" ]; then echo "file '$f'" >> videos.txt; echo "file 'Cover720.mp4.ts'" >> videos.txt; fi; done

// 获取txt文件的权限
sudo chmod +x /Users/xxx/Desktop/xxx/xxx/videos.txt
// 在当前路径生成拼接的视频
ffmpeg -f concat -i videos.txt -c copy xxx.mp4或者.ts

如果不用txt文件,也可以直接在命令行配置视频的拼接顺序

ffmpeg -i "concat:input1.mp4|input2.mp4|input3.mp4|input4.mp4" -c copy output10.mp4
或者
ffmpeg -i "shotcut-20240711-200059.mp4" -i "shotcut-20240711-200153.mp4" -i "Cover720.mp4" -filter_complex "[0:v][1:v][2:v]concat=n=3:v=1[outv]" -map "[outv]" FootballCupFootball_OldCover2.mp4

ffmpeg查看视频的精确时长:

//结果里的duration=15.112000就是时长
ffprobe -show_format 路径

mov转MP4:

//转换后有色差,但设计师预览时看到的是mov的效果,所以给设计还是mov格式,只是放服务器的时候用MP4格式,因为测试那边是Windows电脑,可能无法打开mov文件。手机端用我的索尼手机导出demo视频,因为我的索尼性能比较好,导出的视频更清晰
ffmpeg -i ae.mov  -vcodec libx264 -pix_fmt yuv420p  ae.mp4 

将视频转换成其他尺寸

ffmpeg -i /Users/atlasv-hongjunmin/Desktop/RenderSDK/模版视频比对/LifeStyle/FootballCupFootball_Old2.mp4 -vf scale=720:1280 /Users/atlasv-hongjunmin/Desktop/RenderSDK/模版视频比对/LifeStyle/FootballCupFootball_Old3.mp4

批量将视频转换成其他尺寸

批量设置视频的分辨率:
for f in *.mp4; do ffmpeg -i $f -vf scale=720:1280 7201280_$f; done
  • AE快捷键

快速搜索特效的插件 FX Console Updated to V1.0.5 快捷键“Ctrl+空格”

相关文章

  • 其他

    Git常用命令mac常用命令Linux 常用命令汇总Linux 常用命令0Linux 常用命令1--ls命令

  • Docker

    目录 常用命令 常用命令

  • Linux CentOS基础知识和常用命令

    常用命令1 常用命令2 常用命令3 常用命令4 Linux 目录配置 1、根目录(/)根目录(/)所在分区应该越小...

  • Shell命令汇总

    1、一般常用命令 (1)Shell 常用命令总结 (2)Shell的18条常用命令整理 2、文件操作常用命令 (1...

  • Flutter - 常用命令

    Flutter 常用命令 Flutter 常用命令: Flutter 常用命令说明flutter列出所有的命令fl...

  • Linux常用命令

    Linux常用命令 查看系统信息常用命令 常用命令-关机或重启命令 命令前结构

  • Linux 常用命令汇总

    Linux 常用命令0Linux 常用命令1--ls命令 参考 Linux 常用命令汇总

  • 设置更改root密码、连接MySQL、MySQL常用命令

    设置更改root密码 连接MySQL 连接MySQL MySQL常用命令 MySQL常用命令MySQL常用命令 扩...

  • 1.Vagrant搭建统一开发环境 常用命令

    前言:从Vagrant常用命令开始... ⚠️Vagrant 版本 2.2.01.Box常用命令2.VM常用命令 ...

  • SQL常用命令书目录

    SQL常用命令之单表查询 SQL常用命令之多表查询 SQL常用命令之模糊查找 SQL常用命令之空值查询 SQL常用...

网友评论

      本文标题:常用命令

      本文链接:https://www.haomeiwen.com/subject/tplthjtx.html