まず、リンゴとバナナを比較します。mp3はコーデックで、mp4はコンテナです。
mp4ファイルを「ストリーム」するだけであれば、デコーダーには何を見ているかの手がかりを与えずにバイナリデータをストリームするだけです。それはHLSとCoが入っているところです。
あなたが言及しましたが、mp3をストリームするためには、Icecastやrtmp Serverのような追加が必要です。 AVC/AACをストリーミングする場合も同じです。 DASH、HLS、rtmp、rtsp、mpeg2トランスポートストリームを含むudpをコンテナとして使用し、ストリームが準備完了です。 (ほとんどのものは何とかmpeg2tsに基づいています)
問題はクライアント側の要件です。 HTML5と互換性がありクロスプラットフォームであることが気に入っている場合、現在は基本的にライブストリーミングにのみHLSまたはDASHを使用できます。
ReceiverアプリケーションがFlashまたはHTML5と異なる場合、追加のStreaming Serverの使用を暗示しない最も簡単な方法の1つは、mpeg2トランスポートストリームのUDPストリーミングを使用することです。あなたは異なる技術がどのように動作するかを考えるかもしれませんので、私は非常に単純化した図面を追加します
:
がさらに上がってくる、常に新しい技術は、例えば、あります最近のアプリケーションでは、HTML5ブラウザへのライブストリーミング用にWebRTCを使用しています。
理論上、.mp4バイナリデータをストリームすることはできますが、クライアントはそのために非常によく準備されている必要があります。クライアントがファイルの開始時にmoov Atomを受け取らない場合、それはもはや実際にはmp4ストリームを受信するのではなく、バイナリAVC/AACストリームを受信します。これは多かれ少なかれ、MPEG DASHの仕組みです。デコードのために必要な情報を、特定の短期間のバイナリファイルチャンクと別のファイルとして保存します。
ここで私はちょうどそれの上にステップとして、[EDIT]、関連ffmpegのコマンド:
ffmpeg -i D:\input.mxf -s 640x360 -hls_list_size 30 -hls_flags delete_segments+append_list+omit_endlist -hls_list_size 1 -f hls c:\xampp\htdocs\out.m3u8
その後、私はダウンロードして自分のウェブサーバのルートにこれを抽出:https://github.com/video-dev/hls.js
そこから私は、デモページを開設hls.js:http://localhost/hls/demo/index.htmlから - そしてそこに私のm3u8 "http://localhost/out.m3u8"のURLを入力して、私のライブビデオをうまく再生しました。私のブラウザ;-)
ソースに任意のプラグインをインストールせず:Change ffmpeg input on the fly
動画は音が含まれていますか?サイレント(例えば、CCTVセキュリティカメラから)の場合、そのための解決策があるかもしれません。 –
ビデオに音声があります。 –
@ VC.One私が尋ねることができる場合、あなたの解決策はサウンドなしであろう – Harry