2013-05-08 1 views
0

특정 데이터를 비디오 파일 형식으로 내보내는 옵션이있는 Windows Store 앱이 있습니다. 내 응용 프로그램은 C#이지만 인코딩 자체는 David Catuhe가 this sample에서 수정 한 C++ 라이브러리에 포함되어 처리되며 제대로 작동합니다. 문제는 내가 발견 한 사실은 인코딩 프로세스가 고품질로 실행될 때 오랜 시간이 걸릴 수 있으며 화면이 표면 RT에서 시간 초과되거나 사용자가 앱을 전환하면 프로세스가 실패한다는 것입니다. 나는 실패의 근원이 무엇인지를 확신하지 못하고 그것을 검증하려고 노력하고있다. 그러나 프로세스가 변경없이 정지 상태에서도 살아남을지라도, 나는 비석을 다루는 방법을 모르고있다.앱에서 비디오를 인코딩하는 동안 일시 중지 및 종료 문제를 완화하십시오.

특정 상황에서 인코딩이 중단 되어도 사용할 수 있습니다. 내가 싫어하는 것은 앱이 어떤 이유로 사라지면 처음부터 다시 시작해야한다는 것입니다.

내가 알 수있는 한 비디오를 마무리하지 않고 간단히 스트림을 닫고 나중에 다시 기록 할 수는 없습니다. 이 점에 비추어 볼 때 몇 가지 옵션을 고려해 봤지만 실제로 작동 할 수있는 기능이 있는지는 알 수 없습니다. 나는 어떤 방향에 대해 매우 감사 할 것입니다.

1) 가능한 경우 스트림을 닫고 나중에 다시 시작하여 방금 중단 한 부분부터 다시 시작하는 것이 좋습니다. 지금이 작업을 수행하지 못했지만 작동해야한다면 알기를 원합니다.

2) 시작부터 또는 툼 스톤 때만 인 코드 프로세스를 백그라운드 작업으로 푸시합니다. 하지만 내 앱에서 백그라운드 작업으로 열린 스트림을 전달할 수있는 방법이 있습니까? 그렇지 않다면 적어도 앱이 포 그라운드에있을 때 CPU/메모리 제한없이 앱의 백그라운드 작업을 실행할 수있는 방법이 있습니까? 일반적으로 배경 작업을 묶는 매우 엄격한 제한 내에서 전체 인코딩을 수행하는 데 수 년이 걸릴 것이기 때문입니다.

3) 앱이 전경에있는 동안 비디오의 세그먼트를 점진적으로 렌더링 한 다음 끝에 부품을 결합합니다. 이렇게하면 인코딩이 중단되면 가장 최근 세그먼트에서 픽업 할 수 있습니다. 내 독서에서 이것은 이론적으로 가능해야한다 (나는 비디오를 다시 인코딩 할 필요가없는 재 추출의 범주에 속한다고 생각한다). 그러나 C++조차도이 시나리오를 다루는 샘플을 찾지 못했습니다 (경험이 거의 없습니다). 트랜스 코드 API는 여러 샘플을 결합하는 것을 다루지 않습니다. SharpDX를 사용하여 살펴 보았지만 사용하고 싶은 미디어 솔루션 (미디어 세션)은 데스크톱 응용 프로그램에만 공개됩니다.

4) 워크 플로를 데스크톱 또는 서버 앱으로 푸시합니다. 문제는이 작업을 Windows RT에서 실행 (바탕 화면이 꺼져 있음)하고 현재 고객을 대신하여 집중적 인 작업을 처리 할 수있는 서버를 지원할 수있는 비즈니스 모델이 없다는 것입니다.

그럼 내 최고의 질문은 무엇입니까? 정지 상태에서 내 스트림을 고정시킬 방법이 있습니까? 그리고 제가 의심 스럽지만 옵션 # 3이 최선의 방법이라면, 샘플이나 가이드를 어떻게 할 수 있는지 알고 있습니까? 분명히 C# 옵션이 매우 선호 될 것이므로 하나를 간과하고 싶습니다. C++은 괜찮을 것입니다 (Catuhe 씨의 견해와 같이 저에게이 사실을 알리는 것처럼).하지만 꽤 구체적인 지침이 필요합니다. MSDN 설명서는 너무 높은 수준이어서, 어셈블 할 필요가있는 부분과 필요로하는 부분에 대해서만 막연한 생각을 가지고 있습니다. 실제로 C++로 실제 프로그램을 작성하는 방법은 말할 것도 없습니다.

제공되는 도움을 주시면 매우 감사하겠습니다.

+0

# 4가 메트로 앱에 가장 적합한 선택이라고 제안합니다. backgrounduploader를 사용하면 앱이 일시 중지 된 경우에도 소스를 클라우드에 푸시 할 수 있습니다. 기존의 클라우드 솔루션을 찾을 수 있으므로 비디오 인코딩을위한 자체 서버 인프라를 만들 필요가 없습니다. – Denis

+0

감사합니다 @Denis. 우리가 인코딩하고있는 내용은 비트 맵과 동적으로 생성 된 벡터 정보의 조합으로 경제의 제약 속에서 작동 할 수있는 상품 솔루션을 찾는 것을 어렵게 만듭니다. Azure와 같은 일부 범용 컴퓨팅 솔루션을 사용해야한다고 생각합니다.하지만 가격이 비싸게 느껴질 수 있습니다. 우리가이 길로 갈 필요가 있다면 아마도 ... 충고에 감사드립니다! –

답변

0

불행히도 내가 대답으로 줄 필요가 있기 때문에 불행히도 단지 평판을 낼만한 점수가 충분하지 않습니다.

# 3과 # 4의 조합을 고려해 볼 수 있습니다.앱 내 세그먼트로 렌더링 한 다음 세그먼트를 업로드하여 함께 바느질 할 수 있습니다. 이렇게하면 상품 솔루션을 사용하여 최종 산출물을 만들 수있는 영역으로 돌아 가게됩니다.

관련 문제