【问题标题】:ffmpeg - bash script fadeout audio fileffmpeg - bash 脚本淡出音频文件
【发布时间】:2018-03-08 23:08:28
【问题描述】:

我正在尝试编写一个 bash 脚本来获取音频文件的持续时间,然后应用 5 秒淡出。

#!/bin/bash

f="$*" # all args
p="${f##*/}" # file
fn="${p%.*}" # name only
e="${p##*.}" # extension

echo
echo $f
echo $p
echo $fn
echo $e
echo


_t=$(ffmpeg -i "$f" 2>&1 | grep "Duration" | grep -o " [0-9:.]*, " )


ffmpeg -i "$f" -af "afade=t=out:st=$_t:d=500" "$fn $sec sec fade-out.$e" 

我收到一个无效参数错误。

【问题讨论】:

  • 在脚本顶部添加set -x 并尝试使用您获得的其他信息进行调试
  • $sec 未定义。
  • ffmpeg 的控制台输出仅供人眼使用。不能保证足够一致以进行机器解析。 Get the duration directly from ffprobe,然后就可以避免使用grep这两个进程了。

标签: bash audio ffmpeg


【解决方案1】:

感谢所有帮助 - 这是我的解决方案。很确定还有更优雅的方法,但我是初学者。

#!/bin/bash
f="$*" # all args
p="${f##*/}" # file
fn="${p%.*}_fade" # name only
e="${p##*.}" # extension
sec="5"

dur=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$f")
t=$(echo "$dur - $sec" | bc)

ffmpeg -i "$f" -af "afade=t=out:st=$t:d=5" "$fn $sec sec.$e"

【讨论】:

    猜你喜欢
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 2017-09-27
    • 2017-12-23
    • 1970-01-01
    相关资源
    最近更新 更多