CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Odtwarzacz Video/MP3

Odtwarzacz Video/MP3

problemy z tworzeniem aplikacji graficznych oraz audio i wideo

Odtwarzacz Video/MP3

Nowy postprzez Alinoe » piątek, 23 grudnia 2011, 22:23

Witam, na początku chciałem powiedzieć że forum jest naprawdę "zacne". Wśród zaśmieconego "Googla" w którym nie uzyskasz innej pomocy niż cyt." poszukaj w Google" etc. to forum jawi się światełkiem w tunelu :).

Zaznaczam że z programowaniem mam do czynienia naprawdę od niedawna - stracone lata bez kodowania heheh

Mam trzy pytania dotyczące mojego programu , aby go zamknąć na amen i być zadowolonym z funkcjonalności.

1. Jak wczytać zapisaną PlayListe tak aby ścieżki były "aktywne" i możliwe do odegrania?
- Pierwotnie pliki dodaje do ListBox'a i mogę je odtwarzać bez problemu. Po zapisie PlayListy i próbie wczytania jej z powrotem zaczytuje je jako tekst a nie jako aktywne odniesienie do ścieżki w której jest zapisany plik .
2. Napisy do filmu , zaczytałem je do ListBox'a . Oddzieliłem sekcję odpowiedzialną za czas filmu , ale nie wiem jak ograniczyć drugą tablicę w której przechowuje tekst - po czym/w jaki sposób tablica ma wiedzieć że koniec to faktycznie koniec linii. Chce później powiązać czas z pliku z timerem.. ehh
3. Czy jest jakiś sposób aby skorzystać z innych kodeków niż ten z którego używa komponent MediaPlayer ?Jeśli tak to jak to zrobić?

Dziękuję za jakąkolwiek podpowiedź na którekolwiek z pytań. Borlanda zaatakowałem 2 tyg. temu - liczę na wyrozumiałość :D
PS.W załączniku link do kodu źródłowego.
http://www.megaupload.com/?d=CXPWMB93
Avatar użytkownika
Alinoe
Bladawiec
Bladawiec
 
Posty: 4
Dołączył(a): piątek, 23 grudnia 2011, 20:31
Podziękował : 1
Otrzymał podziękowań: 0
System operacyjny: Windows 7
Kompilator: Embarcadero RAD Studio XE 2
Gadu Gadu: 0
    Windows 7Firefox

Re: Odtwarzacz Video/MP3

Nowy postprzez Cyfrowy Baron » piątek, 23 grudnia 2011, 22:49

Co do pierwszego pytania to lista musi przechowywać ścieżki dostępu do plików, a nie tylko nazwy plików. Drugiego pytania nie zrozumiałem. Co do trzeciego pytania, to trzeba by się posłużyć jakimiś innymi gotowymi bibliotekami, ja osobiście takowych nie znam.

audio - video
odtwarzacz plików dźwiękowych
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Odtwarzacz Video/MP3

Nowy postprzez Alinoe » piątek, 23 grudnia 2011, 23:24

Dziękuję za szybką odpowiedź!
Tak wygląda moja przykładowa "Lista" wczytana do ListBox'a - ścieżki są , tylko nie wiem jak to zrobić aby pliki uruchamiały się z pod tych adresów :O
Obrazek
Drugie pytanie - sam tego nie rozumiem - ogólnie chodzi mi o to że chciałbym wykorzystać napisy w filmie - zaczytałem je do ListBoxa
Obrazek
I teraz staram się zrozumieć jak odseparować czas w jakim pojawić się powinna linia z tekstem. Format Timera mam taki sam i mój laicki umysł mi podpowiada że najprościej byłoby wyekstrahować "czasy" i porównać z timerem .. ciężki temat - dla mnie.

Właśnie postudiowałem trochę http://programowanie.cal.pl/cyfbar/ jest wiele pomocnych wskazówek .Dzięki wielkie.
Avatar użytkownika
Alinoe
Bladawiec
Bladawiec
 
Posty: 4
Dołączył(a): piątek, 23 grudnia 2011, 20:31
Podziękował : 1
Otrzymał podziękowań: 0
System operacyjny: Windows 7
Kompilator: Embarcadero RAD Studio XE 2
Gadu Gadu: 0
    Windows 7Firefox

Re: Odtwarzacz Video/MP3

Nowy postprzez Cyfrowy Baron » sobota, 24 grudnia 2011, 01:17

Nie podałeś żadnego kodu, więc nie ma nad czym pracować. W zasadzie to nie rozumiem co za problem masz z tą listą. Skoro zawiera pełne ścieżki dostępu do plików, to nie ma problemu z uruchomieniem tych plików. Przerób kurs praktyczny, który podałem w poprzednim poście.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Odtwarzacz Video/MP3

Nowy postprzez polymorphism » sobota, 24 grudnia 2011, 12:16

I teraz staram się zrozumieć jak odseparować czas w jakim pojawić się powinna linia z tekstem.

Można tak:
KOD cpp:     UKRYJ  
const char* line = "01:02:12:tekst";

int h, m, s;

if(sscanf(line, "%i:%i:%i", &h, &m, &s) == 3)
{
        line = strchr(line, ':');
        line = strchr(line + 1, ':');
        line = strchr(line + 1, ':');
        if(line) ++line;

        cout    << "w " << (h * 3600 + m * 60 + s)
                        << " sekundzie --> \t"
                        << line << '\n';
}

Całość powinieneś trzymać w jakimś kontenerze asocjacyjnym, np. std:map nadaje się do tego idealnie. Kluczem niech będzie czas w milisekundach, a wartością tekst.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Odtwarzacz Video/MP3

Nowy postprzez Alinoe » sobota, 24 grudnia 2011, 13:50

Ok , dziękuję za podpowiedzi - na pewno skorzystam. Mój program - kod źródłowym podałem w linku w pierwszym poście, ale rozumiem że nikt nie chce sobie zaśmiecać komputera "śmieciowym" kodem ;). Pokrótce opisze jak to wygląda.

1. Zaczytywanie plików do Playlisty:
Obrazek
Kod którym wprowadzam pliki :
KOD cpp:     UKRYJ  
void __fastcall TForm1::LoadFiles(void)
{
if(OpenDialog1->Execute())
        {
        for(int i = 0; i < Lista->Count; i++)
                {
                if(OpenDialog1->FileName == Lista->Strings[i]) return;
                }
  Lista->Add(OpenDialog1->FileName);
  AnsiString Path;
  AnsiString Tytul;
  Path = ExtractFileDir(OpenDialog1->FileName) ;
  Tytul = ExtractFileName(OpenDialog1->FileName);
  Form2->ListBox1->Items->Add(Tytul);
   }
}

Zapisuje Pliki z Play Listy do .txt :
Obrazek
Kod :
KOD cpp:     UKRYJ  
void __fastcall TForm1::ZapiszListe1Click(TObject *Sender)
{
TStrings *PlayList = new TStringList;
 if(SaveDialog1->Execute())
 {
        PlayList = Lista;
        PlayList->SaveToFile(SaveDialog1->FileName);
 }
}

Otrzymuję plik .txt z zawartością:
Obrazek

Teraz zaczytuję go z powrotem do PlayListy po ponownym uruchomieniu :
Obrazek
Kod:
KOD cpp:     UKRYJ  
void __fastcall TForm1::WczytajListe1Click(TObject *Sender)
{
TStrings *memList = new TStringList;
 if(OpenDialog2->Execute())
        {
        memList->LoadFromFile(OpenDialog2->FileName);
        String FileName = ExtractFilePath( ParamStr(0) ) ;
        Form2->ListBox1->Items-> Assign(memList);
        Form2->Show();
        }
}

I niestety Pliki nie są uruchamialne - podejrzewam ,że dla tego że program traktuje je jako text nie link :
Tak wygląda error debugera
Obrazek
A tu zrzut z kodu - błąd odnoszący się do klasy
Obrazek

Co do TXT z napisami dzięki <polymorphism> powalcze z tym :D
Avatar użytkownika
Alinoe
Bladawiec
Bladawiec
 
Posty: 4
Dołączył(a): piątek, 23 grudnia 2011, 20:31
Podziękował : 1
Otrzymał podziękowań: 0
System operacyjny: Windows 7
Kompilator: Embarcadero RAD Studio XE 2
Gadu Gadu: 0
    Windows 7Firefox

Re: Odtwarzacz Video/MP3

Nowy postprzez polymorphism » sobota, 24 grudnia 2011, 14:54

KOD cpp:     UKRYJ  
TStrings *PlayList = new TStringList;
...
        PlayList = Lista; //<--- WTF?!
        PlayList->SaveToFile(SaveDialog1->FileName);


To Twój kod? Pytam, bo widzę, że nie bardzo wiesz, co robisz. Jeśli dobrze zrozumiałem, w Lista jest lista ścieżek do plików, a w Form2::ListBox1 lista nazw wyodrębnionych ze ścieżek. Teraz tak, przy ładowaniu playlisty ładujesz plik ze ścieżkami do lokalnej listy memList, którą później przypisujesz do Form2::ListBox1. Problem w tym, że listbox powinien trzymać tylko nazwy plików, a nie całe ścieżki, bo te powinny być w Lista, a nie są.

W WczytajListe1Click masz wyciek. memList powinieneś usunąć z pamięci (ale także z kodu, jest zupełnie zbędna)

KOD cpp:     UKRYJ  
    memList->LoadFromFile(OpenDialog2->FileName);
    String FileName = ExtractFilePath( ParamStr(0) ) ; //<--- WTF?!
    Form2->ListBox1->Items-> Assign(memList);
    Form2->Show();


(...) ale rozumiem że nikt nie chce sobie zaśmiecać komputera "śmieciowym" kodem

A po co ktoś miałby ściągać ten kod? Jak masz konkretny problem, to zadaj (konkretne) pytanie na forum. Nie każdy ma czas i ochotę na analizowanie kodów całej aplikacji.
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
Alinoe
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Odtwarzacz Video/MP3

Nowy postprzez Alinoe » sobota, 24 grudnia 2011, 15:28

Rozumiem, dzięki za wytłumaczenie błędu .Staram się czegoś nauczyć - z Borlandem mam do czynienia od 2 tygodni i faktycznie większość czasu poświęcam na odpalanie aplikacji i sprawdzanie metodą prób i błędów różnych wariantów w kodzie stąd te kwiatki.
Wesołych Świąt swoją drogą!

Niesomowite taka prosta modyfikacja i działa!!! Stawiam piwo :D
Avatar użytkownika
Alinoe
Bladawiec
Bladawiec
 
Posty: 4
Dołączył(a): piątek, 23 grudnia 2011, 20:31
Podziękował : 1
Otrzymał podziękowań: 0
System operacyjny: Windows 7
Kompilator: Embarcadero RAD Studio XE 2
Gadu Gadu: 0
    Windows 7Firefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje multimedialne, graficzne

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 7 gości

cron