我正在尝试修改脚本如何使用 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}"