我正在尝试修改如何使用 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}"
您需要考虑 ffmpeg 中的参数如何工作。
-i
适用于输入之前的参数,适用于输出之后的参数。-to
输入前缺少您的命令:因此视频流没有在正确的地方被剪切。
-to
适用于以下-i
输入文件。所以正确的脚本是