2017-11-08 15 views
0

원격 웹 사이트에서 비디오의 스크린 샷을 얻으려면 ffmpeg -ss $TIME -i $URL -frames:v 1 -filter:v $FILTER file.jpg -v trace을 실행하면 일반적으로 매우 빠르게 실행됩니다. 그러나 다른 웹 사이트의 동영상은 더 오래 실행됩니다.ffmpeg가 평상시보다 느리게 재생되는 이유는 무엇입니까?

특정 웹 사이트의 모든 비디오는 매우 느립니다. 필자는 ffmpeg가 거의 즉각적으로 작동하는 웹 사이트 (0.5 초)와 웹 사이트가 매우 느리게 작동하는 웹 사이트 (15 초)에서 각각 3-4MB 인 두 개의 비디오를 비교했습니다.

슬로우 비디오 http://pastebin.pl/view/raw/4df9fb06에 대한 추적 출력은 다음과 같습니다. 그리고 여기에 빠른 비디오 http://pastebin.pl/view/raw/4b590932에 대한 추적 출력이 있습니다.

하나의 비디오가 다른 모든 비디오에 비해 왜 그렇게 느린 지 알 수 있습니까? 내가 실행 한 ffmpeg 명령은 위와 두 비디오에서 모두 동일합니다. 어떻게 속도를 높일 수 있습니까?

느린 비디오를 다운로드하는 데 몇 초가 빠르지 만 ffmpeg 명령이 두 파일 사이에 큰 차이를 보여 주어야한다고 생각하지 않습니다.

+0

아마도 http 범위 요청을 지원하지 않으므로 전체 동영상을 다운로드해야합니까? – rogerdpack

답변

2

"빠른 비디오"는 인덱스가있는 일반 MP4입니다. "느린 비디오"는 샘플 인덱스가 파일 전체에 분산되어있는 DASH으로 포맷 된 조각화 된 MP4입니다. 찾으려는 샘플을 찾으려면 ffmpeg가 인덱스를 구문 분석해야하므로 전체 파일이 아니라면 훨씬 더 많이 다운로드해야합니다.

+0

브라우저에서 "느린 비디오"mp4 파일 URL에 액세스하면 재생이 시작되기까지 시간이 오래 걸립니다. "빠른 비디오"URL을 사용하면 거의 즉시 스트리밍을 시작합니다. Chrome 브라우저의 네트워크 탭에서 빠른 동영상은 스트리밍을 시작하는 206 HTTP 요청을 표시하므로 응답이 커지고 동영상이 재생되기 시작합니다. 그러나 느린 동영상의 경우 재생 시작하기 전에 수백 개의 작은 HTTP 요청 (예 :'Range : bytes = 57540608-62610843' 다음에'Range : bytes = 57769984-62610843')이 있습니다. DASH가 작동하는 방식인가요? 아니면 무엇인가 빠르게 할 수 있습니까? – user779159

+0

브라우저가 대시 (DASH)를 처리하는 방법에 대해서는 잘 모릅니다. – Mulvya