2012-04-22 4 views
2

다른 소스의 비디오를 로컬 하드 디스크로 다운로드 할 수있는 mac 응용 프로그램을 작성 중입니다. 지금까지 훌륭하게 작동하지만 사용자가 다운로드하는 동안 해당 비디오를 재생할 수있게하고 싶습니다. QTKit에 대한 문서를 살펴보면 QTMovie 객체에 동영상 데이터를 부분적으로 공급할 수있는 방법을 찾지 못했습니다.다운로드하는 중에 QuickTime 동영상을 재생하는 방법은 무엇입니까?

QTKit, AVFoundation 또는 다른 시스템 프레임 워크를 사용하여 구현할 수있는 방법이 있습니까? 나는 그것을 위해 ffmpeg 또는 다른 제 3 자 라이브러리를 가져 오는 것을 피하고 싶습니다.

+0

이것은 동영상 파일의 형식에 따라 달라집니다. 일부 형식은 스트리밍되도록 설계되었지만 다른 형식은 될 수 없습니다. –

+0

@Rob, 일부 형식을 스트리밍 할 수 없다는 것을 알고 있습니다. 다운로드하려는 대부분의 영화는 스트리밍 가능한 형식이어야합니다. 그렇지 않은 경우에는 play-while-downloading 기능을 비활성화 할 것입니다. 불가능한 작업을 수행 할 방법을 묻지 않습니다 (스트림 할 수없는 형식의 동영상 스트리밍). – Sven

답변

2

아마도 QTKit 대신 AV Foundation 프레임 워크를 사용해야합니다. 가장 먼저 할 일은 AV Foundation Programming Guide입니다. 가이드는 iOS를 많이 언급하지만 AV Foundation 기능은 10.7부터 OS X에서 사용할 수 있습니다.

+0

힌트를 보내 주셔서 감사합니다. AVFoundation이 Mac에서도 사용 가능하다는 것을 몰랐습니다. 그러나 이것은 필요한 기능을 갖고있는 것 같지 않습니다. – Sven

+0

Sven, 링크 된 페이지의 아래쪽으로 스크롤하면 AVPlayer 객체를 사용하여 에셋의 재생을 제어하는 ​​방법과 AVPlayerLayer 객체를 사용하여 비디오를 표시하는 방법에 대한 섹션 링크 "재생"이 있습니다. 그게 네가 필요로하는 것이 아닌가? ?? 해당 클래스가 현재 다운로드중인 파일/자산을 읽을 수 있는지 여부를 모릅니다. –

+1

오, 로컬 파일 시스템이나 스트림 URL에서 영화를 재생하는 것은 문제가되지 않습니다. 다운로드하는 동안 영화를 재생하는 방법에 대한 정보가 필요합니다. 이상적으로 나는 NSData 객체를 네트워크에서 수신 할 때 그것을 전달해야합니다. – Sven

3

문제는 QuickTime 동영상이 작동하는 방식에 있습니다. 스트림 기반 파일이 아니기 때문에 한 번에 정보를 청크에 공급하는 것이 일반적으로 유용하지 않습니다. 대신 원자 기반 파일이고 원자는 순서에 관계없이 허용됩니다.
QuickTime 무비가 어떻게 생성되었는지에 따라 중요한 정보를 제공하고 미디어 데이터를 해석하는 데 필요한 "moov"아톰은 파일의 끝에있을 수 있습니다. 끝나면 영화가 완전히 다운로드 될 때까지 영화를 재생할 수 없습니다. moov 데이터가 처음에있는 경우 (예를 들어 누군가 "인터넷 준비"옵션을 사용하여 동영상을 저장 한 경우) QuickTime에서 즉시 파일 재생을 시작할 수 있습니다.

MPG 전송 스트림과 같은 형식 만 스트리밍 또는 "점진적 다운로드"용으로 설계되었습니다.

+0

프로그레시브 재생이 작동하는 방법에 대한 자세한 내용은 [프로그레시브 재생 : 아톰 스토리] (http://fabiensanglard.net/mobile_progressive_playback/index.php)를 읽어야합니다. – 0xced

+0

고마워요,하지만 도움이되지 않습니다. 대부분의 영화 파일은 스트리밍을 준비해야하므로 문제가되지 않습니다. 내가 필요한 것은 그것들을 플레이하는 API이다. – Sven

관련 문제