2013-02-06 6 views
0

다음은 두 개의 비디오를 결합하는 코드입니다. 프로그램을 실행하면 두 개의 비디오를 결합하고 폴더에 비디오를 결합합니다. 연결된 비디오 크기가 맞아야합니다.결합 작업 후 비디오가 완전히 재생되지 않음

하지만이 동영상을 재생할 때 그것은 WMP에서 비디오의 첫 번째 역할을하지만 난 VLC에서 동영상을 재생할 때 비디오의 두 번째 부분을 담당합니다.

public void JoiningVideo() 
{ 
    string j = @"D:/test2"; 

    string outputpath = @"D:/test3/beforeEventab1.wmv"; 
    DirectoryInfo di = new DirectoryInfo(j); 
    FileStream fs; 
    fs = new FileStream(outputpath, FileMode.Append); 
    foreach (FileInfo fi in di.GetFiles(@"*.wmv")) 
    { 
     byte[] bytesource = System.IO.File.ReadAllBytes(fi.FullName); 
     fs.Write(bytesource, 0, bytesource.Length); 
    } 
    fs.Close(); 
} 

답변

0

각 비디오 파일은 "header"으로 시작됩니다.

파일의이 부분에는 길이 등에 대한 정보가 포함되어 있습니다.
비디오 파일을 분리하여 사용하려면 헤더를 병합 된 두 부분에 대한 정보가 들어있는 새 헤더에 병합해야합니다. 두 비디오가 서로 적합하다는 것. (*)
그렇지 않으면 비디오가 유효한 파일이 아닙니다. 때문에 WMP와 VLC의 디코더의 차이에

, 하나는 최초 인식하고 다른 하나는 두 번째 파일을 인식합니다.
당신은이 프로그램이 심지어이 '부패한'파일을 재생한다는 점에서 운이 좋을 수 있습니다! ;)

 

그냥 검색 엔진 당신을 위해 작동해야 솔루션에 대한 merge wmv를 물어!

이 적용되지 않는 경우 (*)가

  • 같은 형식이 필요 두 개의 비디오 병합
    (예 : 해상도, 프레임 레이트, 비트 레이트)
    그들 중 적어도 하나는 있어야한다 다른 동영상과 일치하도록 변환했습니다.
  • 동영상을 함께 붙여야합니다. 다른 동영상에 데이터를 추가하는 것으로 충분하지 않습니다.
    각 비디오는 헤더로 시작합니다. 이 헤더는 새 (합쳐진) 비디오에 대한 정보로 구성되어야합니다.
    또한 원본 이미지 데이터를 단순히 추가 할 수 없습니다. 모든 이미지는 비디오의 다음 이미지에 맞추는 퍼즐 조각과 같습니다. 전환은 창조되어야하는 퍼즐의 새로운 조각과 같습니다. 작동 전환을 얻으려면 두 번째 파일 전체를 변경/재정렬해야 할 수도 있습니다.

전 전문가가 아니지만이 절차는 비디오의 각 유형 (MPEG, WMV, ..)마다 다릅니다. 가장 좋은 방법은이 목적으로 기존 라이브러리를 사용하는 것입니다.

+0

에는 내가 헤더와 방법 모두 수있는이 u는 내가 감사 할 것입니다 주었다 코드의 일부 변경을 병합하는 방법에 대해 잘 모릅니다없고, 그것은 내 문제 – Shahzaman

+0

내가 질수 없음을 해결할 수 있습니다. 위에서 언급 한 것처럼 두 개의 동영상을 병합하는 것이 훨씬 더 복잡합니다. 미안합니다. 나는 나의 대답을 확장 할 것이고, 거기에 쓰는 것이 더 쉽다. – Nippey

관련 문제