我有一些我希望通过代码播放的歌曲我在ubuntu中安装了vlc播放器,我希望代码通过vlc播放器播放指定文件夹中的所有歌曲......有没有解决这个问题?任何帮助都会得到满足。
int main (int argc, const char * argv[])
{
char *input=argv[1];
if(input=="play"){
//trigger vlc
}
}
该文件夹已经拥有所有必需的歌曲..用这些歌曲触发vlc的方式是什么
答案 0 :(得分:1)
为你做了一个原型,它不安全,没有错误检查,但它确实有效。
代码:
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <errno.h>
#include <vector>
#include <string>
#include <iostream>
int scan(std::string dir, std::vector<std::string> &files)
{
DIR* dr = opendir(dir.c_str());
struct dirent *drp;
while ((drp = readdir(dr)) != NULL)
{
struct stat s;
stat((dir + "/" + std::string(drp->d_name)).c_str(), &s);
if (s.st_mode & S_IFREG)
{
files.push_back(std::string(drp->d_name));
}
}
closedir(dr);
return 0;
}
int main()
{
std::string dir = ".", cmd = "vlc";
std::vector<std::string> files, vfiles;
scan(dir, files);
for (unsigned int i = 0; i < files.size(); i++)
{
if (files[i].substr(files[i].find(".")) == ".mp3")
{
vfiles.push_back(std::string(files[i]));
}
}
for (unsigned int i = 0; i < vfiles.size(); i++)
{
cmd += " " + dir + "/" + vfiles[i];
}
printf("%s\n", cmd.c_str());
system(cmd.c_str());
return 0;
}
输出:
vlc ./test.mp3 ./test2.mp3
它的作用是:它默认列出指定文件夹"."
中的所有文件,它检查文件实际上是文件而不是文件夹,然后列出以{结尾的所有文件{1}}然后运行".mp3"
。 VLC将按顺序播放所有列出的文件。
在将其添加到vlc file1.mp3 file2.mp3 file4.mp3
后,在Windows 8上使用(VLC media player 2.0.6 Twoflower
)。