2017-12-29 28 views
1

즉석에서 원격 WebM 파일을 MP4로 변환하려고합니다. 이것은 디스크에 아무 것도 쓰지 않고 일어난다. 또한 가능한 한 빨리 결과를 스트리밍 할 수 있다면 좋을 것입니다.즉시 WebM을 MP4로 변환

이것은 실제 전환이없는 내 플라스크 기능이므로 스트리밍에 대한 아이디어를 얻을 수 있습니다.

@app.route("/stream/mp4") 
def as_mp4(): 
    url = "http://video.webmfiles.org/big-buck-bunny_trailer.webm" 
    r = requests.get(url, stream=True) 

    def stream(): 
     # convert it here 
     for chunk in r.iter_content(chunk_size=1024): 
      yield chunk 
     # end for 
    # end def 
    return Response(stream(), mimetype="video/mp4") 
# end def 
+0

이진 스트림에서 ffmpeg 및 pipe를 사용할 수 있습니다. – user1767754

+0

'ffmpeg' URL에서 직접 읽어서 stdout에 쓰는 것이 좋습니다.하지만 검색 가능한 출력이 필요하기 때문에 MP4 형식에 문제가있을 수 있습니다. Matroska (MKV) 형식으로 작동해야합니다. – mhawke

답변

1

예상 한 결과를 얻지 못할 수도 있습니다. MP4는 raw/chunked 기본 스트림 (mdat 상자에 있음)을 구문 분석하는 데 사용되는 "색인"(moov 상자라고 함)을 사용합니다. 이 인덱스에는 각 프레임의 길이와 크기가 포함되기 때문에 마지막 프레임이 처리 될 때까지 인덱스를 사용할 수 없습니다. 따라서 클라이언트에 데이터를 보내더라도 클라이언트는 전체 내용을 수신 할 때까지 비디오를 재생할 수 없습니다.