ffmpeg -to 具有多个输入

ffmpeg -to 具有多个输入

我正在尝试修改脚本如何使用 youtube-dl 命令下载部分视频

我想用 指定结束时间戳,-to而不是用 指定持续时间-t。但是它不起作用。

这是有问题的 ffmpeg 命令:

ffmpeg -ss 00:08:50 -i 'https://stream_url_video' -to 00:12:30 -ss 00:08:50 -i 'https://stream_url_audio' -to 00:12:30 -ss 5 -map 0:v -map 1:a -c:v copy -c:a copy 'output.mp4'

音频在正确的时间戳停止00:12:30,但视频继续播放,总时长为00:12:30

可以修复吗?

剧本:

#!/bin/bash
#Arguments: URL, Starting Timestamp -5 seconds, Ending Timestamp, video file name
set -x;
readarray -t urls <<< "$(yt-dlp -f bestvideo[ext=mp4][vcodec^=avc1]+140 --youtube-skip-dash-manifest -g "$1")"

ffmpeg -ss $2 -i "${urls[0]}" -to $3 -ss $2 -i "${urls[1]}" -to $3 -ss 5 -map 0:v -map 1:a -c:v copy -c:a copy "${4}"

答案1

您需要考虑 ffmpeg 中的参数如何工作。之前的参数-i适用于输入,之后的参数适用于输出。

您的命令-to在输入之前缺少:

ffmpeg -ss 00:08:50 -to 00:12:30 -i 'https://stream_url_video'

因此视频流没有在正确的位置被剪切。

答案2

-to适用于以下-i输入文件。

所以正确的脚本是

ffmpeg -ss $2 -to $3 -i "${urls[0]}" -ss $2 -to $3 -i "${urls[1]}" -ss 5 -map 0:v -map 1:a -c:v copy -c:a copy "${4}"

相关内容