• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
Keine Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Commit MetaInfo

Revisiond68a70b92c350ed2c05ae85a235bb454b6f05cff (tree)
Zeit2017-02-22 17:04:34
Autordyknon <dyknon@user...>
Commiterdyknon

Log Message

READMEを書いてみる

Ändern Zusammenfassung

Diff

--- /dev/null
+++ b/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.