longda
그는 물었다 8년 전
73

HTML5 - 얼마나 많은 스트리밍하려면 .mp4 파일?

39 m, 아주 기본적인 설정 할 수 있는 페이지를 로드하는 i& .mp4 html5 비디오 즉 20MB. 하는 것이 아니라 전체 있지만브라우저에 것으로 보인다 다운로드하십시오 첫 부분에 있는 비디오 스트리밍 재생 및 미삭.

이 게시물로의 가장 가까운 I& # 39 건, ve 중 찾은 검색:. 두 손을 통해 차별화된 모습을 보여 괜찼습니다 브레이크 및 데이터 Go Round 찾았다.

이 경우, 어떤 방법에 대한 아이디어를 it& # 39 의 가능한가?

다음은 코드 I& # 39, m 사용:

<video controls="controls">
    <source src="/video.mp4" type="video/mp4" />
    Your browser does not support the video tag.
</video>

답변 2 개

  1. [보장하는 '무브' (메타데이터입니다) 는 'mdat 전에' (오디오 / 비디오 데이터를)] (http://multimedia.cx/eggs/improving-qt-faststart/). 이는 빠른 start&quot eschweiler-clarke "; 또는 &quot, 웹 optimized". 예를 들어, [수동 브레이크, 웹 Optimized&quot &quot 있다. 확인란] (https://trac.handbrake.fr/wiki/OutputSettings) 및 [ffmpeg] (http://www.ffmpeg.org/ffmpeg-formats.html # 옵션 5) 및 [이브코네프] (https://libav.org/avconv.html # mov_002c-mp4_002c-ismv) 은 출력입니다 모프플라그스 faststart '옵션'.
  2. 있도록 웹 서버가 보고 올바른 콘텐트 유형 (video/mp4).
  3. [확인하기 위해 웹 서버가 구성되었음 경배하되 바이트입니다 maxvalorarray 요청] (https://developer.apple.com/library/safari/ # documentation/AppleApplications/Reference/SafariWebContent/CreatingVideoforSafarioniPhone/CreatingVideoforSafarioniPhone.html # //apple_ref/doc/uid/TP40006514-SW6).
  4. 웹 서버 또는 deflate 압축 적용 가능한지 위에 있는 mp4 파일 압축을 gzip 아니다.

I 를 사용하여 웹 서버에 전송되는 헤더도 확인할 수 있습니다 '컬' 또는 '에 따라 http://yoursite/video.mp4 개발자 도구를 사용하여 브라우저의 ([크롬] (https://stackoverflow.com/a/4423097/112212), [Firefox] (https://stackoverflow.com/a/15191856/112212)) (페이지를 다시 로드하십시오 캐시됩니다 경우). Http 응답 헤더를 넣어야 한다고 콘텐트 유형: video/mp4 및 동의하십시오 범위: , Content-Encoding: 바이트입니다 않습니다.

Community
longda
그는 6년 전 댓글을 달았습니다
0

39, 내가 haven& 좋은 답을 찾을 수 없는 온라인. 응용 프로그램 또는 쉬운 방법이 있는지 확인하기 위해 현재 그 위치는 무브 메타데이터입니다 파일의?

mark4o
그는 6년 전 댓글을 달았습니다
2

@longda: mp4 파일 구조 l 스매시!! 포함시키십시오 명령줄이 유틸리티와의 보여줄 수 있는 '', '-t' 및 '-' mp4file 덤프합니다 mp4v2 박스트 험퍼 파슬리 () 이다.

longda
그는 6년 전 댓글을 달았습니다
3

애디슨에게 (주로 같도다라고 I& # 39, m 멍청하니까) 를 통해 같은 전화하시기 명령행을 있습니다. '애텀치파슬리 &lt filename>; - T ' (옵션 gnu. 끝으로). 다시 한 번 모든 도움말에서는 @mark4o!

Kai Noack
그는 5년 전 댓글을 달았습니다
0

'From my 테스트, 빠른 start&quot &quot 있다고 생각한다. 또는 &quot, 웹, '옵션을 통해 optimized&quot 못하도록 할 수 있지만 파일. 비록 내 서버에 구현해줍니다 바이트입니다 범위, 지원, mp4 를 사용하여 재생할 때, 플레이어는 진행율 표시줄에는 비드로이스 끝을 중됩니다 작업 중.

mark4o
그는 5년 전 댓글을 달았습니다
1

@Matheretter: 빠른 start&quot "; 또는 &quot, 웹 optimized&quot. 그냥 있다는 '무브' 가 아닌, 처음부터 끝까지 사용하여 파일을 다운로드할 수 있는 범위 전체를 전에 요청률 바이트입니다 있다. 이로 인해 작동하지 하는 경우 그 범위, 즉 취급료 바이트 코드에 버그가 확인할지 요청이 있는 경우 '무브' 는 사용되지 않을 것이라고 끝에 (대표 시점에 이미 알고 있는 것이 필요하다고 바이트입니다 다운로드했습니다 전체 파일). 내가 보고 있는 질문은 다른 환경에서 작성한 사용자 정의 php 코드 엔드입니다.

Sisyphus
그는 4년 전 댓글을 달았습니다
0

이 보다 더 나은 출력 형식을 mp4file 애텀치파슬리

mark4o
그는 4년 전 댓글을 달았습니다
0

@caffinatedmonkey: # 1 과 # 3 단, 링크는 이미. 컨텐츠 유형에 대한 참조를 같은 [RFC 7231] 는 HTTP 헤더 (https://tools.ietf.org/html/rfc7231 # section-3.1.1.5); 그게 무슨 말이지?

0xcaff
그는 4년 전 댓글을 달았습니다
0

그래, 내가 찾던 더 많은 것 같아요, t # 39 한 관계자는 그러나 좁히어 isn& 사양명세.

Uri Meirav
그는 3년 전 댓글을 달았습니다
0

좋은 답변 @mark4o! 참고로 이 싶었죠 스트리밍 방식으로 호출됨 프로그레시브 다운로드 - 이런 사람이 더 할 건가. 주요 diff 파일을 사용하는, HLS variable bit rate) 은 스트리밍 hls 지원되지 않는 대신 파일을 mp4.

Hamed_gibago
그는 2년 전 댓글을 달았습니다
0

39, ve 기록되었으므로 @mark4o I& 내 웹 서버 및 이 문제가 없다. 비디오를 재생할 때 저는 데스크탑 브라우저 it& # 39 는 요청이 있더라도, s, t show) 에 # 39 는 gzip 파일 및 컨텐츠 인코딩입니다 압축됨 하지만 won& 있지만브라우저에. 나는 모든 모바일 브라우저 없이 비디오를 재생할 경우에는 압축을 gzip 보내야 한다.

mark4o
그는 2년 전 댓글을 달았습니다
0

@Hamed_gibago: 함께 컨텐츠 인코딩입니다: gzip, 적용할 수 없게 될 수 있도록 하고 있는 조이퍼드 컨텐트에서 바이트입니다 범위를 위한 비디오. 비디오 게임을 시작할 수 있을 것이라고 해도, 최소한 수 없을 때까지 모든 내용을 처음부터 말라실로 타겟으로 다운로드되어 포지셔닝하십시오 압축되지 않은. 또 자신의 것을 사용하는 방법을 사용하여 다시 압축하려면 압축됨 mp4 이미 하고 있어 시간 낭비 및 gzip 일반적으로 더 할 수도 있습니다. Gzip 압축 합니다 그래서 그러하너라 비활성화합니다 mp4 파일 (있지만브라우저에 상관없이).

Hamed_gibago
그는 2년 전 댓글을 달았습니다
0

자세한 답변됨 @mark4o 주셔서 감사합니다. 그래서 저는 mp4 의 gzip 비활성화합니다 extentions. 다른 동영상 어때? 들어보겠소 오퍼링에 변환 및 저장 솔리드로 mp4 내 NAS 와 그냥 클라이언트뿐 업로드하십시오 그냥 mp4? 다른 확장명은 충족하거나 솔리드로 전송하십시오 gzip?

Hadi hashemi
그는 2년 전 댓글을 달았습니다
0

내 비디오 파일을 웹 최적화되었는지 도왔으매 양실장 버퍼, t # 39 이 couldn& 않았다. 멋진 당신 덕분에.

이 솔루션은 웹 API 나 C # 에서 (MVC) 를 만드는 데 사용되는 컨트롤러거 될 수 있는 비디오 파일을 바이트입니다 범위 (부분 요청률). 부분 요청률 있지만브라우저에 허용하시겠습니까 만 다운로드 많이 비디오로 아닌 전체 비디오 다운로드 할 수 있어야 합니다. 따라서 훨씬 더 효율적이다.

참고 이 때만 최근 버전.

var stream = new FileStream(videoFilename, FileMode.Open, FileAccess.Read , FileShare.Read);

var mediaType = MediaTypeHeaderValue.Parse($"video/{videoFormat}");

if (Request.Headers.Range != null)
{
    try
    {
        var partialResponse = Request.CreateResponse(HttpStatusCode.PartialContent);
        partialResponse.Content = new ByteRangeStreamContent(stream, Request.Headers.Range, mediaType);

        return partialResponse;
    }
    catch (InvalidByteRangeException invalidByteRangeException)
    {
        return Request.CreateErrorResponse(invalidByteRangeException);
    }
}
else
{
    // If it is not a range request we just send the whole thing as normal
    var fullResponse = Request.CreateResponse(HttpStatusCode.OK);

    fullResponse.Content = new StreamContent(stream);
    fullResponse.Content.Headers.ContentType = mediaType;

    return fullResponse;
}

Chris
James Woodall
그는 4년 전 댓글을 달았습니다
2

이 대답은 간단하고 핸들을 아주 단순해졌습니다 "라고 말했다. 완벽하게 작동됨