Как програмно вырезать кусок avi файла(на directshow vс++)
От: vippavlo Украина http://www.baptistm.info
Дата: 07.05.07 23:34
Оценка: 3 (1) +1
Уважаемые программисты, может ктото знает, как на DirectShow(vс++ delphi не знаю) вырезать кусок avi файла, желательно без рекомпресии или может скажите в чем у меня проблема в коде первый фрейм копирует и все или нормально, когда нету потока звука'(((???
Код:

IGraphBuilder *m_pGraph;
    IMediaControl *m_pMediaControl;
    IMediaSeeking *m_pMediaSeeking;
    IBasicVideo   *m_pBasicVideo;

    ICaptureGraphBuilder2 *m_pBuilder;
    IBaseFilter           *m_pMuxFilter;
    IBaseFilter           *m_pSourceFilter;

    HRESULT hr = 0;
      hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
      if( hr != S_OK ) { AfxMessageBox(_T("Error1")); return false; }
      hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&m_pGraph);
      if( hr != S_OK ) { AfxMessageBox(_T("Error2")); return false; }
    hr = m_pGraph->QueryInterface(IID_IMediaControl, (void **)&m_pMediaControl);
      if( hr != S_OK ) { AfxMessageBox(_T("Error3")); return false; }
    hr = m_pGraph->QueryInterface(IID_IMediaSeeking, (void **)&m_pMediaSeeking);
    if( hr != S_OK ) { AfxMessageBox(_T("Error4")); return false; }
    hr = m_pGraph->QueryInterface(IID_IBasicVideo, (void **)&m_pBasicVideo);
    if( hr != S_OK ) { AfxMessageBox(_T("Error5")); return false; }
    // Helps the building all Graphs
    hr = CoCreateInstance((REFCLSID)CLSID_CaptureGraphBuilder2, NULL, CLSCTX_INPROC, (REFIID)IID_ICaptureGraphBuilder2, (void **)&m_pBuilder);
    if( hr != S_OK ) { AfxMessageBox(_T("Error6")); return false; }
    hr = m_pBuilder->SetFiltergraph(m_pGraph);
    if( hr != S_OK ) { AfxMessageBox(_T("Error7")); ASSERT(FALSE); return false; }
    // Add the avimux, and file writer to the graph 
      LPCOLESTR destAvi = _T("c:\\new15.avi");
      hr = m_pBuilder->SetOutputFileName(&MEDIASUBTYPE_Avi, destAvi, &m_pMuxFilter, NULL);
      if( hr != S_OK ) { AfxMessageBox(_T("Error8")); return false; }
      // Set the AVI Options like interleaving mode etc...
    CComPtr<IConfigAviMux> pConfigAviMux;
    hr = m_pMuxFilter->QueryInterface(IID_IConfigAviMux, (void **)&pConfigAviMux);
      if( hr != S_OK ) { AfxMessageBox(_T("Error9")); return false; }
      hr = pConfigAviMux->SetOutputCompatibilityIndex(FALSE);
      if( hr != S_OK ) { AfxMessageBox(_T("Error10")); return false; }
      // QI for interface Interleaving
    CComPtr<IConfigInterleaving>  pInterleaving;
    hr = m_pMuxFilter->QueryInterface(IID_IConfigInterleaving, reinterpret_cast<PVOID *>(&pInterleaving));
      if( hr != S_OK ) { AfxMessageBox(_T("Error11")); return false; }
      hr = pInterleaving->put_Mode(INTERLEAVE_FULL);
      if( hr != S_OK ) { AfxMessageBox(_T("Error12")); return false; }
      LPCWSTR srcAvi = TEXT("c:\\Сердце лета.avi");
    hr = m_pGraph->RenderFile(srcAvi, NULL);
      if( hr != S_OK ) { AfxMessageBox(_T("Error13")); return false; }
    hr = m_pBuilder->FindInterface(&LOOK_UPSTREAM_ONLY, 0, m_pMuxFilter, IID_IMediaSeeking, (void **)&m_pMediaSeeking);
      if( hr != S_OK ) { AfxMessageBox(_T("Error14")); return false; }
    hr = m_pMediaSeeking->SetTimeFormat(&TIME_FORMAT_FRAME);
      if( hr != S_OK ) { AfxMessageBox(_T("Error15")); return false; }
      REFERENCE_TIME cur, stop;
    hr = m_pMediaSeeking->GetPositions(&cur, &stop);
      cur  = 10;
      stop = 50;
      if( hr != S_OK ) { AfxMessageBox(_T("Error16")); return false; }
    hr = m_pMediaSeeking->SetPositions(&cur, AM_SEEKING_AbsolutePositioning | AM_SEEKING_SeekToKeyFrame, &stop, AM_SEEKING_AbsolutePositioning | AM_SEEKING_SeekToKeyFrame);
      if( hr != S_OK ) { AfxMessageBox(_T("Error17")); return false; }
    if( m_pMediaControl->Run() != S_OK ) { AfxMessageBox(_T("Error18")); return false; }
      IMediaEvent   *pEvent;
      hr = m_pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);
      long EvCode = 0;
      // Have we received the EC_COMPLETE event?
      hr = pEvent->WaitForCompletion(INFINITE, &EvCode);
      // Stop the graph
      m_pMediaControl->Stop();


ICQ #469907496
Re: Как програмно вырезать кусок avi файла(на directshow vс+
От: Денис Федотов Россия  
Дата: 08.05.07 06:34
Оценка:
Здравствуйте, vippavlo, Вы писали:

V>Уважаемые программисты, может ктото знает, как на DirectShow(vс++ delphi не знаю) вырезать кусок avi файла, желательно без рекомпресии или может скажите в чем у меня проблема в коде первый фрейм копирует и все или нормально, когда нету потока звука'(((???


Попробуй использовать DES (DirectShow Editing Services). Оно тебе поможет...
Re[2]: Как програмно вырезать кусок avi файла(на directshow
От: squid  
Дата: 08.05.07 08:07
Оценка:
Здравствуйте, Денис Федотов, Вы писали:

ДФ>Здравствуйте, vippavlo, Вы писали:


V>>Уважаемые программисты, может ктото знает, как на DirectShow(vс++ delphi не знаю) вырезать кусок avi файла, желательно без рекомпресии или может скажите в чем у меня проблема в коде первый фрейм копирует и все или нормально, когда нету потока звука'(((???


ДФ> Попробуй использовать DES (DirectShow Editing Services). Оно тебе поможет...


а разве в нем без рекомпрессии можно?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Как програмно вырезать кусок avi файла(на directshow
От: vippavlo Украина http://www.baptistm.info
Дата: 08.05.07 08:22
Оценка:
Уважаемый squid я в поиске нашел тему, которую вы обсуждали с неким IgorP год или два назад. Ето практически та же тема. Она "Сохранить фрагмент видео без рекомпрессии" но так вы и не дошли до "истины". У вас возникала та же проблема — копировался лиш один фрейм. Скажите пожалуйста, как вы ее решили????
ICQ #469907496
Re[2]: Как програмно вырезать кусок avi файла(на directshow
От: vippavlo Украина http://www.baptistm.info
Дата: 08.05.07 08:34
Оценка:
Здравствуйте, Денис Федотов, Вы писали:

ДФ>Здравствуйте, vippavlo, Вы писали:


V>>Уважаемые программисты, может ктото знает, как на DirectShow(vс++ delphi не знаю) вырезать кусок avi файла, желательно без рекомпресии или может скажите в чем у меня проблема в коде первый фрейм копирует и все или нормально, когда нету потока звука'(((???


ДФ> Попробуй использовать DES (DirectShow Editing Services). Оно тебе поможет...


Я пробывал использовать timeline но все равно не получилось(((((
Если вы знаете как можно то подскажите пожалуйста
ICQ #469907496
Re[4]: Как програмно вырезать кусок avi файла(на directshow
От: squid  
Дата: 08.05.07 09:53
Оценка:
Здравствуйте, vippavlo, Вы писали:

V>Уважаемый squid я в поиске нашел тему, которую вы обсуждали с неким IgorP год или два назад. Ето практически та же тема. Она "Сохранить фрагмент видео без рекомпрессии" но так вы и не дошли до "истины". У вас возникала та же проблема — копировался лиш один фрейм. Скажите пожалуйста, как вы ее решили????


а никак. так и завис. без аудио все нормально. если аудио непожатое, voxware или ac3 — тоже. а с mp3 — никак. но если решите напишите пожалуйста.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Как програмно вырезать кусок avi файла(на directshow
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 08.05.07 10:04
Оценка:
ДФ>> Попробуй использовать DES (DirectShow Editing Services). Оно тебе поможет...

S>а разве в нем без рекомпрессии можно?


Можно, через ISmartRenderEngine.
Но все зависит от типа потока. VBR mp3 просто так не выйдет, просто потому что стандартный AVI Mux не умеет VBR аудио писать (не говоря о том, что AVI Splitter не умеет его таймстемпить
Re[5]: Как програмно вырезать кусок avi файла(на directshow
От: vippavlo Украина http://www.baptistm.info
Дата: 08.05.07 12:15
Оценка:
Здравствуйте, squid, Вы писали:

S>Здравствуйте, vippavlo, Вы писали:


V>>Уважаемый squid я в поиске нашел тему, которую вы обсуждали с неким IgorP год или два назад. Ето практически та же тема. Она "Сохранить фрагмент видео без рекомпрессии" но так вы и не дошли до "истины". У вас возникала та же проблема — копировался лиш один фрейм. Скажите пожалуйста, как вы ее решили????


S>а никак. так и завис. без аудио все нормально. если аудио непожатое, voxware или ac3 — тоже. а с mp3 — никак. но если решите напишите пожалуйста.


А вы не пробовали отдельно перекодирывать только аудио поток, а видео оставить так????
А то я еще был написал програмку для перекодирывания авишки, то та же проблема возникает, если без потока аудио, то пашет, а так не хочет нужно чемто еще аудио кодить, низнаю чам88888((( не подскажите чем лучше, а то видео я с помощю xvid'a)))
ICQ #469907496
Re[4]: Как програмно вырезать кусок avi файла(на directshow
От: squid  
Дата: 09.05.07 05:23
Оценка:
Здравствуйте, D. Mon, Вы писали:

ДФ>>> Попробуй использовать DES (DirectShow Editing Services). Оно тебе поможет...


S>>а разве в нем без рекомпрессии можно?


DM>Можно, через ISmartRenderEngine.

DM>Но все зависит от типа потока. VBR mp3 просто так не выйдет, просто потому что стандартный AVI Mux не умеет VBR аудио писать (не говоря о том, что AVI Splitter не умеет его таймстемпить

гм. может в VBR и проблема...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Как програмно вырезать кусок avi файла(на directshow
От: squid  
Дата: 09.05.07 05:23
Оценка:
Здравствуйте, vippavlo, Вы писали:

V>Здравствуйте, squid, Вы писали:


S>>Здравствуйте, vippavlo, Вы писали:


V>>>Уважаемый squid я в поиске нашел тему, которую вы обсуждали с неким IgorP год или два назад. Ето практически та же тема. Она "Сохранить фрагмент видео без рекомпрессии" но так вы и не дошли до "истины". У вас возникала та же проблема — копировался лиш один фрейм. Скажите пожалуйста, как вы ее решили????


S>>а никак. так и завис. без аудио все нормально. если аудио непожатое, voxware или ac3 — тоже. а с mp3 — никак. но если решите напишите пожалуйста.


V>А вы не пробовали отдельно перекодирывать только аудио поток, а видео оставить так????

V>А то я еще был написал програмку для перекодирывания авишки, то та же проблема возникает, если без потока аудио, то пашет, а так не хочет нужно чемто еще аудио кодить, низнаю чам88888((( не подскажите чем лучше, а то видео я с помощю xvid'a)))

у меня весь смысл был вырезать без перекодирования. если перекодировать то смысла в этом нет. хотя как тут подсказали если VBR MP3 перегнать в CBR то возможно получиться. да и как выяснилось в DES способ возможно есть. но там с VBR траблы тоже будут... короче вот вам 2 варианта. а кодить видео это лажа, видео нормально режеться, тут с аудио лучше немного поколдовать.

впринципе нужно просто добавить кодек из AudioCompressionCategory между сплиттером и муксером и все. directshow сам найдет декодер, если он есть.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[7]: Как програмно вырезать кусок avi файла(на directshow
От: vippavlo Украина http://www.baptistm.info
Дата: 09.05.07 15:53
Оценка:
Здравствуйте, squid, Вы писали:

S>Здравствуйте, vippavlo, Вы писали:


V>>Здравствуйте, squid, Вы писали:


S>>>Здравствуйте, vippavlo, Вы писали:


V>>>>Уважаемый squid я в поиске нашел тему, которую вы обсуждали с неким IgorP год или два назад. Ето практически та же тема. Она "Сохранить фрагмент видео без рекомпрессии" но так вы и не дошли до "истины". У вас возникала та же проблема — копировался лиш один фрейм. Скажите пожалуйста, как вы ее решили????


S>>>а никак. так и завис. без аудио все нормально. если аудио непожатое, voxware или ac3 — тоже. а с mp3 — никак. но если решите напишите пожалуйста.


V>>А вы не пробовали отдельно перекодирывать только аудио поток, а видео оставить так????

V>>А то я еще был написал програмку для перекодирывания авишки, то та же проблема возникает, если без потока аудио, то пашет, а так не хочет нужно чемто еще аудио кодить, низнаю чам88888((( не подскажите чем лучше, а то видео я с помощю xvid'a)))

S>у меня весь смысл был вырезать без перекодирования. если перекодировать то смысла в этом нет. хотя как тут подсказали если VBR MP3 перегнать в CBR то возможно получиться. да и как выяснилось в DES способ возможно есть. но там с VBR траблы тоже будут... короче вот вам 2 варианта. а кодить видео это лажа, видео нормально режеться, тут с аудио лучше немного поколдовать.


S>впринципе нужно просто добавить кодек из AudioCompressionCategory между сплиттером и муксером и все. directshow сам найдет декодер, если он есть.


у меня получилось сегодня ночью мучился и решил проблему, так как я и думал, пришлось аудио мр3 кодером переганять, тоже очень быстро работает, но проблема в том, что почемуто если Seeking ставлю начальный не 0, то белеберда получается не знаю в чем проблема???((((
ICQ #469907496
Re: Как програмно вырезать кусок avi файла(на directshow vс+
От: Аноним  
Дата: 09.05.07 20:17
Оценка:
Здравствуйте, vippavlo, Вы писали:

V>Уважаемые программисты, может ктото знает, как на DirectShow(vс++ delphi не знаю) вырезать кусок avi файла, желательно без рекомпресии или может скажите в чем у меня проблема в коде первый фрейм копирует и все или нормально, когда нету потока звука'(((???

V>Код:

V>
V>IGraphBuilder *m_pGraph;
V>    IMediaControl *m_pMediaControl;
V>    IMediaSeeking *m_pMediaSeeking;
V>    IBasicVideo   *m_pBasicVideo;

V>    ICaptureGraphBuilder2 *m_pBuilder;
V>    IBaseFilter           *m_pMuxFilter;
V>    IBaseFilter           *m_pSourceFilter;

V>    HRESULT hr = 0;
V>      hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
V>      if( hr != S_OK ) { AfxMessageBox(_T("Error1")); return false; }
V>      hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&m_pGraph);
V>      if( hr != S_OK ) { AfxMessageBox(_T("Error2")); return false; }
V>    hr = m_pGraph->QueryInterface(IID_IMediaControl, (void **)&m_pMediaControl);
V>      if( hr != S_OK ) { AfxMessageBox(_T("Error3")); return false; }
V>    hr = m_pGraph->QueryInterface(IID_IMediaSeeking, (void **)&m_pMediaSeeking);
V>    if( hr != S_OK ) { AfxMessageBox(_T("Error4")); return false; }
V>    hr = m_pGraph->QueryInterface(IID_IBasicVideo, (void **)&m_pBasicVideo);
V>    if( hr != S_OK ) { AfxMessageBox(_T("Error5")); return false; }
V>    // Helps the building all Graphs
V>    hr = CoCreateInstance((REFCLSID)CLSID_CaptureGraphBuilder2, NULL, CLSCTX_INPROC, (REFIID)IID_ICaptureGraphBuilder2, (void **)&m_pBuilder);
V>    if( hr != S_OK ) { AfxMessageBox(_T("Error6")); return false; }
V>    hr = m_pBuilder->SetFiltergraph(m_pGraph);
V>    if( hr != S_OK ) { AfxMessageBox(_T("Error7")); ASSERT(FALSE); return false; }
V>    // Add the avimux, and file writer to the graph 
V>      LPCOLESTR destAvi = _T("c:\\new15.avi");
V>      hr = m_pBuilder->SetOutputFileName(&MEDIASUBTYPE_Avi, destAvi, &m_pMuxFilter, NULL);
V>      if( hr != S_OK ) { AfxMessageBox(_T("Error8")); return false; }
V>      // Set the AVI Options like interleaving mode etc...
V>    CComPtr<IConfigAviMux> pConfigAviMux;
V>    hr = m_pMuxFilter->QueryInterface(IID_IConfigAviMux, (void **)&pConfigAviMux);
V>      if( hr != S_OK ) { AfxMessageBox(_T("Error9")); return false; }
V>      hr = pConfigAviMux->SetOutputCompatibilityIndex(FALSE);
V>      if( hr != S_OK ) { AfxMessageBox(_T("Error10")); return false; }
V>      // QI for interface Interleaving
V>    CComPtr<IConfigInterleaving>  pInterleaving;
V>    hr = m_pMuxFilter->QueryInterface(IID_IConfigInterleaving, reinterpret_cast<PVOID *>(&pInterleaving));
V>      if( hr != S_OK ) { AfxMessageBox(_T("Error11")); return false; }
V>      hr = pInterleaving->put_Mode(INTERLEAVE_FULL);
V>      if( hr != S_OK ) { AfxMessageBox(_T("Error12")); return false; }
V>      LPCWSTR srcAvi = TEXT("c:\\Сердце лета.avi");
V>    hr = m_pGraph->RenderFile(srcAvi, NULL);
V>      if( hr != S_OK ) { AfxMessageBox(_T("Error13")); return false; }
V>    hr = m_pBuilder->FindInterface(&LOOK_UPSTREAM_ONLY, 0, m_pMuxFilter, IID_IMediaSeeking, (void **)&m_pMediaSeeking);
V>      if( hr != S_OK ) { AfxMessageBox(_T("Error14")); return false; }
V>    hr = m_pMediaSeeking->SetTimeFormat(&TIME_FORMAT_FRAME);
V>      if( hr != S_OK ) { AfxMessageBox(_T("Error15")); return false; }
V>      REFERENCE_TIME cur, stop;
V>    hr = m_pMediaSeeking->GetPositions(&cur, &stop);
V>      cur  = 10;
V>      stop = 50;
V>      if( hr != S_OK ) { AfxMessageBox(_T("Error16")); return false; }
V>    hr = m_pMediaSeeking->SetPositions(&cur, AM_SEEKING_AbsolutePositioning | AM_SEEKING_SeekToKeyFrame, &stop, AM_SEEKING_AbsolutePositioning | AM_SEEKING_SeekToKeyFrame);
V>      if( hr != S_OK ) { AfxMessageBox(_T("Error17")); return false; }
V>    if( m_pMediaControl->Run() != S_OK ) { AfxMessageBox(_T("Error18")); return false; }
V>      IMediaEvent   *pEvent;
V>      hr = m_pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);
V>      long EvCode = 0;
V>      // Have we received the EC_COMPLETE event?
V>      hr = pEvent->WaitForCompletion(INFINITE, &EvCode);
V>      // Stop the graph
V>      m_pMediaControl->Stop();
V>


V> Без рекомпрессии не получится. Кстати у меня сделано с рекомпрессией и работает очень быстро.
Re[8]: Как програмно вырезать кусок avi файла(на directshow
От: squid  
Дата: 10.05.07 05:28
Оценка:
Здравствуйте, vippavlo, Вы писали:

V>у меня получилось сегодня ночью мучился и решил проблему, так как я и думал, пришлось аудио мр3 кодером переганять, тоже очень быстро работает, но проблема в том, что почемуто если Seeking ставлю начальный не 0, то белеберда получается не знаю в чем проблема???((((


а можно ваш код посмотреть?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[9]: Как програмно вырезать кусок avi файла(на directshow
От: vippavlo Украина http://www.baptistm.info
Дата: 12.05.07 23:15
Оценка:
Здравствуйте, squid, Вы писали:

S>Здравствуйте, vippavlo, Вы писали:


V>>у меня получилось сегодня ночью мучился и решил проблему, так как я и думал, пришлось аудио мр3 кодером переганять, тоже очень быстро работает, но проблема в том, что почемуто если Seeking ставлю начальный не 0, то белеберда получается не знаю в чем проблема???((((


S>а можно ваш код посмотреть?


Все таки проблемы возникают, если видео не перекодировать.
Так что после всех усилий я все таки сделал с перекодировкой и видео и аудио.
Если етот код вы тоже хотит посмотреть, то скажите и я вам перешлю на емаил, а то большой, строчек 600 не хочется забивать форум
ICQ #469907496
Re[10]: Как програмно вырезать кусок avi файла(на directshow
От: squid  
Дата: 13.05.07 04:38
Оценка:
Здравствуйте, vippavlo, Вы писали:

V>Здравствуйте, squid, Вы писали:


S>>Здравствуйте, vippavlo, Вы писали:


V>>>у меня получилось сегодня ночью мучился и решил проблему, так как я и думал, пришлось аудио мр3 кодером переганять, тоже очень быстро работает, но проблема в том, что почемуто если Seeking ставлю начальный не 0, то белеберда получается не знаю в чем проблема???((((


S>>а можно ваш код посмотреть?


V>Все таки проблемы возникают, если видео не перекодировать.

V>Так что после всех усилий я все таки сделал с перекодировкой и видео и аудио.
V>Если етот код вы тоже хотит посмотреть, то скажите и я вам перешлю на емаил, а то большой, строчек 600 не хочется забивать форум

перекодировать и то и другое я умею. просто это совсем другое.... попробуйте вырезать что-то большое из фильма. и времени в десятки раз больше и качество теряется.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[11]: Как програмно вырезать кусок avi файла(на directshow
От: vippavlo Украина http://www.baptistm.info
Дата: 13.05.07 21:19
Оценка:
Здравствуйте, squid, Вы писали:

S>Здравствуйте, vippavlo, Вы писали:


V>>Здравствуйте, squid, Вы писали:


S>>>Здравствуйте, vippavlo, Вы писали:


V>>>>у меня получилось сегодня ночью мучился и решил проблему, так как я и думал, пришлось аудио мр3 кодером переганять, тоже очень быстро работает, но проблема в том, что почемуто если Seeking ставлю начальный не 0, то белеберда получается не знаю в чем проблема???((((


S>>>а можно ваш код посмотреть?


V>>Все таки проблемы возникают, если видео не перекодировать.

V>>Так что после всех усилий я все таки сделал с перекодировкой и видео и аудио.
V>>Если етот код вы тоже хотит посмотреть, то скажите и я вам перешлю на емаил, а то большой, строчек 600 не хочется забивать форум

S>перекодировать и то и другое я умею. просто это совсем другое.... попробуйте вырезать что-то большое из фильма. и времени в десятки раз больше и качество теряется.

Может совмесными усилиями мы доудем до истины
У меня практически получилось без перекодировки видео (аудио все равно приходилось перекодировать), но возникала такая проблема — получившыйся кусок файла, если запустить в любом проигрывателе воспроизводил только аудио, но стояло передвинуть на несколько секунд указатель, как начинало и видео проигрыватся, но отставало от аудио на секунд 3-4.
Может вы, с большым опытом чем у меня, знаете в чем может быть проблема, а то я только пару месяцев как занимаюсь директом
У меня уже возникла идея написать свой фильтр. Возможно слышали о Solveign AVI Trimmer, так компания-розработчик написала свои фильтры, чтобы нормально вырезать куски авишки Но для етого нужны хорошие знания...
ICQ #469907496
Re[12]: Как програмно вырезать кусок avi файла(на directshow
От: squid  
Дата: 14.05.07 04:15
Оценка:
Здравствуйте, vippavlo, Вы писали:

V>Здравствуйте, squid, Вы писали:


S>>Здравствуйте, vippavlo, Вы писали:


V>>>Здравствуйте, squid, Вы писали:


S>>>>Здравствуйте, vippavlo, Вы писали:


V>>>>>у меня получилось сегодня ночью мучился и решил проблему, так как я и думал, пришлось аудио мр3 кодером переганять, тоже очень быстро работает, но проблема в том, что почемуто если Seeking ставлю начальный не 0, то белеберда получается не знаю в чем проблема???((((


S>>>>а можно ваш код посмотреть?


V>>>Все таки проблемы возникают, если видео не перекодировать.

V>>>Так что после всех усилий я все таки сделал с перекодировкой и видео и аудио.
V>>>Если етот код вы тоже хотит посмотреть, то скажите и я вам перешлю на емаил, а то большой, строчек 600 не хочется забивать форум

S>>перекодировать и то и другое я умею. просто это совсем другое.... попробуйте вырезать что-то большое из фильма. и времени в десятки раз больше и качество теряется.

V>Может совмесными усилиями мы доудем до истины
V>У меня практически получилось без перекодировки видео (аудио все равно приходилось перекодировать), но возникала такая проблема — получившыйся кусок файла, если запустить в любом проигрывателе воспроизводил только аудио, но стояло передвинуть на несколько секунд указатель, как начинало и видео проигрыватся, но отставало от аудио на секунд 3-4.

стганно.

V>Может вы, с большым опытом чем у меня, знаете в чем может быть проблема, а то я только пару месяцев как занимаюсь директом


да я бы не сказал что у меня большой опыт. я на это неделю потратил и бросил. типа нет такой фичи.

V>У меня уже возникла идея написать свой фильтр. Возможно слышали о Solveign AVI Trimmer, так компания-розработчик написала свои фильтры, чтобы нормально вырезать куски авишки Но для етого нужны хорошие знания...


я вот думаю что для кусков именно авишки лучше в сторону vfw глянуть. там вроде и проще и можно. мне же было актуально кусок avi перегнать скажем в mkv без пересжатия...

еще вариант — DES как товарисч вверху описал.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.