2012-03-28 3 views
0

Was ist der beste Weg, um eine Funktion-Aufruf von C/C++ Code zu spielen zwei kurze mp4-Dateien sequentiell nacheinander treffen die unter constraint: Ich möchte, dass sie so abgespielt werden, dass man nicht merkt, dass es zwei separate Dateien gibt.Wie zwei mp4-Dateien hintereinander ohne merkliche Verzögerung zu spielen - in C/C++

Ich werde Hunderte von kurzen mp4-Dateien haben und alle nacheinander abspielen wollen, ohne dass der Zuschauer es bemerkt. Ein Weg wäre, die mp4-Dateien in ihre Frames zu trennen - wenn es einen Player gibt, der mit Frames gefüttert werden kann. Das einfachste wäre so etwas, aber eine Bibliothek für c/C++: How to play audio files one after the other .. Ich weiß nicht, wie gut es funktioniert.

Ich bin auf der Suche nach Code, wie dies zu tun ist.

+1

Haben Sie eine bestimmte Video-Playback-API im Sinn, die Sie verwenden möchten, oder suchen Sie nur nach einer? Ich nehme an, dass Sie immer zwei Video-Wiedergabe-Widgets (von welcher API Sie auch verwenden) instanziieren und sie zum doppelten Puffer verwenden können (z. B. das erste Video in Widget A und das vorherige zweite Video in Widget B laden und A und B anzeigen) in dem Moment, wenn A's Video endet, dann wiederholen Sie wie nötig) –

+0

Danke für die Antwort. Ich möchte FFMpeg verwenden, aber ich bin flexibel. Es ist eine interessante Idee, die ich testen könnte, wenn ich keine Möglichkeit finde, eine mp4-Datei in Frames zu trennen; und füttere ein Video-Wiedergabe-Widget mit diesen Frames. –

Antwort

0

Verwenden Sie nicht C++ - verwenden Sie einfach ein altes Videoschnittprogramm, um die Dateien zu einem zusammenzufügen und spielen Sie mit jedem normalen Player.

+0

Danke für die Antwort! Ich habe vergessen zu erwähnen, dass ich die Dateien fortlaufend erhalten werde. Ich habe nicht alle Dateien auf einmal. Es kann passieren, dass ich beim Start nur 2 Dateien habe; und während ich diese beiden Dateien spiele, erhalte ich eine dritte Datei usw. –

+0

Es ist also wie ein Torrent-Programm, das Videos streamt? Vielleicht können Sie ein Open-Source-Torrent-Programm finden, das dies bereits tut? Wenn nicht, schlage ich vor, etwas Code gegen DirectX oder was auch immer zu schreiben und zu SO zurückzukehren, wenn Sie spezifische Fragen zu Ihrer Implementierung haben. –