• R/O
  • HTTP
  • SSH
  • HTTPS

仓库概述

标签
No Tags

Frequently used words (click to add to your profile)

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

Recent Commits RSS

Rev. 时间 作者 Message
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

Branches

名称 Rev. 时间 作者 Message
master 7d98aa7 2017-03-30 21:02:02 dyknon 再生速度で同期する気がする

README

自宅サーバーからライブストリーミング配信を(少数の人に向けて)したいなー
と思って作ったもの。
完成度的には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.