将 ffmpeg 应用于多个文件

2024-03-06

我写了一个简单的脚本:

#!/bin/bash
find . -name "*.m4a" | while read filename;
do
    new_filename=$(echo "$filename" | sed "s/^\(.*\)m4a$/\1flac/g");
    if [ ! -f "$new_filename" ]
    then
            #ffmpeg -i "$filename" -acodec flac "$new_filename" > /dev/null 2>&1;
            #wait $!;
            echo "$filename";
            echo "$new_filename";
    fi
done

它输出正确的结果:

./Equilibrium, ALAC [GER] viking.folk/2003 - Demo 2003, ALAC/04 - Met.m4a
./Equilibrium, ALAC [GER] viking.folk/2003 - Demo 2003, ALAC/04 - Met.flac
./Equilibrium, ALAC [GER] viking.folk/2003 - Demo 2003, ALAC/02 - Nach Dem Winter.m4a
./Equilibrium, ALAC [GER] viking.folk/2003 - Demo 2003, ALAC/02 - Nach Dem Winter.flac

如果取消注释 ffmpeg 并等待:

./Equilibrium, ALAC [GER] viking.folk/2003 - Demo 2003, ALAC/04 - Met.m4a
./Equilibrium, ALAC [GER] viking.folk/2003 - Demo 2003, ALAC/04 - Met.flac
uilibrium, ALAC [GER] viking.folk/2003 - Demo 2003, ALAC/02 - Nach Dem Winter.m4a
uilibrium, ALAC [GER] viking.folk/2003 - Demo 2003, ALAC/02 - Nach Dem Winter.flac

并且还没有完成任何flac!

PS

#!/bin/bash
find . -name "*.m4a" | while read filename;
do
    new_filename=$(echo "$filename" | sed "s/^\(.*\)m4a$/\1flac/g");
    if [ ! -f "$new_filename" ]
    then
            ffmpeg -i "$filename" -acodec flac "$new_filename";
            echo "$filename";
            echo "$new_filename";
    fi
    sleep 5;
done

1) 编码启动但突然停止且没有错误消息

2) 编码无法启动,因为“uilibrium”而不是“./Equilibrium”

3) = 1)

4) = 2)

...

最后)正确


突然找到解决办法:

#!/bin/bash
find . -name "*.m4a" | while read filename;
do
        new_filename=$(echo "$filename" | sed "s/^\(.*\)m4a$/\1flac/g");
        if [ ! -f "$new_filename" ]
        then
                ffmpeg -i "$filename" -acodec flac "$new_filename" &
                wait $!;
        fi
done

我不知道为什么,但如果在后台启动进程(&)然后等待它(等待$!),一切都会正常工作!

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

将 ffmpeg 应用于多个文件 的相关文章

  • 将 mysql 查询输出存储到 shell 变量中

    我需要一个变量来保存从数据库检索的结果 到目前为止 这基本上是我正在尝试但没有成功的事情 myvariable mysql database u user p password SELECT A B C FROM table a 正如你所看
  • Python bash 管道

    我想将 python 脚本的输出通过管道传输到 bash 脚本 到目前为止我所做的是尝试使用os popen sys subprocess 并试图给出一个管道的例子 os popen echo P 1 1 591336 4927369 1
  • Bash - 比较 2 个文件列表及其 md5 校验和

    我有 2 个列表 其中包含带有 md5sum 检查的文件 即使文件相同 列表也具有不同的路径 我想检查每个文件的 md5 和 我们正在讨论数千个文件 这就是为什么我需要脚本来仅显示差异 第一个列表是普通列表 第二个列表是文件的当前状态 我想
  • 比较linux中的两个未排序列表,列出第二个文件中的唯一项

    我有 2 个包含号码列表 电话号码 的文件 我正在寻找一种列出第二个文件中第一个文件中不存在的数字的方法 我尝试过各种方法 comm getting some weird sorting errors fgrep v x f second
  • 如何使用 bash 中提供的工具生成一系列非周末日期?

    我想生成一个文件列表 其中名称包含 filename date 例如file 20111101 file 20120703 开始November 1 2011直到今天 应该不包括周末 Thanks 2011年试试这个 for y in 20
  • C++ OpenCV 3.4 / FFMPEG 3.4.1 VideoWriter 和 MP4 输出文件格式

    我正在运行 Linux 内核 4 9 35 ti r44 的 ARM BeagleBone X 15 Debian 机器 在我的 C Qt 5 应用程序中 我想将 cv Mat 帧保存为 MP4 格式视频 我安装了 libx264 并从头开
  • Grep 递归和计数

    需要在具有大量子目录的目录中搜索文件内的字符串 我在用着 grep c r string here 我怎样才能找到总数量 如何仅输出至少具有一个实例的文件 使用 Bash 的进程替换 这给出了我认为是您想要的输出 如果不是 请澄清问题 gr
  • 在 bash 中,如何除以两个变量并输出四舍五入到小数点后 5 位的答案? [复制]

    这个问题在这里已经有答案了 我将两个变量作为输入 将它们相除后 我希望将输出四舍五入到小数点后 5 位 我已经尝试过这种方法 gt sum 12 n 7 output scale 5 sum n bc echo output 我的代码没有显
  • wget 并行下载文件并重命名

    我有一个包含两列的文本文件 第一列是要保存的名称 第二列是资源的 url 地址 10000899567110806314 jpg http lifestyle inquirer net files 2018 07 t0724cheekee
  • Ctrl-p 和 Ctrl-n 在 Docker 下表现异常

    For the life of me I can t seem to figure out why ctrl p and ctrl n don t work like they re supposed to under the Docker
  • Bash touch - 非法选项 -d

    昨天我拍了很多照片 但我忘记更改相机中的时区 现在所有图片的修改日期都有错误 我想将特定目录中所有文件的修改日期更改为minus 10 hours bin sh for i in Users slick Desktop 100D5200 d
  • BASH 中的空函数

    我正在使用 FPM 工具创建 deb 包 此工具在从支持的文件中删除包之前 之后创建 不幸的是FPM生成的bash脚本包含这样的函数 dummy 该脚本退出时出现错误 语法错误 意外 BASH 不允许空函数吗 哪个版本的 bash linu
  • 获取 Bash 中最后运行的程序的名称

    我有一个 bash 脚本 我使用 trap 命令捕获错误 并且我希望能够打印最后一个命令的名称 失败的命令 bin bash function error echo program name trap error ERR Some comm
  • 独特的 Linux 文件名,可按时间排序

    以前我用的是uuidgen http man7 org linux man pages man1 uuidgen 1 html创建唯一的文件名 然后我需要通过 bash 脚本按日期 时间迭代该文件名 从那时起 我发现简单地通过 ls l 循
  • 从预提交挂钩中排除某些文件类型

    我想要一个预提交 git 钩子来检查 如果可能的话 自动删除 尾随空格 In 让 git 在提交之前自动删除尾随空格 https stackoverflow com questions 591923 make git automatical
  • 打印本周星期一的日期(在 bash 中)

    我想获取本周星期一的 YYYYMMdd 格式的日期 例如 今天是 20110627 从明天到周日 我仍然想打印周一 今天 的日期 然后下周重复这个过程 monday date dmonday Y m d last monday date d
  • git log --oneline 提供在管道或重定向到文件时丢失的 HEAD 信息

    当我执行没有管道或文件重定向的 git log oneline 命令时 它会提供有关 HEAD 位置和分支的信息 下面示例中的 master git log oneline color never 8bc8511 HEAD gt day 2
  • Xcode 方案预操作脚本未运行

    点击构建 构建日志中不会打印任何内容 是什么赋予了 Xcode 版本 8 2 1 8C1002 预操作发生在构建之前 因此输出不会进入构建日志 而是进入 stdErr 您可以将输出复制到文件中 exec gt PROJECT DIR pre
  • swscaler 警告:使用了已弃用的像素格式

    我想先对视频帧执行颜色空间转换 然后使用以下代码将其转换为 opengl 纹理 struct SwsContext pSwsCtx sws getCachedContext NULL width height codec gt pix fm
  • Shell 执行:时间与 /usr/bin/time

    当 bash zsh 执行以下操作时会发生什么 usr bin time l sleep 1 1 00 real 0 00 user 0 00 sys 516096 maximum resident set size 0 average s

随机推荐

  • django.test.TestCase 与 unittest 与 django.utils.unittest.TestCase 之间的区别

    我仍在使用 Django 1 2 1 我认为使用较新的 Django 我们不会import unittest然后做unittest TestCase 插图 import unittest class TestThis unittest Te
  • 如何将 JSON 字符串转换为具有不同结构的 JSON 字符串

    我正在构建一个应用程序 其中数据以 JSON 字符串的形式从第三方系统检索 我需要将此 JSON 字符串转换为另一个具有不同结构的 JSON 字符串 以便它可以与内部 Javascript 库中定义的预先存在的函数一起使用 理想情况下 我希
  • ReactJS 中没有“Access-Control-Allow-Origin”

    我想知道如何在reactJS或react native环境中的axios post方法中设置Access Control Allow Origin 我使用 CORS 附加组件 它可以工作 但我也想在标头中设置它 我尝试了这些方法 但没有一个
  • 使用 Yeoman 生成器重复提示

    我正在创建一个 Yeoman Generator 来自动创建一些数据库表 我需要向用户提示添加多个列 下面的 ColumnName 和 DataType 的组合 我的磁盘中保存了一个模板 我在其中绑定用户输入的动态名称 并根据该模板 由 Y
  • OpenGL ES纹理问题,4个重复的列和水平线(Android)

    我有一个 RGB 或 RGBA 纹理图像缓冲区 我想使用以下代码将其显示在我的 Android 设备上 我使用 NDK 中的 OpenGL glTexImage2D GL TEXTURE 2D 0 GL RGBA 256 256 0 GL
  • C# MVVM 服务层位于何处?

    我正在尝试开发一个小程序 它将与串行端口上的设备进行通信 该程序将负责格式化用户输入的数据并读取和呈现设备接收到的值 我对 WPF 和 MVVM 还很陌生 并且已经对整个数据绑定 XAML 混乱有了基本的了解 我认为 目前我的理解是这样的
  • 如何将 git 补丁从一个存储库应用到另一个存储库?

    我有两个存储库 一个是库的主存储库 另一个是使用该库的项目 如果我对从属项目中进行修复 我想要一种简单的方法来将该补丁应用回上游 该文件在每个存储库中的位置都不同 主要仓库 www playdar org static playdar js
  • 如何在包装 Firebug(或类似)控制台 api 时访问行号

    我封装了控制台 API 以提供精细的日志记录级别以及一些其他糖功能 这工作正常 唯一的问题是 firebug 或任何其他控制台 将始终将日志来自的行号报告为调用控制台 API 本身的行 您建议我如何让控制台记录我调用包装函数的行号 我更喜欢
  • 修改函数中的对象时出现意外结果

    当我修改函数中的对象时 我得到了一个奇怪的结果 有趣的是 当我在浏览器控制台中执行相同的操作时 我得到了我所期望的结果 但在反应中它似乎不起作用这是代码 const makeChanges i gt i foo test i new i a
  • 为 UIView 子类加载 Nib 的正确方法

    我知道这个问题以前曾被问过 但答案是矛盾的 我很困惑 所以请不要攻击我 我想要一个可重复使用的UIView整个我的应用程序的子类 我想使用 nib 文件来描述界面 现在假设它是一个加载指示器视图 其中有一个活动指示器 我希望在某些事件中实例
  • GCD和回调-并发问题

    我注册了一个回调处理程序 用于侦听 iOS 地址簿中的更改 由于某些奇怪的原因 已提交错误 当应用程序从后台返回时 有时会多次调用此回调 我希望我的回调处理程序只运行一次逻辑 即使回调被多次调用 这就是我注册回调的方式 ABAddressB
  • 在经典 ASP 中使用 ODBC 连接器时,MySQL“max_execution_time”默认为 30000ms,并且无法更改

    这个问题已经困扰我几个月了 而且我还没有找到解决方案 默认max execution time在经典 ASP 应用程序中使用 MySQL ODBC 连接器 8 0 时 设置为 30000 毫秒 30 秒 但我不知道如何增加它 我有一个大表
  • 如何获取 Twitter 当前用户的性别

    我已经查看了 Twitter 文档 anywhere 我可以在其中使用用户对象属性 但在用户数据中我找不到性别属性 当您创建 Twitter 帐户时 它从不询问性别 因此您无法通过 API 获取性别 你需要某种人工智能来确定它
  • 将 Fig.legend 与 matplotlib 中的子图结合起来

    免责声明 我知道在这个简单的示例中使用子图是无关紧要的 后者仅用于显示我的问题 我希望能够使用fig legend with fig subfigures1 我目前正在探索新的子图 https matplotlib org stable g
  • Android如何通过复选框识别列表视图中的项目

    我真的被困在这里了 我想要的并不简单 对我来说 但是我已经编写 Android 一年了 我想要的是一个列表视图 每行都有一个图像视图 一个文本视图 一个复选框和另一个文本视图 让我们首先在布局中添加一个文本视图和一个复选框 基于this h
  • 如何包含 Angular 5 的 ag-grid 样式?

    我正在使用 Angular 5 和 ag grid 17 x 我只是尝试做一个简单的 hello world 类型的示例 但无法正确显示网格 我的模板中有以下 HTML div style width 100 height 500px cl
  • WebClient().DownloadString() 返回旧数据[重复]

    这个问题在这里已经有答案了 我正在使用此代码从 URL 获取返回字符串 webClient Encoding Encoding UTF8 response webClient DownloadString http somesite com
  • 如何删除 Grails 生成的 Content-Type 标头中的 charset=utf-8

    我正在尝试将 json 数据作为 grails 中的响应正文发送 我尝试使用以下方法将 Content Type 标头设置为 application json render status httpServletResponse text r
  • 如何在两个设备(android,iphone)之间传输“数据”?

    如何在两个设备之间传输数据 我想在不同平台 android iphone 之间传输数据 主要是图像文件 是否可以使用 p2p 或者我应该使用客户端服务器 任何帮助将不胜感激 你看过吗高通的 AllJoyn 库 https developer
  • 将 ffmpeg 应用于多个文件

    我写了一个简单的脚本 bin bash find name m4a while read filename do new filename echo filename sed s m4a 1flac g if f new filename