Revision | d68a70b92c350ed2c05ae85a235bb454b6f05cff (tree) |
---|---|
Zeit | 2017-02-22 17:04:34 |
Autor | dyknon <dyknon@user...> |
Commiter | dyknon |
READMEを書いてみる
@@ -0,0 +1,65 @@ | ||
1 | +自宅サーバーからライブストリーミング配信を(少数の人に向けて)したいなー | |
2 | +と思って作ったもの。 | |
3 | +完成度的にはalpha版未満くらい | |
4 | +性能に満足できていないので書き直すかも | |
5 | + | |
6 | +unixsock_mediaserver.plの、 | |
7 | +・$sockpathに使用するUNIXソケットのパスを、 | |
8 | +・$in_handle->reader | |
9 | + の行にストリームしたい動画を流してくれるコマンドを指定して起動する。 | |
10 | + | |
11 | +live.plの$sockpathに同じUNIXソケットパスを指定し、 | |
12 | +CGIとして動く場所に置けば外からストリーミングできる気がする。 | |
13 | +?req=streamとつけると、javascriptによる同期ズレの修正がない代わり | |
14 | +より多くの環境でストリーミングできる気がする。 | |
15 | + | |
16 | +(サンプルで$in_handle->readerに指定してあるコマンドの出力は) | |
17 | +WebmDASH(?)規格(?)にあんまり準拠してない気がする。 | |
18 | +ので、ちょっと音が飛んだりChromiumだと音がずれたりするけど、 | |
19 | +Firefoxを使えばいいんじゃないかな。 | |
20 | + | |
21 | +$in_handle->readerにffmpegを指定するときのちょっとしたこと: | |
22 | + クラスタ(Matroskaコンテナの構造)の先頭は、常にキーフレームじゃないと | |
23 | + いけないらしい。ので、-gオプションで無理やりキーフレームを増やし、 | |
24 | + -cluster_size_limitと-cluster_time_limitに法外に大きい値を設定する。 | |
25 | + そうすると、ffmpegのmatroskaのmuxerが、キーフレームのところ以外で | |
26 | + クラスタを作るのを抑制できる。 | |
27 | + | |
28 | + -dashオプションは、ろくなことにならないので使わないほうがいい。 | |
29 | + 音声と動画を分ける前提な模様。そもそもDASHの規格がそうかも。 | |
30 | + | |
31 | + 動画ファイルなんかをストリームするときは、 | |
32 | + -vf realtime みたいにしとかないと、 | |
33 | + 一瞬ですべてのデータを食い尽くして、何も再生できないで終わってしまう。 | |
34 | + | |
35 | + キーフレームでしかクラスタを切れないので、 | |
36 | + 遅延を小さくするためにキーフレームを増やしたら、 | |
37 | + データサイズが大きくなる。 | |
38 | + だれだよこの規格作ったヤツは。 | |
39 | + 最初は、これを無視して書いてたらMediaSourceAPIで再生できなかった。 | |
40 | + 諦めて従うことにした | |
41 | + | |
42 | + Copyright (c) 2017 dyknon | |
43 | + All rights reserved. | |
44 | + | |
45 | + Redistribution and use in source and binary forms, with or without | |
46 | + modification, are permitted provided that the following conditions | |
47 | + are met: | |
48 | + 1. Redistributions of source code must retain the above copyright | |
49 | + notice, this list of conditions and the following disclaimer. | |
50 | + 2. Redistributions in binary form must reproduce the above copyright | |
51 | + notice, this list of conditions and the following disclaimer in the | |
52 | + documentation and/or other materials provided with the distribution. | |
53 | + 3. The name of the author may not be used to endorse or promote products | |
54 | + derived from this software without specific prior written permission. | |
55 | + | |
56 | + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | |
57 | + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |
58 | + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |
59 | + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | |
60 | + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | |
61 | + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
62 | + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
63 | + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
64 | + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | |
65 | + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |