Veröffentlicht 2. März 200619 j Hi, ich muesste einem dialogfenster(CFormView) ein Timeline, wie von Videoeditingsystemen, hinzufuegen. Hat jemand von euch vielleicht erfahrung damit oder kennt jemand ne webseite die sich damit beschaeftigt? gruss thomas
2. März 200619 j Guck mal bei www.codeguru.com oder www.codeproject.com. vielleicht findet sich da was.
2. März 200619 j ich probiere es jetzt mit directShow hinzubekommen (http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/directx9_c/directx/htm/constructingatimeline.asp) und habe den quellcode nun in meine Klasse Timeline eingefuegt. bekomme aber beim compilieren 8 unaufgeloeste externe symbole angezeigt. z.B. Timeline.obj : error LNK2001: Nichtaufgeloestes externes Symbol _IID_IAMTimelineTrack #include "dshow.h" #include "qedit.h" ... // Preview a timeline. void PreviewTL(IAMTimeline *pTL, IRenderEngine *pRender) { IGraphBuilder *pGraph = NULL; IMediaControl *pControl = NULL; IMediaEvent *pEvent = NULL; // Build the graph. pRender->SetTimelineObject(pTL); pRender->ConnectFrontEnd( ); pRender->RenderOutputPins( ); // Run the graph. pRender->GetFilterGraph(&pGraph); pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl); pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent); pControl->Run(); long evCode; pEvent->WaitForCompletion(INFINITE, &evCode); pControl->Stop(); // Clean up. pEvent->Release(); pControl->Release(); pGraph->Release(); } void CTimeline::OnInitialUpdate() { CFormView::OnInitialUpdate(): // Start by making an empty timeline. IAMTimeline *pTL = NULL; CoInitialize(NULL); CoCreateInstance(CLSID_AMTimeline, NULL, CLSCTX_INPROC_SERVER, IID_IAMTimeline, (void**)&pTL); // GROUP: Add a video group to the timeline. IAMTimelineGroup *pGroup = NULL; IAMTimelineObj *pGroupObj = NULL; pTL->CreateEmptyNode(&pGroupObj, TIMELINE_MAJOR_TYPE_GROUP); pGroupObj->QueryInterface(IID_IAMTimelineGroup, (void **)&pGroup); // Set the group media type. This example sets the type to "video" and // lets DES pick the default settings. For a more detailed example, // see "Setting the Group Media Type." AM_MEDIA_TYPE mtGroup; ZeroMemory(&mtGroup, sizeof(AM_MEDIA_TYPE)); mtGroup.majortype = MEDIATYPE_Video; pGroup->SetMediaType(&mtGroup); pTL->AddGroup(pGroupObj); pGroupObj->Release(); // TRACK: Add a track to the group. IAMTimelineObj *pTrackObj; IAMTimelineTrack *pTrack; IAMTimelineComp *pComp = NULL; pTL->CreateEmptyNode(&pTrackObj, TIMELINE_MAJOR_TYPE_TRACK); pGroup->QueryInterface(IID_IAMTimelineComp, (void **)&pComp); pComp->VTrackInsBefore(pTrackObj, 0); pTrackObj->QueryInterface(IID_IAMTimelineTrack, (void **)&pTrack); pTrackObj->Release(); pComp->Release(); pGroup->Release(); // SOURCE: Add a source to the track. IAMTimelineSrc *pSource = NULL; IAMTimelineObj *pSourceObj; pTL->CreateEmptyNode(&pSourceObj, TIMELINE_MAJOR_TYPE_SOURCE); pSourceObj->QueryInterface(IID_IAMTimelineSrc, (void **)&pSource); // Set the times and the file name. pSourceObj->SetStartStop(0, 50000000); BSTR bstrFile = SysAllocString(OLESTR("C:\\example.avi")); pSource->SetMediaName(bstrFile); SysFreeString(bstrFile); pSource->SetMediaTimes(40000000, 140000000); pTrack->SrcAdd(pSourceObj); pSourceObj->Release(); pSource->Release(); pTrack->Release(); // Preview the timeline. IRenderEngine *pRenderEngine = NULL; CoCreateInstance(CLSID_RenderEngine, NULL, CLSCTX_INPROC_SERVER, IID_IRenderEngine, (void**) &pRenderEngine); PreviewTL(pTL, pRenderEngine); // Clean up. pRenderEngine->ScrapIt(); pRenderEngine->Release(); pTL->Release(); CoUninitialize(); }
2. März 200619 j Hast du dem Compiler die entsprechenden Lib Dateien angegeben? Wenn nicht musst du mal in der Dokumentation zu DirectShow gucken welche das sind und die mit angegeben.
2. März 200619 j hat sich erledigt. meine Lib war wohl veraltet. hab jetzt ne aktuellere und es funktioniert.
3. März 200619 j Also so wie ich es mir vorstelle funktioniert es doch mit DirectShow leider nicht, daher bin ich immer noch auf der suche nach einer loesung. bei codeproject und codeguru bin ich leider nur auf viele leute getroffen, die das selbe problem haben aber keine loesungen. ich versuche eine art EDL(eine Schnittliste, d.h. eine beschreibung wie ein film geschnitten wurde) in einer timeline(mit audio und videotracks) zu visualisieren. Ich habe die information vereinfacht gesagt in der form: Videoclip1 von sekunde 0 bis 10 Videoclilp2 von sekunde 10 bis 15 usw. ... Hat jemand ne idee wie ich sowas mit VC++ realisieren kann?
3. März 200619 j Hat jemand ne idee wie ich sowas mit VC++ realisieren kann? Das ist zu individuell, das müsstest Du selbst programmieren. Die DirectShow Timeline ist zum Erstellen einer Anleitung für ein späteres Rendern gedacht und ist keine UI Komponente.
3. März 200619 j das habe ich auch feststellen muessen. deswegen suche ich nach alternativen loesungen.
3. März 200619 j Was ist so schwierig, dass Du es nicht selbst machst? Was soll Deine Zeitleiste überhaupt können? Wie soll sie aussehen (es gibt durchaus unterschiedliche Schnittsysteme mit Zeitleisten unterschiedlichen Aussehens und Funktion).
3. März 200619 j sorry, ich bin kein programmierer fuer mich ist das alles andere als banal. das ganze ist teil meiner dipl.arbeit. die timeline muss nicht viel koennen. ich muss ihr EditUnits(kleinse Schnitteinheit, z.B. ein Frame) zuweisen koennen. die zeitlachse sollte im Timeoce format skaliert sein. ich muss ihr clips(mit einer bestimmten dauer) zuweisen koennen. am besten waere es wenn ich die clips noch jeweils anklicken koennte um mir metadaten(Dauer, codec, framerate, etc.) der clips anzeigen lassen zu koennen.
3. März 200619 j Ich tippe darauf, dass die Chancen so etwas fix und fertig zu finden eher ungünstig stehen. Davon abgesehen, solltest Du in der Arbeit angeben, welche nicht von Dir erstellen Teile wie und wo verwendet wurden und dies auch vorher mit Deinem Betreuer/Gutachter absprechen und ein ok einholen.
3. März 200619 j Davon abgesehen, solltest Du in der Arbeit angeben, welche nicht von Dir erstellen Teile wie und wo verwendet wurden und dies auch vorher mit Deinem Betreuer/Gutachter absprechen und ein ok einholen. was du nicht sagst. also ganz doof/unwissend bin ich jetzt auch wieder nicht.
3. März 200619 j was du nicht sagst. also ganz doof/unwissend bin ich jetzt auch wieder nicht. Das war als nett gemeinter Rat gedacht, kein Grund papmpig zu werden.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.