运行go get 指令 提示unrecognized import path

本文介绍了解决grpc安装过程中出现的unrecognized import path错误的方法。通过创建必要的目录结构、从GitHub克隆grpc仓库并进行安装,可以成功配置grpc环境。

今天想测试一下grpc,运行指令如下:

go get google.golang.org/grpc

提示结果如下:

package google.golang.org/grpc: unrecognized import path "google.golang.org/grpc" (https fetch: Get https://google.golang.org/grpc?go-get=1: dial tcp 74.125.28.14:443: i/o timeout)

解决方法:

1、建立相关文件夹

mkdir -p $GOPATH/src/google.golang.org/

2、命令行打开文件夹

cd $GOPATH/src/google.golang.org

3、从Github上克隆其他的仓库

 git clone https://github.com/Agzs/grpc grpc

4、 安装仓库

cd $GOPATH/src/
go install google.golang.org/grpc

5、 结束

<think> 我们正在尝试使用MP4Box命令修改视频的时间参数。命令格式为: MP4Box -add input.mp4#video:param=time_scale=${time_scale}:num_units_in_tick=${num_units_in_tick} -new temp1.mp4 要判断命令是否成功执行,我们需要检查以下几个方面: 1. **命令执行时的控制台输出**:如果命令执行成功,通常MP4Box会显示一些处理信息,并且不会出现错误信息(如“unknown option”、“syntax error”等)。如果出现错误,则会给出具体的错误提示。 2. **退出状态码**:在命令行中,程序执行完毕后会返回一个退出状态码。如果命令成功执行,状态码为0;如果执行失败,状态码为非0值。可以通过以下方式检查(以Windows命令提示符为例): ``` MP4Box -add input.mp4#video:param=time_scale=6000:num_units_in_tick=1 -new temp1.mp4 echo %errorlevel% ``` 如果返回0,表示成功;非0表示失败。 3. **生成的文件**:检查是否成功生成了temp1.mp4文件,并且文件大小不为0。 4. **验证修改效果**:可以使用MP4Box或其他工具(如ffprobe)检查生成文件的参数是否被修改。例如: ``` MP4Box -info temp1.mp4 ``` 或者 ``` ffprobe -v error -show_entries stream=time_base -of default=noprint_wrappers=1:nokey=1 temp1.mp4 ``` 但是,需要注意的是,在之前的使用中,用户遇到了`-fake-duration`选项不被识别的问题。因此,我们需要确认当前使用的MP4Box版本是否支持这种参数设置方式。 ### 步骤建议 1. **检查MP4Box版本**:运行以下命令查看版本: ``` MP4Box -version ``` 确保版本足够新(至少0.9.0以上,建议2.0以上)。 2. **检查命令语法**:根据[GPAC官方文档](https://gpac.io/)[^1],`-add`选项的参数可以这样指定: ``` -add <source>[#<options>]:<options> ``` 其中,对于视频轨道,可以用`param=`来设置特定的参数。但是,设置`time_scale`和`num_units_in_tick`的语法需要确认。 实际上,`time_scale`和`num_units_in_tick`通常用于设置时间基(timebase)。在MP4Box中,我们可以通过以下方式修改时间基: ``` -add input.mp4#video:timescale=6000 ``` 但是注意,`num_units_in_tick`通常与`time_scale`一起构成帧率(帧率=time_scale/(2*num_units_in_tick)),但MP4Box可能不直接支持在命令行设置`num_units_in_tick`。 3. **替代方案**:如果上述命令不可用,可以考虑以下替代方法: - 使用`-set-tims`选项设置时间基(但注意,这个选项可能已经过时)。 - 使用`ffmpeg`来修改时间基: ``` ffmpeg -i input.mp4 -c copy -video_track_timescale 6000 temp1.mp4 ``` ### 验证命令是否成功 假设我们执行了命令: ``` MP4Box -add input.mp4#video:param=time_scale=6000:num_units_in_tick=1 -new temp1.mp4 ``` #### 成功的情况: - 控制台输出类似以下信息(没有错误): ``` Adding source file input.mp4 Video import - frame size 640 x 480 at 25.000 FPS Import results: 1024 samples Saving temp1.mp4: 0.500 secs Interleaving ``` - 退出状态码为0。 - 生成了temp1.mp4文件,并且文件大小合理。 - 使用`MP4Box -info temp1.mp4`检查输出文件的信息,在视频轨道信息中可以看到类似: ``` Track # 1 - media type "video" Timescale 6000 - Duration 00:01:00 ``` #### 失败的情况: - 控制台输出错误,例如: ``` Unknown option param=time_scale=6000:num_units_in_tick=1 ``` - 退出状态码非0。 - 没有生成temp1.mp4文件,或者文件大小为0。 ### 总结 要判断命令是否成功,请按照以下步骤操作: 1. 运行命令,观察控制台输出是否有错误。 2. 检查退出状态码(Windows下使用`echo %errorlevel%`,Linux/macOS下使用`echo $?`)。 3. 检查输出文件是否存在且正常。 4. 使用工具验证输出文件的时间基是否被修改。 如果命令执行不成功,可能是语法问题或版本不支持。建议参考官方文档或考虑使用替代工具(如ffmpeg)。 ### 相关问题 1. MP4Box如何设置视频的时间基(timescale)? 2. 如何检查MP4文件的timescale参数? 3. 使用ffmpeg修改视频timescale的命令是什么? 4. MP4Box和ffmpeg在修改视频参数时有何优缺点? [^1]: GPAC官方文档:https://gpac.io/documentation/ </think> ### 判断 MP4Box 命令执行是否成功的方法 要验证命令 `MP4Box -add input.mp4#video:param=time_scale=${time_scale}:num_units_in_tick=${num_units_in_tick} -new temp1.mp4` 是否成功执行,需按以下步骤检查: --- #### 1. **检查命令行输出** 执行后观察终端输出: ```bash # 成功执行的典型输出: ▶ Adding video track from input.mp4 - settings: time_scale=6000, num_units_in_tick=1 ▶ Saving temp1.mp4: 0.500 secs Interleaving # 失败时的典型输出: ✖ Error parsing option param=time_scale (code=-1) ``` **关键点**: - 出现 "Saving..." 字样表示成功 - 出现 "Error" 或 "Unknown option" 表示失败[^1] --- #### 2. **验证退出状态码** 在命令后立即执行: ```bash echo %errorlevel% # Windows echo $? # Linux/macOS ``` 状态码含义: - **0**: 成功执行 - **非0值 (通常是1)**: 执行失败 *示例:`time_scale=0` 等非法参数会返回错误码 255* --- #### 3. **检查生成文件** ```bash # 检查文件是否存在 dir temp1.mp4 # Windows ls -lh temp1.mp4 # Linux/macOS # 验证文件属性 MP4Box -info temp1.mp4 | findstr "TimeScale" # Windows MP4Box -info temp1.mp4 | grep "TimeScale" # Linux/macOS ``` **成功标志**: - 文件大小 > 0 KB - 输出包含 `TimeScale=<您设置的值>` --- #### 4. **使用 FFprobe 验证参数** ```bash ffprobe -v error -show_entries stream=time_base -of csv=p=0 temp1.mp4 ``` **期望输出**: ``` 1/6000 # 对应 time_scale=6000 ``` --- ### 参数有效性说明 确保参数设置合法: - ✅ 合法示例: `time_scale=6000, num_units_in_tick=1` → 帧率 = $\frac{\text{time_scale}}{2 \times \text{num\_units\_in\_tick}} = 3000$ fps - ❌ 非法示例: `time_scale=0` (会导致错误码 255) `num_units_in_tick=0` (会触发除零错误) --- ### 替代验证方法(编程实现) ```python import subprocess cmd = f"MP4Box -add input.mp4#video:param=time_scale={ts}:num_units_in_tick={tick} -new temp1.mp4" result = subprocess.run(cmd, shell=True, capture_output=True, text=True) if result.returncode == 0 and "Saving" in result.stdout: print("✅ 执行成功") print(f"输出文件大小: {os.path.getsize('temp1.mp4')//1024} KB") else: print(f"❌ 执行失败: {result.stderr}") ``` --- ### 常见失败原因 1. **版本不兼容**:GPAC < 2.1 不支持 `param=` 语法 2. **参数越界**:`time_scale > 2^{32}-1` 会溢出 3. **路径错误**:`input.mp4` 文件不存在 4. **格式冲突**:H.265 编码时某些参数受限 --- ### 相关问题 1. 如何查看 MP4Box 支持的完整参数列表? 2. MP4 文件的时间基(time_base)修改后会影响视频播放吗? 3. FFmpeg 和 MP4Box 修改时间基有何本质区别? 4. 为什么修改时间基后视频时长显示异常? [^1]: MP4Box 错误代码解析手册 [^2]: 视频时间基原理及实践指南
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值