我想为FFMPEG做一个包装器,因为更改我的应用程序并不容易,也因为我只想在特定的命令中操作。
默认情况下,我希望转发所有命令,但总是将-loglevel warning更改为error
如果包装器接收到字符串"id=2015“或"id=2016”或"id=2017“的命令,则只希望将参数转发给ffmpeg。
我该怎么做?
示例:
ffmpeg -y -nostdin -hide_banner -loglevel warning -err_detect ignore_err -fflags +genpts -async 1 -probesize 5000000 -analyzeduration 5000000 -progress http://127.0.0.1:80/progress.php?stream_id=2015 -i http://link -vcodec copy -scodec copy -acodec copy -map 0 -copy_unknown -individual_header_trailer 0 -f segment -segment_format mpegts -segment_time 10 -segment_list_size 3 -segment_format_options mpegts_flags=+initial_discontinuity:mpegts_copyts=1 -segment_list_type m3u8 -segment_list_flags +live+delete -segment_list /var/html/www/2015_.m3u8 /var/html/www/2015_%d.ts这个命令包含id=2015,所以如果发生这种情况,我想用以下方法调用ffmpeg:
ffmpeg $mycommands如果原始命令包含id=2015|2014|etc,则不会传递原始命令中的任何内容。
发布于 2021-12-08 08:18:22
我不认为简单的替换是一个好主意,也许您的文件将warning作为其名称的一部分?
当-loglevel发现时,我宁愿循环参数并替换它:
ffmpeg(){
args=()
while (( $# )); do
args=("${args[@]}" "$1")
if [ "$1" = "-loglevel" ]; then
args=("${args[@]}" "error")
shift
fi
shift
done
/usr/bin/ffmpeg "${args[@]}"
}https://unix.stackexchange.com/questions/680613
复制相似问题