使用 ffmpeg 循环更改 bash 变量

2024-01-23

我编写了一个脚本,用于根据我在时间戳上录制的视频快速创建简短的预览剪辑,我发现这些视频值得稍后查看以进行剪辑。 我的带有时间戳的文件是这样写的

FILE_NAME1#MM:SS MM:SS
FILE_NAME2#MM:SS MM:SS MM:SS MM:SS

example:

MAH01728#02:47 03:34 03:44 05:00 06:08 06:55

该脚本如下所示:

#!/bin/bash
while read f
 do

 file=$(echo $f | cut -d"#" -f1)
 filename=${file}".MP4"
 timestamps=$(echo $f | cut -d"#" -f2)

for time in $timestamps 
 do 
  ffmpeg -ss 00:${time}.0 -i "orig/${filename}" -c copy -t 10 "preview/${file}_${time}.MP4"
 done
done < $1

该脚本获得了我想要的一半预览,而另一方面文件名混乱,并且 ffmpeg 抱怨找不到该文件:

orig/714.MP4: No such file or directory
orig/00:58 01:25.MP4: No such file or directory

因此,我修改了脚本以进行故障排除,并在 ffmpeg 命令前面添加了一个 echo - 现在所有文件名都是正确的。我缺少什么?

ffmpeg -ss 00:01:47.0 -i orig/MAH01714.MP4 -c copy -t 10 preview/MAH01714_01:47.MP4
ffmpeg -ss 00:02:00.0 -i orig/MAH01713.MP4 -c copy -t 10 preview/MAH01713_02:00.MP4
ffmpeg -ss 00:00:58.0 -i orig/MAH01712.MP4 -c copy -t 10 preview/MAH01712_00:58.MP4
ffmpeg -ss 00:01:25.0 -i orig/MAH01712.MP4 -c copy -t 10 preview/MAH01712_01:25.MP4

ffmpeg从标准输入读取,使用来自的数据$1这是为了read命令位于循环的顶部。将其标准输入重定向自/dev/null:

while IFS="#" read file timestamps; do
  filename="$file.MP4"
  for time in $timestamps; do
    ffmpeg -ss 00:${time}.0 -i "orig/${filename}" \
           -c copy -t 10 "preview/${file}_${time}.MP4" < /dev/null
  done
done < "$1"

echo does not从标准输入读取,这就是为什么您的修改使它看起来工作正常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ffmpeg 循环更改 bash 变量 的相关文章

  • 在 Bash Linux 中,如果给定进程运行时间超过指定时间,如何获取通知?

    我一切顺利 我的程序在大约 N 秒内完成 maybe deadlock 但有时会随机发生死锁 导致程序永远挂起 为了调试这个 我想按照以下方式运行该程序 如何调试罕见的死锁 https stackoverflow com questions
  • 获取最新远程提交的 SHA1 [重复]

    这个问题在这里已经有答案了 可能的重复 git bash 如何检查是否有新的提交可用 https stackoverflow com questions 6006759 git bash how to check if theres a n
  • 为 Windows Phone 8 构建 ffmpeg

    我如何为 Windows Phone 8 arm 构建 ffmpeg 我找不到任何有关它的信息 我可以在 Windows Phone 8 中从 C 调用 h 264 硬件编码器 解码器吗 看来媒体基金会太有限了 谢谢 据我所知 由于缺少工具
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 比较两个文件的单列

    我有两个文件 每个文件都有两列 并用空格分隔 我想找到两个文件中第 2 列不相同的行 并将它们输出到第三个文件 file A 1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 2 BBBBBBBBBBBBBBBBBBBBBB
  • 以不敏感的方式在 bash 中查找路径

    假设一条路径像 home albfan Projects InSaNEWEBproJECT 尽管事实上不使用这样的名称 有没有办法以不敏感的方式检查路径 我遇到了这个解决方案 但如果可能的话 我想找到一个内置或 gnu 程序 functio
  • 在 Mac 操作系统上使用 ffmpeg 录制视频

    我想在 mac OS 上使用 ffmpeg 以任何格式录制实时网络摄像头视频 我尝试了很多 但无法找到用于重新编码视频的命令 所以请任何人都可以告诉我 ffmpeg 命令用于使用 Mac 操作系统的网络摄像头捕获视频 提前致谢 对于 Mac
  • 通过数据框与函数进行交互

    如果我有这样的日期框架 氮 EG 00 04 NEG 04 08 NEG 08 12 NEG 12 16 NEG 16 20 NEG 20 24 datum von 2017 10 12 21 69 15 36 0 87 1 42 0 76
  • Javascript 循环内的事件处理程序 - 需要闭包吗?

    我正在使用一些我从别人那里接管的 html 和 Javascript 代码 该页面每十秒重新加载一个数据表 通过异步请求 然后使用一些 DOM 代码重新构建该表 有问题的代码看起来像这样 var blah xmlres getElement
  • UNIX 统计时间格式

    是否可以格式化 stat 的时间输出 我在用 stat c n A z filename 在 bash 脚本中 但它的时间格式不是我想要的 是否可以在命令中更改此格式 或者我必须稍后手动执行此操作 示例输出如下 lib drwxr xr x
  • flex 3 迭代对象值

    我有一个代表数据库表的对象 我想迭代这个对象并打印每个值 我可以用什么来做到这一点 我想在我的mxml而不是actionscript中执行此操作 对于每个对象属性我想创建一个输入字段 查找有关 Flex 3 循环的文档 如果你这样做 你会发
  • 静默检查 bash 脚本中是否存在 rpm

    我正在尝试使用 if 语句快速检查 rpm 是否安装在 bash 脚本中 但我想默默地做 目前 当我运行脚本并且 rpm 确实存在时 它将 rpm 的输出输出到我不想要的屏幕 if rpm qa grep glib then do some
  • 如何使用bash脚本获取分区的偏移量?

    我可以用parted找出我的图像的偏移量 sudo parted s image img unit B print Model file Disk home user image img 107374182400B Sector size
  • While 在范围内循环用户输入

    我有一些代码 我想要求用户输入 1 100 之间的数字 如果他们在这些数字之间输入一个数字 它将打印 Size input 并打破循环 但是 如果他们在外部输入一个数字1 100 它将打印 大小 输入 并继续向他们重新询问一个数字 但我遇到
  • 如何安装 grunt-cli 而不出现错误?

    灵感来自 Chris Coyierpost http 24ways org 2013 grunt is not weird and hard 我决定尝试一下 grunt 但我在设置时遇到了很大的问题 首先 我安装了 Node js 然后我将
  • 通过链接导航多个对象而不重复

    我正在尝试浏览一堆带有其他对象链接的对象 我想从 id 1 开始并浏览每个对象 有些对象会循环回到之前的对象 所以我想确保每个对象只查看一次 否则我会陷入无限循环 我还希望能够通过链接导航来判断哪些对象无法访问 我认为导航顺序并不重要 这是
  • 并行运行 shell 脚本

    我有一个 shell 脚本 打乱大型文本文件 600 万行和 6 列 根据第一列对文件进行排序 输出 1000 个文件 所以伪代码看起来像这样 file1 sh bin bash for i in seq 1 1000 do Generat
  • 如何检查主机是否在您的known_host ssh中

    我的脚本中使用以下命令 将主机添加到 ssh 中的已知主机 VAR2 expect c spawn ssh o StrictHostKeyChecking no REMOTE HOST USER REMOTE HOST IP expect
  • 正则表达式匹配bash变量

    我正在尝试修改 bash 脚本 当前脚本包含 print div class 1 div Where 1可能看起来像 Apprentice Historian Level 1 Historian Level 4 Master Histori
  • 测试 bash shell 脚本[重复]

    这个问题在这里已经有答案了 有人可以解释一下如何测试 bash shell 脚本吗 例如 我有一个 sh 文件 其中包含此代码 bin sh for file in txt do mv file basename file txt doc

随机推荐

  • CKeditor 添加类到 img 标签

    我正在尝试向 CKeditor 中任何插入的 img 标签添加一个类 我尝试了各种方法 但似乎无法弄清楚这个插件的设置是如何工作的 虽然文档很多 但只提到需要添加代码 但没有提到应该添加到哪里 文件很多 我尝试将其添加到 config js
  • google.script.host.close 关闭对话框不起作用

    我正在尝试关闭用以下命令打开的无模式对话框 var html HtmlService createHtmlOutputFromFile dialog setSandboxMode HtmlService SandboxMode IFRAME
  • Symfony 4 Doctrine 无法从控制台运行 [2002] 没有这样的文件或目录

    我正在使用 symfony 4 运行学说控制台命令时会发生此错误 In AbstractMySQLDriver php line 108 An exception occurred in driver SQLSTATE HY000 2002
  • 添加自定义目录(源和规范)以在 Rails 3 项目中进行自动测试

    我有一个 Rails 3 应用程序 它使用 RSpec2 作为我的测试框架 并且我能够使用自动测试来观察我的模型和规范目录的更改 并在文件更改时重新运行我的规范套件 我想添加一个目录 其中包含一些自定义类 RAILS ROOT lib so
  • For循环和if语句

    我正在使用以下 for 循环 for int intPrjName 0 intPrjName lt arrPrjName count intPrjName 我在 for 循环下有一个 if else 语句 其中else块显示警报消息 假设数
  • onNavigationItemSelected 在 NavigationView 中不起作用

    请有人帮助我处理导航抽屉中的片段 由于某种原因我无法让它们工作并且所有代码看起来都是正确的 Here https github com Matt Hutchings The Midlands Meander是源代码的链接 使用此代码 nav
  • 使用 angularjs/ui-bootstrap 制作手风琴并使用 ng-model

    我使用 angularJs 和 bootstrap 我制作了一个手风琴 其中我放置了一个选择来选择过滤器的值和不起作用的 data ng model 如果他不在手风琴中 则选择可以工作 这是我的代码
  • 在没有指针的函数中使用函数原型

    我的导师提到在其他函数中使用函数作为参数 我不是说使用指针 这可能吗 我在下面显示 我不明白他做了什么 谁能用例子解释一下吗 谢谢大家的赞赏回答 使用风格是 int test double abc double bla bla 函数是 do
  • C# 中的猴子修补

    是否可以在运行时扩展或修改 C 类的代码 我的问题具体围绕 Monkey Patching Duck Punching 或元对象编程 MOP 就像 Groovy Ruby 等脚本语言中发生的那样 对于那些今天仍然在这个问题上绊倒的人来说 确
  • SVN 显示日志不起作用

    如何在不设置 r 向所有人 所有内容读取 的情况下使用显示日志功能 我的 authz 文件中有几个组 它看起来像这样 groups Profs dave bruno franck Team1 1036091 1036103 1036087
  • 从 BeautifulSoup 结果中获取表单“action”

    我正在为一个网站编写一个 Python 解析器来自动完成一些工作 但我不太喜欢 Py 的 re 模块 正则表达式 并且无法使其工作 req urllib2 Request tl2 req add unredirected header Us
  • 什么时候抛出异常?

    异常是美妙的事情 但有时我担心我抛出太多异常 考虑这个例子 类用户 public function User user Query database for user data if user throw new ExistenceExce
  • C++ 中的异步线程安全日志记录(无互斥体)

    我实际上正在寻找一种在我的 C 中进行异步和线程安全日志记录的方法 我已经探索过 log4cpp log4cxx Boost log 或 rlog 等线程安全日志记录解决方案 但似乎它们都使用互斥锁 据我所知 互斥体是一种同步解决方案 这意
  • 如何在android中将位图转换为PDF格式[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我在 thepic 变量中有位图 它是位图类型 imageUri Uri intent getParcelableExtra Intent
  • C++11 类型推断期间控制优先级的规则是什么?

    管理 float double 类型的 C 11 类型推断的优先级规则是什么 例如 当从包含多种类型的表达式进行推断时 如下所示 auto var float 1 double 1 结果将是double 这就是所谓的floating poi
  • 如何在 Matplotlib 中反转轴并设置极坐标图的零位置?

    使用 Matplotlib 极坐标图时 theta 轴默认零位置为 或 右侧 角度逆时针增大 如下所示这个例子 https matplotlib org examples pylab examples polar demo html 如何指
  • C++0x 闭包的未定义行为:II

    我发现 C 0x 闭包的使用令人困惑 我的初始report https stackoverflow com questions 5543169 how to make a vector of functors lambdas or clos
  • Git合并后挂钩,如何获取合并分支的名称

    我正在尝试创建合并后挂钩脚本 该脚本仅在从特定分支合并时运行 如何确定特定提交的分支更改的名称 e g if from specific branch 1 then git diff name status HEAD 1 HEAD some
  • R 包的设置数据:vegan

    我使用素食主义者从动物计数数据中确定生物多样性指标 目的是查看计数年份之间是否存在差异 即物种数量是否根据年份而减少或增加 数据以矩阵格式设置 如下所示 年是一个字符 其他都是数字 因此 R 应该省略 NA 我设置了如上所示的数据 但大多数
  • 使用 ffmpeg 循环更改 bash 变量

    我编写了一个脚本 用于根据我在时间戳上录制的视频快速创建简短的预览剪辑 我发现这些视频值得稍后查看以进行剪辑 我的带有时间戳的文件是这样写的 FILE NAME1 MM SS MM SS FILE NAME2 MM SS MM SS MM