Rev. | Tiempo | Autor | Mensaje |
---|---|---|---|
7d98aa7 | 2017-03-30 21:02:02 | dyknon | master 再生速度で同期する気がする |
7bc6626 | 2017-03-14 21:59:20 | dyknon | 主に、再生同期をマシにした。他にも小変更 解像度デフォをw... |
3ac7ff8 | 2017-03-06 22:05:14 | dyknon | 本体の修正に合わせてREADME変更 |
61dd983 | 2017-03-06 21:57:02 | dyknon | Javascript:配信待追加, server:引数で動画指定, socket:home... |
d68a70b | 2017-02-22 17:04:34 | dyknon | READMEを書いてみる |
10cb1bb | 2017-02-22 16:32:27 | dyknon | ライセンスのいらない空白を削除 |
23e0b7d | 2017-02-22 16:31:07 | dyknon | Initial commit |
自宅サーバーからライブストリーミング配信を(少数の人に向けて)したいなー と思って作ったもの。 完成度的にはalpha版未満くらい 性能に満足できていないので書き直すかも unixsock_mediaserver.plにストリーミングしたい動画を引数として与えて起動し、 live.plをCGIとして動く場所に置けば外からストリーミングできる気がする。 ?req=streamとつけると、javascriptによる同期ズレの修正がない代わり より多くの環境でストリーミングできる気がする。 unixsock_mediaserver.plの、$in_handle->reader行の変更で 動画ファイル以外にも現在の画面などを配信できる。 (サンプルで$in_handle->readerに指定してあるコマンドの出力は) WebmDASH(?)規格(?)にあんまり準拠してない気がする。 ので、ちょっと音が飛んだりChromiumだと音がずれたりするけど、 Firefoxを使えばいいんじゃないかな。 $in_handle->readerにffmpegを指定するときのちょっとしたこと: クラスタ(Matroskaコンテナの構造)の先頭は、常にキーフレームじゃないと いけないらしい。ので、-gオプションで無理やりキーフレームを増やし、 -cluster_size_limitと-cluster_time_limitに法外に大きい値を設定する。 そうすると、ffmpegのmatroskaのmuxerが、キーフレームのところ以外で クラスタを作るのを抑制できる。 -dashオプションは、ろくなことにならないので使わないほうがいい。 音声と動画を分ける前提な模様。そもそもDASHの規格がそうかも。 動画ファイルなんかをストリームするときは、 -vf realtime みたいにしとかないと、 一瞬ですべてのデータを食い尽くして、何も再生できないで終わってしまう。 キーフレームでしかクラスタを切れないので、 遅延を小さくするためにキーフレームを増やしたら、 データサイズが大きくなる。 だれだよこの規格作ったヤツは。 最初は、これを無視して書いてたらMediaSourceAPIで再生できなかった。 諦めて従うことにした Copyright (c) 2017 dyknon All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.