通过youtube-dl下载时更改视频名称

时间:2015-09-25 14:37:02

标签: linux video youtube youtube-dl

我正在尝试在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或自动编号冲突

另外,下载整个播放列表然后逐个重命名也不是我在搜索。

是否有任何命令下载播放列表并根据我的意愿并排重命名每个视频?

6 个答案:

答案 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"