我正在尝试在youtube上下载完整的播放列表,下载时我想在视频标题前面下载时输入序列号,
例如,如果播放列表包含视频:
void XYZtoRGB(cv::Mat& input, cv::Mat& output){
float data[3][3] = {{3.240479, -1.53715, -0.498535}, {-0.969256, 1.875992, 0.041556}, {0.055648, -0.204043, 1.057311}};
Mat T = Mat(3, 3, CV_32FC1, &data);
Mat R = Mat::zeros(input.size(), CV_32FC1);
Mat G = Mat::zeros(input.size(), CV_32FC1);
Mat B = Mat::zeros(input.size(), CV_32FC1);
for(int x = 0;x < input.rows;x++){
for(int y = 0;y < input.cols;y++){
R.at<float>(x,y) = T.at<float>(0,0)*input.at<Vec3f>(x,y)[0] + T.at<float>(1,0)*input.at<Vec3f>(x,y)[1] + T.at<float>(2,0)*input.at<Vec3f>(x,y)[2];
G.at<float>(x,y) = T.at<float>(0,1)*input.at<Vec3f>(x,y)[0] + T.at<float>(1,1)*input.at<Vec3f>(x,y)[1] + T.at<float>(2,1)*input.at<Vec3f>(x,y)[2];
B.at<float>(x,y) = T.at<float>(0,2)*input.at<Vec3f>(x,y)[0] + T.at<float>(1,2)*input.at<Vec3f>(x,y)[1] + T.at<float>(2,2)*input.at<Vec3f>(x,y)[2];
}
}
//Desaturate and rescale to constrain resulting RGB values to [0,1]
double RminVal, GminVal, BminVal;
double RmaxVal, GmaxVal, BmaxVal;
Point minLoc;
Point maxLoc;
minMaxLoc( R, &RminVal, &RmaxVal, &minLoc, &maxLoc );
minMaxLoc( G, &GminVal, &GmaxVal, &minLoc, &maxLoc );
minMaxLoc( B, &BminVal, &BmaxVal, &minLoc, &maxLoc );
Mat matMin = Mat::zeros(1, 4, CV_32FC1), matMax = Mat::zeros(1, 4, CV_32FC1);
matMin.at<float>(0,0) = RminVal; matMin.at<float>(0,1) = GminVal; matMin.at<float>(0,2) = BminVal; matMin.at<float>(0,3) = 0;
double min, max;
minMaxLoc( matMin, &min, &max, &minLoc, &maxLoc );
float addWhite = -min;
matMax.at<float>(0,0) = RmaxVal + addWhite; matMax.at<float>(0,1) = GmaxVal + addWhite; matMax.at<float>(0,2) = BmaxVal + addWhite; matMax.at<float>(0,3) = 1;
minMaxLoc( matMax, &min, &max, &minLoc, &maxLoc );
float Scale = max;
for(int x = 0;x < input.rows;x++){
for(int y = 0;y < input.cols;y++){
output.at<Vec3f>(x,y)[2] = (R.at<float>(x,y) + addWhite) / Scale;
output.at<Vec3f>(x,y)[1] = (G.at<float>(x,y) + addWhite) / Scale;
output.at<Vec3f>(x,y)[0] = (B.at<float>(x,y) + addWhite) / Scale;
}
}
imshow("Unscaled RGB", output);
}
我希望它是
A.mp4
E.mp4
K.mp4
C.mp4
B.mp4
我尝试过如下命令:
1. A.mp4
2. E.mp4
3. K.mp4
4. C.mp4
5. B.mp4.
但它给了我这个错误:
youtube-dl:错误:使用输出模板与使用标题,视频ID或自动编号冲突
另外,下载整个播放列表然后逐个重命名也不是我在搜索。
是否有任何命令下载播放列表并根据我的意愿并排重命名每个视频?
答案 0 :(得分:15)
有时我很难根据订单重命名和排序文件。
所以要添加自动编号,请使用-A
之类的,
youtube-dl https://www.youtube.com/playlist?list=PLOU2XLYxmsILe6_eGvDN3GyiodoV3qNSC -A
或保留播放列表索引,
youtube-dl -o '%(playlist_index)s. %(title)s.%(ext)s' https://www.youtube.com/playlist?list=PLOU2XLYxmsILe6_eGvDN3GyiodoV3qNSC
这将为下载的文件添加漂亮的编号。
如果您要下载不在播放列表中的文件,可以手动将数字添加到文件中,
youtube-dl -o "1-%(uploader)s%(title)s.%(ext)s" https://youtu.be/862r3XS2YB0
这里我在下载时手动将1-
添加到文件名中。
答案 1 :(得分:6)
使用youtube-dl -o '%(playlist_index)s. %(title)s.%(ext)s' https://www.youtube.com/playlist?list=...
。
答案 2 :(得分:2)
我找到的最佳解决方案是:
youtube-dl -o "%(playlist_index)s-%(title)s.%(ext)s" <playlist_link>
例如:
youtube-dl -o "%(playlist_index)s-%(title)s.%(ext)s" https://www.youtube.com/playlist?list=PLf8i4fc0zJBzLhOe6FwHpGhBDgqwInJWZ
答案 3 :(得分:1)
'outtmpl': 'temp/' + str(i) +'.%(ext)s'
答案 4 :(得分:0)
这是我最近一直在使用的东西。
youtube-dl -o "%(playlist_index)s-%(title)s.%(ext)s" -f best "https://www.youtube.com/playlist?list=YOUR_PLAYLIST_ID"
答案 5 :(得分:-1)
您必须将youtube链接放在引号“”中
示例
youtube-dl -o "%(playlist_index)s-%(title)s.%(ext)s" "https://www.youtube.com/watch?v=ZNObiptSMSI&list=PL08903FB7ACA1C2FB"