2012-05-13 3 views
2

나는 며칠 동안 이것을 검색해 왔지만 아무 것도 대답하지 못하거나 나를 위해 일하는 것 같지 않으므로 어리석은 질문을하면 용서해주십시오. 또는 다른 곳에서 답을 얻은 것처럼 보인다.시스템에 설치된 독점적 인 코덱을 사용하여 AVI 파일을 편집/디코딩

예를 들어 Windows Media Player에서 파일을 재생할 수 있도록 현재 컴퓨터에 설치된 GMP4 비디오 코덱을 사용하여 AVI 파일을 인코딩했습니다. 내가 뭘 하려는지 두 개의 비디오 파일을 함께 꿰맬 수 있도록 편집 목적으로 파일을 열거 나 디코딩하는 것입니다. 동일한 형식으로 출력하지 않아도되지만 편집하기 위해 열어 프레임을 가져온 다음 표준 형식으로 출력 할 수 있습니다.

내가 얻는 문제는이 형식을 위해 만들어진 DirectShow 필터가 없기 때문에 그것을 사용하여 열지 못한다는 것입니다. (너무 깊게 작업하지는 않았지만 모든 샘플이 비디오를로드하지 못합니다. 파일). FFMPEG는 파일을 읽으려고하는데, 헤더가 틀렸다는 것을 나타내지 만, 어쨌든 그것을 읽으려고 할 것이고, 나는 GMP4 코덱이 필요하다는 것을 알지 못한다. 앞에서 언급했듯이 특정 코덱을 설치했지만 FFMPEG가이를 인식하지 못하거나 액세스하지 못하는 것 같습니다.

시스템 설치 코덱을 사용하여 비디오 프레임을 디코딩 할 수있는 것이 있습니까? Windows Media Player가 무언가를 할 수 있다는 것이 이상하게 보입니다. 그러나 프로그래밍 방식으로 반복 할 수는 없습니다. 나는 C++이나 C#에 국한되지 않고, C#이 선호 언어가 될 것입니다.

덕분에 모든, 알렉스

답변

4

나는 같은 문제로 하루 종일 보냈다. 해결책은 AVISynth를 설치 한 다음 시스템에 VfW 코덱이있는 AVI 파일을 ffmpeg로로드 할 수 있습니다. ffmpeg 대신 AVI 입력 파일을 전달하는 대신 AviSource ("your-avi-filename")가 포함 된 한 줄의 .avs 파일을 만들고 .avs 파일 이름을 ffmpeg로 전달하십시오.

당신은 H263 형식으로 독점 비디오 코덱에 input.avi을 변환 할 가정 (가정하여 귀하의 input.avi가 지원되는 H263 프레임 크기) :

echo AviSource("input.avi") > input.avs 
ffmpeg -i inputs.avs -vcodec h263 output.avi 
+0

놀라워요! 그거야. 고맙습니다! –

0

누누가 좋은 대답을 가지고 있지만, 당신은 명령 줄 변환을 피하기 위해, 당신은 AFW 코덱, FFMpeg 코덱 또는 DShow 코덱 (일부 CCTV의 DVR은 DShow에서 인코딩 할)에 액세스하는 AForge.Net C# 라이브러리를 사용할 수 있습니다.

또한 Windows Media Player를 C# 개체로 열고 프레임을 가져 오는 방법이 있습니다. 더 많은 정보를 원하시면 저에게 이메일을 보내십시오. 비슷한 프로젝트를 진행하고있는 것 같습니다.

+0

흠. 사실 커맨드 라인 컨버트는 내가 원하는 것이 아니지만 FFMpeg dll과 통합하여 동일한 작업을 수행하는 데 사용할 계획입니다. 아직이 작업을 수행 할 기회가 없었지만 AVISource 지원이 컴파일 된 DLL로 상당히 간단해야합니다.이 시점에서 필자는 동적 스트림 (필요할 경우) 또는 AVISource를 다음과 같이 만들 수 있습니다. 열려면 FFMpeg로 전달하십시오. 그것은 어쨌든 계획입니다. 커맨드 라인은 제 CCTV에서 완벽하게 작동했습니다. 당신의 제안을 염두에 두겠다. 일단 성공하면 업데이트하라! –