react-native - FFmpeg 不适用于名称中包含空格的媒体文件路径
问题描述
我正在使用 react-native-ffmpeg 和 react native 进行基本的视频编辑,但是如果媒体文件 uri 包含空格然后 ffmpeg 任务失败并显示错误消息“没有这样的文件或目录”,我将面临这个问题。
我试过了:
RNFmeg.executeWithArguments 但应用程序崩溃而没有任何错误消息。这是我的命令数组。
RNFFmpeg.executeWithArguments(["-i", videoPath, "-i", songPath, "-c:v", "copy", "-c:a", "aac", "-map", "0:v :0"、"-map"、"1:a:0"、"-t"、持续时间、
${path}${timeStamp}.mp4
])我不想使用的另一种解决方案是将我从设备本地存储中选择的媒体文件复制到具有新名称的缓存目录,以消除空格。
解决方案
工作解决方案
参数显然需要是字符串以保证它们正常工作。正如 Kamran Ashiq 发现的那样,-t
参数 ( duration
) 必须转换为字符串
替代建议(这个框架不应该是这种情况,但有用的一般解决方案)
最有可能发生的是 ffmpeg 将空格视为更多参数(例如多个文件)的分隔符。
您应该能够引用或转义路径,因此 ffmpeg 将其视为一个参数而不是多个参数。
例如,在命令行上调用它时,要么这样做:
$ ffmpeg -some -parameters "foo bar.mp4"
# or
$ ffmpeg -some -parameters foo\ bar.mp4
在您的代码中类似,您可能应该这样做:
RNFFmpeg.executeWithArguments(["-i", videoPath, "-i", songPath, "-c:v", "copy", "-c:a", "aac", "-map", "0:v:0", "-map", "1:a:0", "-t", duration, `"${path}${timeStamp}.mp4"`])
推荐阅读
- javascript - 使用 Vanilla Javascript 显示大图的代码
- c# - 带有 Blazor InputFile 组件的“无法读取属性 '_blazorFilesById' 的空错误”
- java - 并行调用列表
异步网络服务客户端 - python - 您可以在类定义中使类属性成为该类的特定实例吗?
- python - 如何防止错误处理程序多次激活?
- arrays - 我是否正确嵌套数组?
- azure - 搬迁到波兰后用波兰信用卡支付美国创建的 Azure 帐户
- javascript - GET strips 查询参数的表单提交
- python - 生成长度为 n 的唯一字符串,无需预填充字典
- reactjs - 如何在本机反应中设置默认选中的单选按钮?