VLC bash 转码脚本输出到文件

VLC bash 转码脚本输出到文件


我正在运行这样的脚本来转码我的音频文件:

#!/bin/bash
acodec="vorb"  
arate="256" 
ext="ogg" 
vlc="/usr/bin/vlc" 
fmt="mp3" 

for a in *$fmt; do 
$vlc -I dummy -vvv "$a" --sout "#transcode{acodec=$acodec,ab=$arate,channels=2}:duplicate{dst=std{access=file,mux=ogg,dst=\"$a.$ext\"}" vlc://quit 
done

并尝试将该脚本输出重定向到如下文件:

./transcode.sh > /media/sf_Downloads/transcode.log

但只接收 0 字节文件。为什么?

答案1

VLC 正在写入stderr而不是stdout。您可以通过调用如下脚本在日志重定向中修复此问题:

./transcode.sh > /media/sf_Downloads/transcode.log 2>&1

或者以 Bash 特定的方式:

./transcode.sh &> /media/sf_Downloads/transcode.log

stdout您还可以通过2>&1在循环内的行末尾添加 VLC 命令来在脚本内进行重定向。然后,您可以像之前尝试的那样调用该脚本:

./transcode.sh > /media/sf_Downloads/transcode.log

并直接获取预期的记录结果。

欲了解更多信息,请参见

相关内容