C++ Musik Play List , Dateipfad mit ausführen der Playlist

Wolly300

Lieutenant
Registriert
Mai 2014
Beiträge
523
Hallo Leute ich programmiere jetzt seit längerem wieder etwas. Ich will eine kleines Text Programm das ein Paar lieder aus einem Ordner nacheinander (Playlist) abspielt. Nun hänge ich daran das das abgespielt wird. Im Internet komme ich nicht weiter.

#include <stdlib.h>
#include "stdio.h"
#include "stdafx.h"
#include <iostream>
using namespace std;

int a;
int b = 1;

int main()
{
Menue:

cout<<"Bitte 1 zum starten der Playlist eingeben.\n";
cin >> (a);
if (a == b) goto PlaylistStarten;
else;
system("cls");
cout << " Sie haben leider keine Auswahl getroffen!";
goto Menue;

PlaylistStarten:
system("cls");
cout << "Ihre Playlist wird gestartet./n";



return 0;
}

Bitte helft mit mal ein bisschen auf die Sprünge. Dateipfad= C:\Users\Raphi\Documents

Danke
 
Vorweg: bitte keine gotos benutzen, die machen den Code unleserlich, lieber Schleifen und Funktionen nehmen!

Wie willst du die Musik den abspielen? Soll das das Programm selber tun? Dann brauchst du ein geeignetes Audio Framework.
Die einfachere Variante wäre ein externes Programm, wie zB den VLC Media Player zu starten und die Playlist abspielen zu lassen.

PS: Bitte die Code-Tags benutzen, macht den Code deutlich einfacher zu lesen ;)
 
Ja ich will ein externes Programm dafür verwenden: Windows Media Player
 
Wenn der WMP als Standardprogramm für die Wiedergabeliste-Datei gesetzt ist, sollte es eigentlich reichen die Datei mittels system("Dateiname"); zu öffnen.
 
und wie sage ich dem Programm das es nach beenden Des Liedes random mäßig ein anderes Lied aus diesem Ordner abspielen soll ?
 
Achso ok, ich hab dich missverstanden, ich dachte du hättest eine Playlist-Datei die irgenwo liegt die du abspielen willst.

In dem Fall müsstest du zuerst mal den Ordner scannen nach allen Dateien mit bspw .mp3 Endung, die Speicherst du dann in irgend einer Form von Liste aus der du dann zufällig eins auswählst und abspielst. Zur Erkennung wann ein Lied zu ende ist fällt mir spontan gerade nichts ein, hab aber auch selbst noch nichts in der Richtung programmiert, da kann dir evtl jemand anderes besser helfen.
 
Genau da hängt mein Hacken. Wie programmiere ich das scannen nach den Daten und dann das abspielen. Mit welchen Befehlen ? Kannst du ein Beispiel geben ?
 
http://lmgtfy.com/?q=c+++scan+directory+for+files

Google ist voll von Beispielen, wenn du programmieren willst solltest du dir angewöhnen zu googlen. In der Regel hat jemand schonmal das gleiche Problem wie du gehabt und gelöst.
Außerdem geht googlen viel schneller als hier zu warten bis dir jemamd Antwortet ;)
 
Eigentlich sollte man keine kompletten Lösungen posten, aber ich war selber neugierig und die Lösungen auf SO sind echt hässlich. Vorrausgesetzt du hast boost installiert sollte das hier fast genau das machen, was du willst:

Code:
#include <iostream>
#include <vector>
#include <random>
#include <boost/filesystem.hpp>

namespace fs = boost::filesystem;

int main() {
	//read directory path from user
	fs::path path{};
	do {
		std::cout << "Enter directory name:\n";
		std::cin >> path;
	} while( !fs::is_directory( path )) ;
	
	//search directory for mp3 files an store paths in vector
	std::vector<fs::path> files;
	for( auto p : fs::directory_iterator( fs::canonical( path ))) {
		if( fs::is_regular_file( p ) && p.path().extension() == ".mp3" ) {
			files.push_back( p );
		}
	}

	//shuffle file list
	std::shuffle( files.begin(), files.end(), std::random_device{} );

	//for each file, start media player and pass path as command line parameter 
	for ( auto f : files ) {
		auto command = R"(start /w wmplayer.exe -p ")" + f.string() + '\"';
		std::cout << command << std::endl;
		system( command.c_str() );
	}
}
Falls deine C++ Toolchain schon das Filesystem TS mitbringt (Wie z.B. VS2015) oder c++17 unterstützt kannst du boost::filesystem auch durch std::(experimental::)filesystem ersetzten (musst dann natürlich noch den Header austauschen)

Problem bei obiger Lösung ist allerdings, dass du den Windows media player am Ende jedes Liedes manuell schließen muss. Bei anderen Playern ( wie z.B. dem Media Player Classic Home Cinema (https://mpc-hc.org/)) geht das mit den richtigen parametern auch automatisch.
 
Zurück
Oben