2014-02-26 4 views
1

ffmpeg를 사용하여 내 서버에 mp4 파일을 만듭니다. 또한 moov 원자를 앞쪽으로 옮길 수 있도록 qt fast start를 사용하려고 시도하므로 스트림이 전달됩니다. 나는 행운을 빌어 인터넷 전체를 수색했다. ffmpeg가 비디오 및 오디오 데이터를 스트림으로 덤핑하는 동안 내 비디오/오디오를 mp4 버퍼 유형 파일에 넣은 다음 재생할 수 있습니까? 요점은 내가 카메라에서 스트리밍하려고하고 안드로이드는 무시 무시한입니다 ... 나는 내 rtsp Mp4를 만들 수있는 방법을 계산하려고 했으므로 iOS와 안드로이드 지원 mp4를 모두 알고 있습니다.qt 빠른 시작 및 ffmpeg을 사용하여 라이브 mp4 파일 생성

이야기의 요점 : 내 mp4 컨테이너에 계속 카메라 피드를 제공하고 고객이 볼 수있는 파일을 계속 재생할 수 있습니다.

아무쪼록 잘 부탁드립니다.

+0

"빠른 시작"(점진적 다운로드를위한 QuickTime 용어)과 RTSP (클라이언트가 스트리밍 서버를 명령 할 수있게하는 프로토콜)가 혼합되어 있습니다. 프로그레시브 다운로드는 인코딩이 완료 될 때만 moov 아톰을 쓸 수 있기 때문에 도움이되지 않습니다. 카메라에서 스트리밍하려면 스트리밍 서버가 필요합니다. – Duvrai

+0

@Duvra 완전히 차이점을 이해합니다. 필자가 알아야 할 것은 FFmpeg가 여전히 rtsp 스트림을 인코딩했기 때문에 mp4에서 읽는 방법이 완전히 완료되기 전에 읽는 것입니다. – Dnaso

+0

내 잘못으로, 질문을 잘 읽지 못했습니다. 어쩌면 당신은 약간의 질문을 명확히하고 몇 단락을 사용할 수 있습니다. 내가 지금 알기에, 당신은 rtsp 스트림을받는 리눅스 박스를 가지고있다. 1) 빠른 시작 파일과 2) 실시간 스트림을 출력하고 싶습니까? – Duvrai

답변

1

라이브 스트림을 게시 할 수 있으며 스트림이 끝나면 점진적 다운로드를 게시 할 수 있습니다.

FFmpeg에서 라이브 스트리밍을하고 스트림을 두 번 인코딩하지 않고 동시에 파일에 저장하면 Tee 의사 믹서를 사용할 수 있습니다. 이런 식으로 뭔가 :

ffmpeg \ 
    -i <input-stream> \ 
    -f tee "[movflags=+faststart]output.mp4|http://<ffserver>/<feed_name>" 

업데이트 : 당신은 직접 stream a fragmented mp4에 시도 할 수 있습니다.

업데이트 2 : 웹 서버를 사용하여 파일을 제공 할 때

ffmpeg -i input -frag_duration 1000 stream.mp4 
  • 일반적으로, 그것은 파일 크기를 알고 싶은 것, 너무 :

    • 는 조각난 MP4 만들기 파일 크기를 모르더라도 서비스를 제공하려면 웹 서버가 Chunked Transfer Encoding으로 구성되어야합니다.

  • +0

    나는 내가 그 일을 할 수 있음을 안다. 내가하고 싶은 것은 실시간으로 할 수있는 방법을 찾아내는 것입니다. 예를 들어 AXIS 카메라와 dlink 카메라를 사용하면 mp4를 통해 캠 (실시간)에서 스트림을 스트리밍 할 수 있습니다. 그들이 그것을 할 수 있다면 그것을 할 방법이 있어야합니다. – Dnaso

    +0

    @Dnaso 업데이트 2에서 제안한대로 분할 된 mp4 및 http 서비스와 함께 청크 분할 전송 인코딩을 시도 했습니까? – Duvrai

    +0

    링크를 가르쳐 주시겠습니까? 나는 그것을 듣지 않았다 – Dnaso