diff --git a/.gitignore b/.gitignore index f5cca7a4..a69f4122 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,6 @@ #--------------------------- /config.php /bin/Apache/conf/httpd.conf -/bin/Apache/conf/openssl.cnf /bin/Apache/conf/openssl.ext /bin/Apache/conf/server.crt /bin/Apache/conf/server.csr @@ -21,7 +20,7 @@ /data/comment.json /data/nico.cookie /data/setting.json -/data/tweet_time.dat +/data/tweet_time.txt /cast/cast.json /cast/scan.json /htdocs/server.crt diff --git a/bin/Apache/conf/openssl.cnf b/bin/Apache/conf/openssl.cnf new file mode 100644 index 00000000..1aecc1fb --- /dev/null +++ b/bin/Apache/conf/openssl.cnf @@ -0,0 +1,351 @@ +# +# OpenSSL example configuration file. +# This is mostly being used for generation of certificate requests. +# + +# Note that you can include other files from the main configuration +# file using the .include directive. +#.include filename + +# This definition stops the following lines choking if HOME isn't +# defined. +HOME = . + +# Extra OBJECT IDENTIFIER info: +#oid_file = $ENV::HOME/.oid +oid_section = new_oids + +# To use this configuration file with the "-extfile" option of the +# "openssl x509" utility, name here the section containing the +# X.509v3 extensions to use: +# extensions = +# (Alternatively, use a configuration file that has only +# X.509v3 extensions in its main [= default] section.) + +[ new_oids ] + +# We can add new OIDs in here for use by 'ca', 'req' and 'ts'. +# Add a simple OID like this: +# testoid1=1.2.3.4 +# Or use config file substitution like this: +# testoid2=${testoid1}.5.6 + +# Policies used by the TSA examples. +tsa_policy1 = 1.2.3.4.1 +tsa_policy2 = 1.2.3.4.5.6 +tsa_policy3 = 1.2.3.4.5.7 + +#################################################################### +[ ca ] +default_ca = CA_default # The default ca section + +#################################################################### +[ CA_default ] + +dir = ./demoCA # Where everything is kept +certs = $dir/certs # Where the issued certs are kept +crl_dir = $dir/crl # Where the issued crl are kept +database = $dir/index.txt # database index file. +#unique_subject = no # Set to 'no' to allow creation of + # several certs with same subject. +new_certs_dir = $dir/newcerts # default place for new certs. + +certificate = $dir/cacert.pem # The CA certificate +serial = $dir/serial # The current serial number +crlnumber = $dir/crlnumber # the current crl number + # must be commented out to leave a V1 CRL +crl = $dir/crl.pem # The current CRL +private_key = $dir/private/cakey.pem# The private key + +x509_extensions = usr_cert # The extensions to add to the cert + +# Comment out the following two lines for the "traditional" +# (and highly broken) format. +name_opt = ca_default # Subject Name options +cert_opt = ca_default # Certificate field options + +# Extension copying option: use with caution. +# copy_extensions = copy + +# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs +# so this is commented out by default to leave a V1 CRL. +# crlnumber must also be commented out to leave a V1 CRL. +# crl_extensions = crl_ext + +default_days = 3650 # how long to certify for +default_crl_days= 30 # how long before next CRL +default_md = default # use public key default MD +preserve = no # keep passed DN ordering + +# A few difference way of specifying how similar the request should look +# For type CA, the listed attributes must be the same, and the optional +# and supplied fields are just that :-) +policy = policy_match + +# For the CA policy +[ policy_match ] +countryName = match +stateOrProvinceName = match +organizationName = match +organizationalUnitName = optional +commonName = supplied +emailAddress = optional + +# For the 'anything' policy +# At this point in time, you must list all acceptable 'object' +# types. +[ policy_anything ] +countryName = optional +stateOrProvinceName = optional +localityName = optional +organizationName = optional +organizationalUnitName = optional +commonName = supplied +emailAddress = optional + +#################################################################### +[ req ] +default_bits = 2048 +default_keyfile = privkey.pem +distinguished_name = req_distinguished_name +attributes = req_attributes +x509_extensions = v3_ca # The extensions to add to the self signed cert + +# Passwords for private keys if not present they will be prompted for +# input_password = secret +# output_password = secret + +# This sets a mask for permitted string types. There are several options. +# default: PrintableString, T61String, BMPString. +# pkix : PrintableString, BMPString (PKIX recommendation before 2004) +# utf8only: only UTF8Strings (PKIX recommendation after 2004). +# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings). +# MASK:XXXX a literal mask value. +# WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings. +string_mask = utf8only + +# req_extensions = v3_req # The extensions to add to a certificate request + +[ req_distinguished_name ] +countryName = Country Name (2 letter code) +countryName_default = JP +countryName_min = 2 +countryName_max = 2 + +stateOrProvinceName = State or Province Name (full name) +stateOrProvinceName_default = Tokyo + +localityName = Locality Name (eg, city) + +0.organizationName = Organization Name (eg, company) +0.organizationName_default = TVRemotePlus + +# we can do this but it is not needed normally :-) +#1.organizationName = Second Organization Name (eg, company) +#1.organizationName_default = World Wide Web Pty Ltd + +organizationalUnitName = Organizational Unit Name (eg, section) +#organizationalUnitName_default = + +commonName = Common Name (e.g. server FQDN or YOUR name) +commonName_default = 192.168.1.11 +commonName_max = 64 + +emailAddress = Email Address +emailAddress_max = 64 + +# SET-ex3 = SET extension number 3 + +[ req_attributes ] +challengePassword = A challenge password +challengePassword_min = 4 +challengePassword_max = 20 + +unstructuredName = An optional company name + +[ usr_cert ] + +# These extensions are added when 'ca' signs a request. + +# This goes against PKIX guidelines but some CAs do it and some software +# requires this to avoid interpreting an end user certificate as a CA. + +basicConstraints=critical,CA:TRUE + +# Here are some examples of the usage of nsCertType. If it is omitted +# the certificate can be used for anything *except* object signing. + +# This is OK for an SSL server. +# nsCertType = server + +# For an object signing certificate this would be used. +# nsCertType = objsign + +# For normal client use this is typical +# nsCertType = client, email + +# and for everything including object signing: +# nsCertType = client, email, objsign + +# This is typical in keyUsage for a client certificate. +# keyUsage = nonRepudiation, digitalSignature, keyEncipherment + +# This will be displayed in Netscape's comment listbox. +nsComment = "OpenSSL Generated Certificate" + +# PKIX recommendations harmless if included in all certificates. +subjectKeyIdentifier=hash +authorityKeyIdentifier=keyid,issuer + +# This stuff is for subjectAltName and issuerAltname. +# Import the email address. +# subjectAltName=email:copy +# An alternative to produce certificates that aren't +# deprecated according to PKIX. +# subjectAltName=email:move + +# Copy subject details +# issuerAltName=issuer:copy + +#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem +#nsBaseUrl +#nsRevocationUrl +#nsRenewalUrl +#nsCaPolicyUrl +#nsSslServerName + +# This is required for TSA certificates. +# extendedKeyUsage = critical,timeStamping + +[ v3_req ] + +# Extensions to add to a certificate request + +basicConstraints = CA:FALSE +keyUsage = nonRepudiation, digitalSignature, keyEncipherment + +[ v3_ca ] + + +# Extensions for a typical CA + + +# PKIX recommendation. + +subjectKeyIdentifier=hash + +authorityKeyIdentifier=keyid:always,issuer + +basicConstraints = critical,CA:true + +# Key usage: this is typical for a CA certificate. However since it will +# prevent it being used as an test self-signed certificate it is best +# left out by default. +# keyUsage = cRLSign, keyCertSign + +# Some might want this also +# nsCertType = sslCA, emailCA + +# Include email address in subject alt name: another PKIX recommendation +# subjectAltName=email:copy +# Copy issuer details +# issuerAltName=issuer:copy + +# DER hex encoding of an extension: beware experts only! +# obj=DER:02:03 +# Where 'obj' is a standard or added object +# You can even override a supported extension: +# basicConstraints= critical, DER:30:03:01:01:FF + +[ crl_ext ] + +# CRL extensions. +# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL. + +# issuerAltName=issuer:copy +authorityKeyIdentifier=keyid:always + +[ proxy_cert_ext ] +# These extensions should be added when creating a proxy certificate + +# This goes against PKIX guidelines but some CAs do it and some software +# requires this to avoid interpreting an end user certificate as a CA. + +basicConstraints=CA:FALSE + +# Here are some examples of the usage of nsCertType. If it is omitted +# the certificate can be used for anything *except* object signing. + +# This is OK for an SSL server. +# nsCertType = server + +# For an object signing certificate this would be used. +# nsCertType = objsign + +# For normal client use this is typical +# nsCertType = client, email + +# and for everything including object signing: +# nsCertType = client, email, objsign + +# This is typical in keyUsage for a client certificate. +# keyUsage = nonRepudiation, digitalSignature, keyEncipherment + +# This will be displayed in Netscape's comment listbox. +nsComment = "OpenSSL Generated Certificate" + +# PKIX recommendations harmless if included in all certificates. +subjectKeyIdentifier=hash +authorityKeyIdentifier=keyid,issuer + +# This stuff is for subjectAltName and issuerAltname. +# Import the email address. +# subjectAltName=email:copy +# An alternative to produce certificates that aren't +# deprecated according to PKIX. +# subjectAltName=email:move + +# Copy subject details +# issuerAltName=issuer:copy + +#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem +#nsBaseUrl +#nsRevocationUrl +#nsRenewalUrl +#nsCaPolicyUrl +#nsSslServerName + +# This really needs to be in place for it to be a proxy certificate. +proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo + +#################################################################### +[ tsa ] + +default_tsa = tsa_config1 # the default TSA section + +[ tsa_config1 ] + +# These are used by the TSA reply generation only. +dir = ./demoCA # TSA root directory +serial = $dir/tsaserial # The current serial number (mandatory) +crypto_device = builtin # OpenSSL engine to use for signing +signer_cert = $dir/tsacert.pem # The TSA signing certificate + # (optional) +certs = $dir/cacert.pem # Certificate chain to include in reply + # (optional) +signer_key = $dir/private/tsakey.pem # The TSA private key (optional) +signer_digest = sha256 # Signing digest to use. (Optional) +default_policy = tsa_policy1 # Policy if request did not specify it + # (optional) +other_policies = tsa_policy2, tsa_policy3 # acceptable policies (optional) +digests = sha1, sha256, sha384, sha512 # Acceptable message digests (mandatory) +accuracy = secs:1, millisecs:500, microsecs:100 # (optional) +clock_precision_digits = 0 # number of digits after dot. (optional) +ordering = yes # Is ordering defined for timestamps? + # (optional, default: no) +tsa_name = yes # Must the TSA name be included in the reply? + # (optional, default: no) +ess_cert_id_chain = no # Must the ESS cert id chain be included? + # (optional, default: no) +ess_cert_id_alg = sha1 # algorithm to compute certificate + # identifier (optional, default: sha1) diff --git a/bin/ffmpeg_license.txt b/bin/ffmpeg/LICENSE.txt similarity index 100% rename from bin/ffmpeg_license.txt rename to bin/ffmpeg/LICENSE.txt diff --git a/bin/ffmpeg-tvrp.exe b/bin/ffmpeg/avcodec-58.dll similarity index 51% rename from bin/ffmpeg-tvrp.exe rename to bin/ffmpeg/avcodec-58.dll index 80659053..d1fcb205 100644 Binary files a/bin/ffmpeg-tvrp.exe and b/bin/ffmpeg/avcodec-58.dll differ diff --git a/bin/ffmpeg/avdevice-58.dll b/bin/ffmpeg/avdevice-58.dll new file mode 100644 index 00000000..7d2bd0fb Binary files /dev/null and b/bin/ffmpeg/avdevice-58.dll differ diff --git a/bin/ffmpeg/avfilter-7.dll b/bin/ffmpeg/avfilter-7.dll new file mode 100644 index 00000000..b901ace2 Binary files /dev/null and b/bin/ffmpeg/avfilter-7.dll differ diff --git a/bin/ffmpeg/avformat-58.dll b/bin/ffmpeg/avformat-58.dll new file mode 100644 index 00000000..5e2ae5c8 Binary files /dev/null and b/bin/ffmpeg/avformat-58.dll differ diff --git a/bin/ffmpeg/avresample-4.dll b/bin/ffmpeg/avresample-4.dll new file mode 100644 index 00000000..b19162eb Binary files /dev/null and b/bin/ffmpeg/avresample-4.dll differ diff --git a/bin/ffmpeg/avutil-56.dll b/bin/ffmpeg/avutil-56.dll new file mode 100644 index 00000000..10c85e7c Binary files /dev/null and b/bin/ffmpeg/avutil-56.dll differ diff --git a/bin/ffmpeg/ffmpeg-tvrp.exe b/bin/ffmpeg/ffmpeg-tvrp.exe new file mode 100644 index 00000000..69fa571a Binary files /dev/null and b/bin/ffmpeg/ffmpeg-tvrp.exe differ diff --git a/bin/ffmpeg/ffprobe-tvrp.exe b/bin/ffmpeg/ffprobe-tvrp.exe new file mode 100644 index 00000000..cd569840 Binary files /dev/null and b/bin/ffmpeg/ffprobe-tvrp.exe differ diff --git a/bin/ffmpeg/postproc-55.dll b/bin/ffmpeg/postproc-55.dll new file mode 100644 index 00000000..ae0afea8 Binary files /dev/null and b/bin/ffmpeg/postproc-55.dll differ diff --git a/bin/ffmpeg/swresample-3.dll b/bin/ffmpeg/swresample-3.dll new file mode 100644 index 00000000..6efe16e5 Binary files /dev/null and b/bin/ffmpeg/swresample-3.dll differ diff --git a/bin/ffmpeg/swscale-5.dll b/bin/ffmpeg/swscale-5.dll new file mode 100644 index 00000000..aab083db Binary files /dev/null and b/bin/ffmpeg/swscale-5.dll differ diff --git a/data/tweet_time.txt b/data/tweet_time.txt deleted file mode 100644 index 11192a22..00000000 --- a/data/tweet_time.txt +++ /dev/null @@ -1 +0,0 @@ -1574695499 \ No newline at end of file diff --git a/data/version.txt b/data/version.txt index ec7b9678..9bdb566f 100644 --- a/data/version.txt +++ b/data/version.txt @@ -1 +1 @@ -v1.4.0 \ No newline at end of file +v1.4.1 \ No newline at end of file diff --git a/docs/Release_Notes.md b/docs/Release_Notes.md index 35455ac2..2b138ce4 100644 --- a/docs/Release_Notes.md +++ b/docs/Release_Notes.md @@ -1,286 +1,305 @@ # Release Notes - - **v1.4.0** - 2019/11/30 - - ぎりぎり11月中にコミットしたのでセーフ - - 更新多めなのでちょっと他で動くかどうかが心配… - - ちなみに 1.4.0 みたいなバージョンは メジャーバージョンアップ(機能追加がほとんど)です - - 1.2.1 みたいなバージョンは マイナーバージョンアップ(不具合修正多め)と分けてるつもり - - **設定ファイルの項目が変更になっています・config.php を予めバックアップした上で新規インストールし、** - - **VCEEncC でのエンコードに対応した** - - VCE の仕様でインタレ解除が出来ないらしいですが rigaya さんが最近の QSVEncC 等の変更に合わせて 5.00 をリリースしていたので対応する事ができました - - いつも本当にありがとうございます… - - こちらに VCE が使える環境があるわけではないので、動くかは微妙です…(フィードバックいただけると助かります) - - **MKV ファイルの再生に対応した** - - MKV で再生させてる方が結構多そうなので対応するだけしてみました - - プログレッシブダウンロードで再生する場合、ブラウザで再生出来るコーデックは限られるため、例えば H.265 でエンコードしたファイルの場合は音声しか再生されません - - MP4 でプログレッシブダウンロード再生させる場合も同様です - - MKV は Firefox・Safari では再生できないみたいです(= Chrome 系だけっぽい?) - - 再生できないときは適宜普通にエンコードして再生させるなりしてください(丸投げ - - **MKV ファイルのダウンロードに対応した** - - MKV 再生対応の完全についでです - - **リバースプロキシ対応周りの変更** - - HTTP ポートの設定は廃止し、自動で HTTP ポートを取得できるようにしました - - リバースプロキシからのアクセスに正式に対応し、リバースプロキシからアクセスする時の URL を設定できるようにしました - - この辺りがややこしくてかなり行き詰まってました - - **リバースプロキシからのアクセス時に環境設定を非表示にする設定を追加** - - オンにすると、リバースプロキシからのアクセス時に設定ページの環境設定を非表示にします(環境設定を保存する処理自体を封印します) - - セキュリティ対策です、リバースプロキシを使っている方はオンにしておくことをおすすめします - - 再びこの設定をオフにする場合は、リバースプロキシを介さずに設定ページにアクセスするか、config.php を直接編集してください - - **DPlayer(動画プレイヤー)を更新** - - スマホで設定画面の高さがおかしくなる不具合を修正しました - - あとはスタイル調整とか - - **タブを BS か CS にしたときにブラウザバー開閉でタブがおかしくなる不具合を修正** - - なんかよくわからんけどゴニョゴニョしてたら直った - - ブラウザのキャッシュを完全に消してからリロードしてみてください - - **設定ページのフォームに 0123 のように0埋めされた数字を入力・保存すると 123 のように変換されてしまう不具合を修正** - - 数値扱いできるものは数値として書き込んでいたのですが先頭が0から始まるものは除外するようにしました - - **Mac で Option キー + 1 などのショートカットを使うと!を反対にした謎の文字が一緒に入ってしまう不具合を修正** - - preventDefault() してなかっただけ閉廷 - - **Chrome 以外のブラウザでキャストするときにプログレッシブダウンロードの動画が再生できない不具合を修正** - - すっかり忘れてました… - - **インストーラー周りの変更・整理** - - インデントを揃えたりとか - - 証明書の作成バッチも大幅に更新しました - - **TSTask に Theme ファイルを追加した** - - すっかり同梱するの忘れてました… - - **Apache を 2.4.41 に更新** - - リリース時から一度もアップデートしていなかったため一気にやってしまいました - - 設定やファイル等カスタムしているので数時間かけてようやく… - - **PHP を 7.3.12 に更新** - - 7.3.12 にしたら変なファイルが増えてたのでごっそり消しときました(配布サイズ対策) - - **TwitterOAuth を更新** - - 別件でちょっと弄ったのでそのついで - - QSVEncC を 3.27 に更新 - - NVEncC を 4.55 に更新 - - デフォルトの設定内容をちょっと変更 - - りどみが雑になってたので整理 - - その他細かな修正・スタイル調整・コード整理など + - **v1.4.1** - 2019/12/02 + - 不具合修正のみです + - **インストールに失敗する問題を修正** + - openssl.cnf を同梱するのを忘れていました… + - インストーラーは openssl.default.cnf・openssl.default.ext をそれぞれ openssl.cnf・openssl.ext にコピーし、それを編集する形を取っていました + - 前回のアップデートで openssl.cnf の同梱が必要ではなくなったため、openssl.default.cnf を廃止し、openssl.cnf をそのまま同梱するようにしたはずでした + - …が、.gitignore の除外設定をそのままにしていた、というのが原因です… + - **ffmpeg を shared 版に変更した** + - 後述の ffprobe を同梱するにあたり、shared 版の方がファイルサイズを削減できるためです + - ffmpeg を 4.2.1 に更新できないか試してみたのですが、ffmpeg が 4.2 から ARIB 字幕を arib_caption として認識するようになりました + それ自体は良いのですが、字幕を -scodec copy でコピーしようとしたところ、何故か ffmpeg が勝手に WebVTT に変換しようとして + しかも WebVTT へのエンコーダーが存在しないためエラー吐いて落ちるというバグとしか思えない症状がどうやっても改善できなかったので、暫くは 4.1.4 のままになりそうです + - そもそも -scodec **copy** としているのに何故 WebVTT に変換しようとするのか理解できない… + - 映像が H.264 とはいえ HLS は MPEG2-TS 形式なので、コンテナ的にコピーできないという事はないはず… + - 字幕が映らなくても構わないのであれば -sn オプションをつければ行けます + - **ffprobe を同梱した** + - 今の所使っていませんが、今後録画ファイルのコーデック確認等に使う事を想定してついでに同梱しておきます + - 準備工事ということで… - - **v1.3.1** - 2019/11/**(幻) - - **再生履歴が表示できなくなっていた問題を修正** - - アップデートする前に一度 (TVRemotePlus)/htdocs/files/history.json を削除してください + - **v1.4.0** - 2019/11/30 + - ぎりぎり11月中にコミットしたのでセーフ + - 更新多めなのでちょっと他で動くかどうかが心配… + - ちなみに 1.4.0 みたいなバージョンは メジャーバージョンアップ(機能追加がほとんど)です + - 1.2.1 みたいなバージョンは マイナーバージョンアップ(不具合修正多め)と分けてるつもり + - **設定ファイルの項目が変更になっています・config.php を予めバックアップした上で新規インストールし、** + - **VCEEncC でのエンコードに対応した** + - VCE の仕様でインタレ解除が出来ないらしいですが rigaya さんが最近の QSVEncC 等の変更に合わせて 5.00 をリリースしていたので対応する事ができました + - いつも本当にありがとうございます… + - こちらに VCE が使える環境があるわけではないので、動くかは微妙です…(フィードバックいただけると助かります) + - **MKV ファイルの再生に対応した** + - MKV で再生させてる方が結構多そうなので対応するだけしてみました + - プログレッシブダウンロードで再生する場合、ブラウザで再生出来るコーデックは限られるため、例えば H.265 でエンコードしたファイルの場合は音声しか再生されません + - MP4 でプログレッシブダウンロード再生させる場合も同様です + - MKV は Firefox・Safari では再生できないみたいです(= Chrome 系だけっぽい?) + - 再生できないときは適宜普通にエンコードして再生させるなりしてください(丸投げ + - **MKV ファイルのダウンロードに対応した** + - MKV 再生対応の完全についでです + - **リバースプロキシ対応周りの変更** + - HTTP ポートの設定は廃止し、自動で HTTP ポートを取得できるようにしました + - リバースプロキシからのアクセスに正式に対応し、リバースプロキシからアクセスする時の URL を設定できるようにしました + - この辺りがややこしくてかなり行き詰まってました + - **リバースプロキシからのアクセス時に環境設定を非表示にする設定を追加** + - オンにすると、リバースプロキシからのアクセス時に設定ページの環境設定を非表示にします(環境設定を保存する処理自体を封印します) + - セキュリティ対策です、リバースプロキシを使っている方はオンにしておくことをおすすめします + - 再びこの設定をオフにする場合は、リバースプロキシを介さずに設定ページにアクセスするか、config.php を直接編集してください + - **DPlayer(動画プレイヤー)を更新** + - スマホで設定画面の高さがおかしくなる不具合を修正しました + - あとはスタイル調整とか + - **タブを BS か CS にしたときにブラウザバー開閉でタブがおかしくなる不具合を修正** + - なんかよくわからんけどゴニョゴニョしてたら直った + - ブラウザのキャッシュを完全に消してからリロードしてみてください + - **設定ページのフォームに 0123 のように0埋めされた数字を入力・保存すると 123 のように変換されてしまう不具合を修正** + - 数値扱いできるものは数値として書き込んでいたのですが先頭が0から始まるものは除外するようにしました + - **Mac で Option キー + 1 などのショートカットを使うと!を反対にした謎の文字が一緒に入ってしまう不具合を修正** + - preventDefault() してなかっただけ閉廷 + - **Chrome 以外のブラウザでキャストするときにプログレッシブダウンロードの動画が再生できない不具合を修正** + - すっかり忘れてました… + - **インストーラー周りの変更・整理** + - インデントを揃えたりとか + - 証明書の作成バッチも大幅に更新しました + - **TSTask に Theme ファイルを追加した** + - すっかり同梱するの忘れてました… + - **Apache を 2.4.41 に更新** + - リリース時から一度もアップデートしていなかったため一気にやってしまいました + - 設定やファイル等カスタムしているので数時間かけてようやく… + - **PHP を 7.3.12 に更新** + - 7.3.12 にしたら変なファイルが増えてたのでごっそり消しときました(配布サイズ対策) + - **TwitterOAuth を更新** + - 別件でちょっと弄ったのでそのついで + - QSVEncC を 3.27 に更新 + - NVEncC を 4.55 に更新 + - デフォルトの設定内容をちょっと変更 + - りどみが雑になってたので整理 + - その他細かな修正・スタイル調整・コード整理など - - **v1.3.0** - 2019/11/03 - - システムの根幹(特にファイル再生周り)にかなり手を加えた大幅なアップデートとなっています - - **アップデートの際の諸注意** - - 録画ファイルリストのフォーマットが変更されているため、一度「リストをリセット」からリストをリセットし、もう一度リストを生成し直してください - - (TVRemotePlus)/htdocs/files/info/ フォルダは廃止されました - - アップデート時に手動でフォルダごと削除してください - - API の名前が変更になりました - - アップデート後に残る (TVRemotePlus)/htdocs/api/ フォルダ内の下記フォルダを手動で削除してください - - epgguide.php - - jkapi.php - - searchfile.php - - watchnow.php - - また、リバースプロキシを利用している場合は、Apache 等の Web サーバーの設定ファイルも適宜書き換えてください - - 詳しくは [Reverse_Proxy.md](Reverse_Proxy.md) を参照してください - - 以前のバージョンのキャッシュがブラウザに残っていると、正常に動作しない可能性があります - - 必ずブラウザのキャッシュを削除してからアクセスしてください - - **MP4 ファイルの再生に対応した** - - 以前から要望があった機能なのですが、ようやく実装できました… - - また、MP4 ファイルであれば TS のように一々エンコードする必要はないため、ついでにプログレッシブダウンロードにも対応しました( MP4 ファイルのみ) - - プログレッシブダウンロードは、要は元の MP4 ファイルをそのまま再生させる方式のことです - - 元の MP4 ファイルそのままの画質で再生できます - - エンコードを行わないため、最初から最後まですぐに再生できます - - 回線が遅いなどの事情がない限り、MP4 ファイルを再生する場合はプログレッシブダウンロードで再生する事をおすすめします - - MP4 ファイル再生時はデフォルト値をプログレッシブダウンロードに設定します - - MP4 ファイルでは番組情報が取得できないため、同じファイル名のTSファイルがあればその番組情報を借用するようにしました - - 同じファイル名の TS ファイルがない場合、番組情報が取得できないため、ファイル名と更新時刻から推測して表示します - - 現状、MP4 ファイルの再生時には字幕はオン・オフに関わらず表示されません - - MP4ファイル自体に字幕が含まれていないためです - - 将来的には同じファイル名で字幕ファイルが置いてあれば変換して表示できるようにしたいと考えています - - **MP4 ファイルのダウンロードに対応した** - - ついでで MP4 ファイルのダウンロードにも対応しました - - MP4 ファイルのサムネイルにマウスをかざすか、タッチデバイスであればサムネイルをタップするとダウンロードボタンが表示されるので、それをクリック or タップするとダウンロードされます - - 持ち出し用のスマホやタブレットに予めエンコードしておいた動画をダウンロードしておいて出先で見る、といった使い方ができると思います - - TS ファイルはあまりにもファイルサイズが巨大な上、スマホではうまく再生できないプレイヤーが多いため、ダウンロードには非対応としています - - 後日 TS ファイルの MP4 ファイルへのエンコード機能も実装予定です - - **リスト更新を大幅に高速化した** - - 遅い遅いと言われていたリスト更新の処理ですが、大幅に高速化しました - - 遅くなっていた原因ですが、録画ファイルのあるフォルダ内にスクランブル解除に失敗した TS ファイルなどの再生できないファイルがあった場合に、30秒ほど試行した後サムネイル生成に失敗するのにも関わらず毎回生成させていたためでした… - - サムネイル生成に一度失敗したらそれ以降サムネイルの生成を行わないようにする事で、処理を大幅に高速化する事ができました - - 毎回2~3分かかっていたリスト更新が1番組あたり4秒程度で更新できるようになりました - - **API 周りの変更** - - 前述の通り、API ファイルの名前が変更になりました - - epgguide.php → epginfo.php - - jkapi.php → jikkyo.php - - searchfile.php → listupdate.php - - watchnow.php → status.php - - 前からガバガバ英語なのと分かりづらいのと主な役目が変わってしまったAPIがあったりで名前を変えたいと思っていました - - また、.php なしで API にアクセスするようになりました - - 例: https://192.168.1.11:8100/api/listupdate?flush - - この方が URL の見た目がきれいなはず… - - **Android 版 Chrome にて Picture-in-Picture (PiP) に対応した** - - 今まで Android 版 Chrome では JavaScript からピクチャーインピクチャーを呼び出す事が出来なかったのですが、Chrome78 より実装されたみたいです - - 今までも全画面にした後ホームボタンを押す事で PiP モードにする事は可能でしたが、これからはプレイヤーのボタンを押すだけで PiP モードに移れるようになります - - 「何か調べ物をしながらテレビを見る」など、いろいろ活用できると思います - - ただし、古い Android(8.0以前…?)では OS 側が非対応のため表示できない場合があります - - その他 PiP ボタンを追加するにあたりアイコンの位置・サイズ調整等も行いました - - **インストーラーでの証明書生成を自動で生成できるようにした** - - 今までの Enter 連打が必要なくなります - - 証明書生成に失敗する環境があるらしいのですが、こちらでは生成できているので原因がよくわかっていません… - - **ストリーム開始時のコマンドを表示できるようにした** - - ストリーム開始時の ffmpeg や QSVEncC といったエンコード用ソフトの起動用コマンドを表示できます(ほぼほぼデバッグ用) - - 表示させる場合は、環境設定の下の方の「ストリーム開始設定後の画面を表示せずに再生画面へリダイレクトする」をオフにしてください - - **1080p 以外の画質で再生させた場合にアスペクト比が歪む問題を修正** - - 前回のアップデートの弊害でした… - - 1080p とそれ以外の画質でエンコード時のピクセルアスペクト比を分ける事で修正しました - - **一部のチャンネルの実況勢いが表示されない問題を修正** - - ch_sid.txt 内のチャンネル名と実際のチャンネル名が異なるケースが複数出てきています - - 他にも実況勢いが表示されないチャンネルがあれば 5ch の方で報告していただけると助かります - - 録画ファイルを検索後「もっと見る」をクリックすると一番上までスクロールされてしまう不具合を修正 - - ファイル再生周りをかなり改修したのでそのついでです - - ニコニコ実況のコメントと字幕が同時にキャプチャ画像に含まれている際に合成する順番が逆なのを修正 - - NVEncC を更新 - - その他バグ修正・微調整・スタイル調整など… + - **v1.3.1** - 2019/11/**(幻) + - **再生履歴が表示できなくなっていた問題を修正** + - アップデートする前に一度 (TVRemotePlus)/htdocs/files/history.json を削除してください - - **v1.2.2** - 2019/10/11 - - 台風で停電しそうなので早めにうp - - **CH2ファイルが BonDriver_Spinel_T01_MyPC.ch2 のようなファイル名の場合にチャンネル設定ファイルがうまく取得出来ない不具合を修正** - - 元々 BonDriver_Spinel_T1.ch2 のようなファイル名を想定していたのですが、T01 のように 2 桁にしている方や T01_MyPC のように PC 名を付けている方もいたようで…(本当は統一してほしいところなんですが) - - ついでに BonDriver の dll の方もそのようなファイル名になっていても検出出来るようにしました - - **コメントの遅延時間を個人設定から指定出来るようにした** - - 0 ~ 60(秒)の範囲で指定できます - - 個人設定は端末ごとに反映されます。注意してください。 - - **1080p で配信した場合、BS11 など 1920×1080 で放送されている局で 4:3 の比になってしまう不具合を修正** - - アスペクト比を指定してなかったのが原因っぽいです… - - **Mac 版 Chrome でコメント付きでキャプチャした場合にフォントが明朝体になってしまう不具合を修正** - - なぜ sans-serif と指定しているのに serif 体になってしまうのかは謎…( Mac のバグでは🤔) - - **初回インストール時に初期設定に関わらず配信休止中…の音楽が流れてしまう不具合を修正** - - 多分治ってると思います(思いたい) - - その他軽微な修正 + - **v1.3.0** - 2019/11/03 + - システムの根幹(特にファイル再生周り)にかなり手を加えた大幅なアップデートとなっています + - **アップデートの際の諸注意** + - 録画ファイルリストのフォーマットが変更されているため、一度「リストをリセット」からリストをリセットし、もう一度リストを生成し直してください + - (TVRemotePlus)/htdocs/files/info/ フォルダは廃止されました + - アップデート時に手動でフォルダごと削除してください + - API の名前が変更になりました + - アップデート後に残る (TVRemotePlus)/htdocs/api/ フォルダ内の下記フォルダを手動で削除してください + - epgguide.php + - jkapi.php + - searchfile.php + - watchnow.php + - また、リバースプロキシを利用している場合は、Apache 等の Web サーバーの設定ファイルも適宜書き換えてください + - 詳しくは [Reverse_Proxy.md](Reverse_Proxy.md) を参照してください + - 以前のバージョンのキャッシュがブラウザに残っていると、正常に動作しない可能性があります + - 必ずブラウザのキャッシュを削除してからアクセスしてください + - **MP4 ファイルの再生に対応した** + - 以前から要望があった機能なのですが、ようやく実装できました… + - また、MP4 ファイルであれば TS のように一々エンコードする必要はないため、ついでにプログレッシブダウンロードにも対応しました( MP4 ファイルのみ) + - プログレッシブダウンロードは、要は元の MP4 ファイルをそのまま再生させる方式のことです + - 元の MP4 ファイルそのままの画質で再生できます + - エンコードを行わないため、最初から最後まですぐに再生できます + - 回線が遅いなどの事情がない限り、MP4 ファイルを再生する場合はプログレッシブダウンロードで再生する事をおすすめします + - MP4 ファイル再生時はデフォルト値をプログレッシブダウンロードに設定します + - MP4 ファイルでは番組情報が取得できないため、同じファイル名のTSファイルがあればその番組情報を借用するようにしました + - 同じファイル名の TS ファイルがない場合、番組情報が取得できないため、ファイル名と更新時刻から推測して表示します + - 現状、MP4 ファイルの再生時には字幕はオン・オフに関わらず表示されません + - MP4ファイル自体に字幕が含まれていないためです + - 将来的には同じファイル名で字幕ファイルが置いてあれば変換して表示できるようにしたいと考えています + - **MP4 ファイルのダウンロードに対応した** + - ついでで MP4 ファイルのダウンロードにも対応しました + - MP4 ファイルのサムネイルにマウスをかざすか、タッチデバイスであればサムネイルをタップするとダウンロードボタンが表示されるので、それをクリック or タップするとダウンロードされます + - 持ち出し用のスマホやタブレットに予めエンコードしておいた動画をダウンロードしておいて出先で見る、といった使い方ができると思います + - TS ファイルはあまりにもファイルサイズが巨大な上、スマホではうまく再生できないプレイヤーが多いため、ダウンロードには非対応としています + - 後日 TS ファイルの MP4 ファイルへのエンコード機能も実装予定です + - **リスト更新を大幅に高速化した** + - 遅い遅いと言われていたリスト更新の処理ですが、大幅に高速化しました + - 遅くなっていた原因ですが、録画ファイルのあるフォルダ内にスクランブル解除に失敗した TS ファイルなどの再生できないファイルがあった場合に、30秒ほど試行した後サムネイル生成に失敗するのにも関わらず毎回生成させていたためでした… + - サムネイル生成に一度失敗したらそれ以降サムネイルの生成を行わないようにする事で、処理を大幅に高速化する事ができました + - 毎回2~3分かかっていたリスト更新が1番組あたり4秒程度で更新できるようになりました + - **API 周りの変更** + - 前述の通り、API ファイルの名前が変更になりました + - epgguide.php → epginfo.php + - jkapi.php → jikkyo.php + - searchfile.php → listupdate.php + - watchnow.php → status.php + - 前からガバガバ英語なのと分かりづらいのと主な役目が変わってしまったAPIがあったりで名前を変えたいと思っていました + - また、.php なしで API にアクセスするようになりました + - 例: https://192.168.1.11:8100/api/listupdate?flush + - この方が URL の見た目がきれいなはず… + - **Android 版 Chrome にて Picture-in-Picture (PiP) に対応した** + - 今まで Android 版 Chrome では JavaScript からピクチャーインピクチャーを呼び出す事が出来なかったのですが、Chrome78 より実装されたみたいです + - 今までも全画面にした後ホームボタンを押す事で PiP モードにする事は可能でしたが、これからはプレイヤーのボタンを押すだけで PiP モードに移れるようになります + - 「何か調べ物をしながらテレビを見る」など、いろいろ活用できると思います + - ただし、古い Android(8.0以前…?)では OS 側が非対応のため表示できない場合があります + - その他 PiP ボタンを追加するにあたりアイコンの位置・サイズ調整等も行いました + - **インストーラーでの証明書生成を自動で生成できるようにした** + - 今までの Enter 連打が必要なくなります + - 証明書生成に失敗する環境があるらしいのですが、こちらでは生成できているので原因がよくわかっていません… + - **ストリーム開始時のコマンドを表示できるようにした** + - ストリーム開始時の ffmpeg や QSVEncC といったエンコード用ソフトの起動用コマンドを表示できます(ほぼほぼデバッグ用) + - 表示させる場合は、環境設定の下の方の「ストリーム開始設定後の画面を表示せずに再生画面へリダイレクトする」をオフにしてください + - **1080p 以外の画質で再生させた場合にアスペクト比が歪む問題を修正** + - 前回のアップデートの弊害でした… + - 1080p とそれ以外の画質でエンコード時のピクセルアスペクト比を分ける事で修正しました + - **一部のチャンネルの実況勢いが表示されない問題を修正** + - ch_sid.txt 内のチャンネル名と実際のチャンネル名が異なるケースが複数出てきています + - 他にも実況勢いが表示されないチャンネルがあれば 5ch の方で報告していただけると助かります + - 録画ファイルを検索後「もっと見る」をクリックすると一番上までスクロールされてしまう不具合を修正 + - ファイル再生周りをかなり改修したのでそのついでです + - ニコニコ実況のコメントと字幕が同時にキャプチャ画像に含まれている際に合成する順番が逆なのを修正 + - NVEncC を更新 + - その他バグ修正・微調整・スタイル調整など… - - **v1.2.1** - 2019/10/03 - - **Twitter にログインしているアカウントを確認できるようにした** - - PC の場合は青い鳥アイコンにマウスをかざすと、スマホ・タブレットの場合は青い鳥アイコンをタップすると表示されます - - v1.2.1 以前から Twitter にログインしていた場合は「ログインしていません」と表示されます、正しく表示させる場合はもう一度ログインし直してください - - **CBC テレビとメ~テレの実況勢い・コメントが表示されない不具合を修正** - - メ~テレに関しては全角チルダと波ダッシュの文字コードの違いが原因でした… どうにかしろよMS(無理) - - Font Awesome を v5.11.2 に更新 - - スタイルの微修正 + - **v1.2.2** - 2019/10/11 + - 台風で停電しそうなので早めにうp + - **CH2ファイルが BonDriver_Spinel_T01_MyPC.ch2 のようなファイル名の場合にチャンネル設定ファイルがうまく取得出来ない不具合を修正** + - 元々 BonDriver_Spinel_T1.ch2 のようなファイル名を想定していたのですが、T01 のように 2 桁にしている方や T01_MyPC のように PC 名を付けている方もいたようで…(本当は統一してほしいところなんですが) + - ついでに BonDriver の dll の方もそのようなファイル名になっていても検出出来るようにしました + - **コメントの遅延時間を個人設定から指定出来るようにした** + - 0 ~ 60(秒)の範囲で指定できます + - 個人設定は端末ごとに反映されます。注意してください。 + - **1080p で配信した場合、BS11 など 1920×1080 で放送されている局で 4:3 の比になってしまう不具合を修正** + - アスペクト比を指定してなかったのが原因っぽいです… + - **Mac 版 Chrome でコメント付きでキャプチャした場合にフォントが明朝体になってしまう不具合を修正** + - なぜ sans-serif と指定しているのに serif 体になってしまうのかは謎…( Mac のバグでは🤔) + - **初回インストール時に初期設定に関わらず配信休止中…の音楽が流れてしまう不具合を修正** + - 多分治ってると思います(思いたい) + - その他軽微な修正 - - **v1.2.0** - 2019/09/26 - - **画質設定に 1080p(1440×1080)を追加した** - - 地デジと BS の殆どの局では 1440×1080 で放送されているので、サイズを抑えながら普通に見るのと変わらない画質で視聴できます - - 以前の 1080p だとどうしてもスマホなどの低スペック端末ではストリームがカクつく事があったのですが、1440×1080 であればセグメントのダウンロード時間を 1920×1080 よりも低く抑えられるため、より高画質でカクつかずに再生できるようになっていると思います - - 特に Chromecast 再生時や大画面ディスプレイでの再生時に違いが良く出るような気がします - - これに伴い、インストール時のデフォルト画質を 1080p に変更した他、以前の 1080p(1920×1080)は 1080p-high という扱いとしました - - **地デジと BS・CS の混合チューナーに対応した** - - 前々から色々な方に要望されていたのですが、ようやく実装しました - - こちらに混合チューナーの環境がないので動くかどうか微妙… - - 地デジと BS・CS 双方を同じ BonDriver で再生させる場合は、設定ページの BonDriver のデフォルト設定を(地デジ用)・(BS・CS用)どちらとも同じ BonDriver を指定して下さい - - これに伴い、BonDriver フォルダに無印( T0 や S0 が付いていない)BonDriver があればそれも選べるようにしました - - ついでに UTF-16LE(BOM 付き)がうまく読み込めず一部チャンネルの実況勢いが表示されない不具合も修正しました - - **Chromecast キャスト機能を大幅に改善** - - 今回のアップデートのメインです(3日ぶっ通しでようやく…) - - **PC・Android の Chrome かつ https でアクセスしている場合に Chrome ネイティブ機能でキャストするようにした** - - 情報が不親切な英語ドキュメントしかなくてかなり大変でした… - - http アクセスだと動かないのでネイティブ機能を使う場合は(予め PWA 用の証明書を端末にインストールした上で)https でアクセスしてください - - これにより Chromecast と 手元のプレイヤーの再生位置が綺麗に同期されるようになります(中々同期出来ず大変でした…) - - JavaScript からのキャストは(当然ながら)Chrome 以外のブラウザでは使えないので今まで通りの方法でキャスト出来るようにしました - - iOS 版 Chrome は対応してるのかしてないのか良く分からないので当面は他ブラウザ同様の対応としました - - 今までの方もネイティブ機能に合わせ動作等を改善しました - - あと Chromecast でなくても Google Cast に対応している製品( AndroidTV だとか GoogleHome だとか GoogleNestHub だとか)であれば同様にキャスト出来るはずです - - プレイヤー周り - - **TVRemotePlus で使用している動画プレイヤー(DPlayer)を最新版に更新した** - - **Android スマートフォンでの再生時にフルスクリーンにした場合画面を横に回転するようにした** - - iPhone・iPad はそもそもフルスクリーン API が極めて限定的対応かつ Screen Orientation API 非対応なので無理です - - たまに動画のシーク時にプレイヤーが再生と停止を繰り返してバグる不具合を修正・その他シーク周りの改善 - - コメント描画のさらなる高速化 - - 本当はこれ以上高速化したい(特にスマホ)んですがもう限界そう…(最初の頃と比べれば大分カクつかなくなったし…) - - 実験台にしてるスマホがミドルレンジだししょうがないね - - 再生ページのロード時の動作を高速化 - - スタイルの調整 - - NVEncC を 4.50 に更新 - - その他不具合修正など… + - **v1.2.1** - 2019/10/03 + - **Twitter にログインしているアカウントを確認できるようにした** + - PC の場合は青い鳥アイコンにマウスをかざすと、スマホ・タブレットの場合は青い鳥アイコンをタップすると表示されます + - v1.2.1 以前から Twitter にログインしていた場合は「ログインしていません」と表示されます、正しく表示させる場合はもう一度ログインし直してください + - **CBC テレビとメ~テレの実況勢い・コメントが表示されない不具合を修正** + - メ~テレに関しては全角チルダと波ダッシュの文字コードの違いが原因でした… どうにかしろよMS(無理) + - Font Awesome を v5.11.2 に更新 + - スタイルの微修正 - - **v1.1.0** - 2019/09/13 - - **新規機能の追加はあまりありませんが、ほぼ全てのファイルを修正したのでメジャーバージョンアップです** - - 諸々不具合が修正されていると思います - - コメントのフォントサイズをある程度変えられるようにした - - プレイヤーのコア部分を弄ったので疲れました… - - ファイル再生時に字幕をストリームに含めるかどうか設定できるようにした - - ごく稀に字幕をストリームに含めると途中でエンコードに失敗してしまう録画があるためです - - デフォルトはオンになっています、問題があった時のみオフにすることをおすすめします - - TVRemoteViewer での番組表取得に関する情報を追記 - - コメント一覧をスクロールしている時に新しいコメントが来ると強制で下にスクロールされてしまう不具合を修正 - - 色々悩みましたが、結局 YouTube Live っぽい仕様にしました - - 生放送時に一時停止した状態にするとコメントが溜まりに溜まる不具合を修正 - - ニコニコ実況がメンテナンスの際にメンテナンス表示を出すようにした - - 丁度最近メンテナンスがあったのでそのついでです - - ニコニコ実況の過去ログ取得時にコメントが多すぎる(例:ラピュタ)と実行時間制限を超えてタイムアウトしコメントが取得できない不具合を修正 - - 正直ラピュタレベルはコメントが多すぎてまともに再生できませんでした…(Canvasにしたほうが大量のコメントには強いんでしょうけど、改造元のプレイヤーがCSSアニメーションで実現させる方式のためどうしてもコメントが多くなるとかなり重くなってしまいます) - - iOS 環境でファイル再生時にシークが出来ない(バー自体が出ない)不具合を修正 - - Safari の仕様で HLS ストリーミング再生時は video.duration が取得出来ないらしく、こちらもプレイヤーのコア部分を大幅に弄ったので疲れました - - スマホなどのタッチデバイスでのシーク時に再生させながらシークしようとするとシークバーが荒ぶる不具合を修正 - - シーク中は一旦動画を一時停止させるようにしました - - これもプレイヤーのコア部分を大幅n(ry - - 個人設定が数日で切れてしまう不具合を修正 - - Cookie の有効期限を365日にしました - - 個人設定の読み込みに失敗する不具合を修正 - - スマホで見た際にヘッダーのロゴを中央寄せするようにした - - ヘッダーのアイコンにマウスをかざした際に丸くホバーするようにした - - 右上のサブメニュー周りの変更 - - サブメニューを閉じる際に透明な要素を置いて何もないところをクリックしたら変な所を押しちゃった、という事がないようにした - - サブメニューが引っ込まない不具合を修正した - - Twitter ログインの有効期限を1週間から3ヶ月に変更 - - 上の Cookie 有効期限変更のついでです - - 絶対パスに変更しきれていなかった部分の変更 - - 全体的な速度の高速化 - - CSS レイアウト(見た目)の調整 - - 肥大化したコードを大幅に整理 - - インストーラーの微修正 - - ffmpeg.exe → ffmpeg-tvrp.exe・QSVEncC64.exe → QSVEncC64-tvrp.exe・NVEncC64.exe → NVEncC64-tvrp.exe にそれぞれ名前を変更 - - TVRemotePlus 側で他に起動している各 exe のプロセスを謝って全て kill しないための暫定処置です - - NVEncC を 4.47 に更新 - - リリースノートを書くようにした - - 毎回変更点が多くて作業してると何をアップデートしたか忘れるためです… - - その他細かな不具合の修正を山程… + - **v1.2.0** - 2019/09/26 + - **画質設定に 1080p(1440×1080)を追加した** + - 地デジと BS の殆どの局では 1440×1080 で放送されているので、サイズを抑えながら普通に見るのと変わらない画質で視聴できます + - 以前の 1080p だとどうしてもスマホなどの低スペック端末ではストリームがカクつく事があったのですが、1440×1080 であればセグメントのダウンロード時間を 1920×1080 よりも低く抑えられるため、より高画質でカクつかずに再生できるようになっていると思います + - 特に Chromecast 再生時や大画面ディスプレイでの再生時に違いが良く出るような気がします + - これに伴い、インストール時のデフォルト画質を 1080p に変更した他、以前の 1080p(1920×1080)は 1080p-high という扱いとしました + - **地デジと BS・CS の混合チューナーに対応した** + - 前々から色々な方に要望されていたのですが、ようやく実装しました + - こちらに混合チューナーの環境がないので動くかどうか微妙… + - 地デジと BS・CS 双方を同じ BonDriver で再生させる場合は、設定ページの BonDriver のデフォルト設定を(地デジ用)・(BS・CS用)どちらとも同じ BonDriver を指定して下さい + - これに伴い、BonDriver フォルダに無印( T0 や S0 が付いていない)BonDriver があればそれも選べるようにしました + - ついでに UTF-16LE(BOM 付き)がうまく読み込めず一部チャンネルの実況勢いが表示されない不具合も修正しました + - **Chromecast キャスト機能を大幅に改善** + - 今回のアップデートのメインです(3日ぶっ通しでようやく…) + - **PC・Android の Chrome かつ https でアクセスしている場合に Chrome ネイティブ機能でキャストするようにした** + - 情報が不親切な英語ドキュメントしかなくてかなり大変でした… + - http アクセスだと動かないのでネイティブ機能を使う場合は(予め PWA 用の証明書を端末にインストールした上で)https でアクセスしてください + - これにより Chromecast と 手元のプレイヤーの再生位置が綺麗に同期されるようになります(中々同期出来ず大変でした…) + - JavaScript からのキャストは(当然ながら)Chrome 以外のブラウザでは使えないので今まで通りの方法でキャスト出来るようにしました + - iOS 版 Chrome は対応してるのかしてないのか良く分からないので当面は他ブラウザ同様の対応としました + - 今までの方もネイティブ機能に合わせ動作等を改善しました + - あと Chromecast でなくても Google Cast に対応している製品( AndroidTV だとか GoogleHome だとか GoogleNestHub だとか)であれば同様にキャスト出来るはずです + - プレイヤー周り + - **TVRemotePlus で使用している動画プレイヤー(DPlayer)を最新版に更新した** + - **Android スマートフォンでの再生時にフルスクリーンにした場合画面を横に回転するようにした** + - iPhone・iPad はそもそもフルスクリーン API が極めて限定的対応かつ Screen Orientation API 非対応なので無理です + - たまに動画のシーク時にプレイヤーが再生と停止を繰り返してバグる不具合を修正・その他シーク周りの改善 + - コメント描画のさらなる高速化 + - 本当はこれ以上高速化したい(特にスマホ)んですがもう限界そう…(最初の頃と比べれば大分カクつかなくなったし…) + - 実験台にしてるスマホがミドルレンジだししょうがないね + - 再生ページのロード時の動作を高速化 + - スタイルの調整 + - NVEncC を 4.50 に更新 + - その他不具合修正など… - - **v1.0.2** - 2019/08/30 - - ストリームの画質を向上 - - Chromecast キャスト機能の動作を修正 - - 設定が反映できない不具合を修正 - - その他不具合修正のみです + - **v1.1.0** - 2019/09/13 + - **新規機能の追加はあまりありませんが、ほぼ全てのファイルを修正したのでメジャーバージョンアップです** + - 諸々不具合が修正されていると思います + - コメントのフォントサイズをある程度変えられるようにした + - プレイヤーのコア部分を弄ったので疲れました… + - ファイル再生時に字幕をストリームに含めるかどうか設定できるようにした + - ごく稀に字幕をストリームに含めると途中でエンコードに失敗してしまう録画があるためです + - デフォルトはオンになっています、問題があった時のみオフにすることをおすすめします + - TVRemoteViewer での番組表取得に関する情報を追記 + - コメント一覧をスクロールしている時に新しいコメントが来ると強制で下にスクロールされてしまう不具合を修正 + - 色々悩みましたが、結局 YouTube Live っぽい仕様にしました + - 生放送時に一時停止した状態にするとコメントが溜まりに溜まる不具合を修正 + - ニコニコ実況がメンテナンスの際にメンテナンス表示を出すようにした + - 丁度最近メンテナンスがあったのでそのついでです + - ニコニコ実況の過去ログ取得時にコメントが多すぎる(例:ラピュタ)と実行時間制限を超えてタイムアウトしコメントが取得できない不具合を修正 + - 正直ラピュタレベルはコメントが多すぎてまともに再生できませんでした…(Canvasにしたほうが大量のコメントには強いんでしょうけど、改造元のプレイヤーがCSSアニメーションで実現させる方式のためどうしてもコメントが多くなるとかなり重くなってしまいます) + - iOS 環境でファイル再生時にシークが出来ない(バー自体が出ない)不具合を修正 + - Safari の仕様で HLS ストリーミング再生時は video.duration が取得出来ないらしく、こちらもプレイヤーのコア部分を大幅に弄ったので疲れました + - スマホなどのタッチデバイスでのシーク時に再生させながらシークしようとするとシークバーが荒ぶる不具合を修正 + - シーク中は一旦動画を一時停止させるようにしました + - これもプレイヤーのコア部分を大幅n(ry + - 個人設定が数日で切れてしまう不具合を修正 + - Cookie の有効期限を365日にしました + - 個人設定の読み込みに失敗する不具合を修正 + - スマホで見た際にヘッダーのロゴを中央寄せするようにした + - ヘッダーのアイコンにマウスをかざした際に丸くホバーするようにした + - 右上のサブメニュー周りの変更 + - サブメニューを閉じる際に透明な要素を置いて何もないところをクリックしたら変な所を押しちゃった、という事がないようにした + - サブメニューが引っ込まない不具合を修正した + - Twitter ログインの有効期限を1週間から3ヶ月に変更 + - 上の Cookie 有効期限変更のついでです + - 絶対パスに変更しきれていなかった部分の変更 + - 全体的な速度の高速化 + - CSS レイアウト(見た目)の調整 + - 肥大化したコードを大幅に整理 + - インストーラーの微修正 + - ffmpeg.exe → ffmpeg-tvrp.exe・QSVEncC64.exe → QSVEncC64-tvrp.exe・NVEncC64.exe → NVEncC64-tvrp.exe にそれぞれ名前を変更 + - TVRemotePlus 側で他に起動している各 exe のプロセスを謝って全て kill しないための暫定処置です + - NVEncC を 4.47 に更新 + - リリースノートを書くようにした + - 毎回変更点が多くて作業してると何をアップデートしたか忘れるためです… + - その他細かな不具合の修正を山程… - - **v1.0.1** - 2019/08/29 - - **コメント描画、サイドメニュー開閉などの随所で使われているアニメーションの大幅な高速化** - - フロントエンド部分は全て jQuery で書いていたのですが jQuery 自体がかなり遅く、0.5秒ごとなどに実行する処理にしては重すぎたので定期的に実行する処理はピュアJavaScriptで書き直しました - - animate() は Velocity.js で置き換えました - - PCだとよくわからないと思いますが、特にローエンドの Android などで今までカクついていたコメントが大分ましになっていると思います(スペックによりますが) - - **また、プレイヤーの設定→コメントを無制限に表示 をオフにすると、生放送時で0.5秒ごとに実行するコメント取得処理時に一度に描画するコメントを8個に制限します** - - 金曜ロードショーなど、実況勢いが200を超えるような番組で効果を発揮します - - **低スペックPCやスマホではこの設定をオフにしておくことをお勧めします** - - BonDriverチャンネル設定ファイル(.ch2)の取得処理の変更 - - 今まで認識出来ていた.ch2は概ね認識できると思います(思いたい) - - **BonDriver_FSUSB2N.ch2 などのファイル名の場合、地上波用かBS・CS用か認識できません** - - 必ず地上波用であれば BonDriver_FSUSB2N_T.ch2・BS・CS用であれば BonDriver_FSUSB2N_S.ch2 のように、ファイル名の最後に T(0-9)かS(0-9)を付けるようにしてください - - ファイル再生画面の更新時にフェードを掛けるようにした - - 今までより綺麗だと思います - - Firefoxにてブックマークから開いた場合に地デジ・BS・CS切り替えタブが機能しない問題を改善 - - インストーラーで予め録画ファイルのあるフォルダを設定出来るようにした - - Chromecast機能が動かない問題を修正 - - Chromecast機能の再生/停止関連の動作を一部修正 - - 操作の遅延が少なくなると思います - - ファイル再生画面でリストがない場合にエラーになる問題を修正 - - ストリーム再起動が重複する問題を修正 - - その他不具合修正諸々 + - **v1.0.2** - 2019/08/30 + - ストリームの画質を向上 + - Chromecast キャスト機能の動作を修正 + - 設定が反映できない不具合を修正 + - その他不具合修正のみです + - **v1.0.1** - 2019/08/29 + - **コメント描画、サイドメニュー開閉などの随所で使われているアニメーションの大幅な高速化** + - フロントエンド部分は全て jQuery で書いていたのですが jQuery 自体がかなり遅く、0.5秒ごとなどに実行する処理にしては重すぎたので定期的に実行する処理はピュアJavaScriptで書き直しました + - animate() は Velocity.js で置き換えました + - PCだとよくわからないと思いますが、特にローエンドの Android などで今までカクついていたコメントが大分ましになっていると思います(スペックによりますが) + - **また、プレイヤーの設定→コメントを無制限に表示 をオフにすると、生放送時で0.5秒ごとに実行するコメント取得処理時に一度に描画するコメントを8個に制限します** + - 金曜ロードショーなど、実況勢いが200を超えるような番組で効果を発揮します + - **低スペックPCやスマホではこの設定をオフにしておくことをお勧めします** + - BonDriverチャンネル設定ファイル(.ch2)の取得処理の変更 + - 今まで認識出来ていた.ch2は概ね認識できると思います(思いたい) + - **BonDriver_FSUSB2N.ch2 などのファイル名の場合、地上波用かBS・CS用か認識できません** + - 必ず地上波用であれば BonDriver_FSUSB2N_T.ch2・BS・CS用であれば BonDriver_FSUSB2N_S.ch2 のように、ファイル名の最後に T(0-9)かS(0-9)を付けるようにしてください + - ファイル再生画面の更新時にフェードを掛けるようにした + - 今までより綺麗だと思います + - Firefoxにてブックマークから開いた場合に地デジ・BS・CS切り替えタブが機能しない問題を改善 + - インストーラーで予め録画ファイルのあるフォルダを設定出来るようにした + - Chromecast機能が動かない問題を修正 + - Chromecast機能の再生/停止関連の動作を一部修正 + - 操作の遅延が少なくなると思います + - ファイル再生画面でリストがない場合にエラーになる問題を修正 + - ストリーム再起動が重複する問題を修正 + - その他不具合修正諸々 - - **v1.0.0** - 2019/08/27 - - **ついに正式版になりました!**(いつまでもRC版できりがなさそうなので…) - - 環境設定設定を設定ページから変更できるようにした - - これで config.php を一々いじる必要がなくなる他、設定ミスで文法エラーが起きることもなくなり非常に使いやすくなると思います - - 録画ファイル増減時にリストを自動で更新するようにした - - 地デジのチャンネルに BonDriver_*S0.dll などBSCS用BonDriverを、BSCSのチャンネルに BonDriver_*T0.dll などを表示しないようにした - - 設定ページを作るにあたり不都合になったので一緒に修正しました - - ストリームが途中で止まってしまった場合に20秒以上ストリームの更新がない事を検知してストリームを再起動するようにした - - ストリーム開始して30秒以上音沙汰がなければ失敗したと判定して自動でストリーム終了するようにした - - ファイル再生画面の画面描画時にフェードアニメーションを追加 - - ←キーで5秒巻き戻し・→キーで5秒早送り・スペースキーで再生/停止、(プレイヤーにフォーカスが当たっている状態で)↑キーで音量+・↓キーで音量- が出来るようにした - - 実際はもっと前から出来たのですが、あまり認知されていなかったのと動作が微妙だったのでまとめて修正しました - - Twitter ログイン時に Consumer Key 等が間違っていて認証に失敗した際にエラーメッセージを出すようにした - - サイドメニューのバージョン欄を version 1.0.0 のように表示するようにした - - アイコンの更新 - - その他諸々の不具合修正 \ No newline at end of file + + - **v1.0.0** - 2019/08/27 + - **ついに正式版になりました!**(いつまでもRC版できりがなさそうなので…) + - 環境設定設定を設定ページから変更できるようにした + - これで config.php を一々いじる必要がなくなる他、設定ミスで文法エラーが起きることもなくなり非常に使いやすくなると思います + - 録画ファイル増減時にリストを自動で更新するようにした + - 地デジのチャンネルに BonDriver_*S0.dll などBSCS用BonDriverを、BSCSのチャンネルに BonDriver_*T0.dll などを表示しないようにした + - 設定ページを作るにあたり不都合になったので一緒に修正しました + - ストリームが途中で止まってしまった場合に20秒以上ストリームの更新がない事を検知してストリームを再起動するようにした + - ストリーム開始して30秒以上音沙汰がなければ失敗したと判定して自動でストリーム終了するようにした + - ファイル再生画面の画面描画時にフェードアニメーションを追加 + - ←キーで5秒巻き戻し・→キーで5秒早送り・スペースキーで再生/停止、(プレイヤーにフォーカスが当たっている状態で)↑キーで音量+・↓キーで音量- が出来るようにした + - 実際はもっと前から出来たのですが、あまり認知されていなかったのと動作が微妙だったのでまとめて修正しました + - Twitter ログイン時に Consumer Key 等が間違っていて認証に失敗した際にエラーメッセージを出すようにした + - サイドメニューのバージョン欄を version 1.0.0 のように表示するようにした + - アイコンの更新 + - その他諸々の不具合修正 \ No newline at end of file diff --git a/require.php b/require.php index 0ded93b8..1e338812 100644 --- a/require.php +++ b/require.php @@ -17,7 +17,11 @@ // ffmpeg の名前とパス $ffmpeg_exe = 'ffmpeg-tvrp.exe'; -$ffmpeg_path = $base_dir.'bin/'.$ffmpeg_exe; +$ffmpeg_path = $base_dir.'bin/ffmpeg/'.$ffmpeg_exe; + +// ffprobe の名前とパス +$ffprobe_exe = 'ffprobe-tvrp.exe'; +$ffprobe_path = $base_dir.'bin/ffmpeg/'.$ffprobe_exe; // QSVEncC の名前とパス $qsvencc_exe = 'QSVEncC64-tvrp.exe'; diff --git a/stream.php b/stream.php index 09733381..e6119e2a 100644 --- a/stream.php +++ b/stream.php @@ -152,11 +152,13 @@ function stream_start($ch, $sid, $tsid, $BonDriver, $quality, $encoder, $subtitl switch ($subtitle) { case 'true': + // $subtitle_ffmpeg_cmd = '-scodec copy'; // ffmpeg4.2以降用・ffmpeg側のバグでうまく行かないので保留 $subtitle_ffmpeg_cmd = '-map 0 -ignore_unknown'; $subtitle_other_cmd = '--sub-copy asdata'; break; case 'false': + // $subtitle_ffmpeg_cmd = '-sn'; // ffmpeg4.2以降用・ffmpeg側のバグでうまく行かないので保留 $subtitle_ffmpeg_cmd = ''; $subtitle_other_cmd = ''; break; @@ -259,7 +261,7 @@ function stream_start($ch, $sid, $tsid, $BonDriver, $quality, $encoder, $subtitl $stream_cmd = 'start /min "ffmpeg Streaming..." '.$ffmpeg_path. // 入力 - ' -i "'.$receive.'"'. + ' -dual_mono_mode main -i "'.$receive.'"'. // HLS ' -f hls'. ' -hls_segment_type mpegts'. @@ -272,7 +274,7 @@ function stream_start($ch, $sid, $tsid, $BonDriver, $quality, $encoder, $subtitl ' -vcodec libx264 -vb '.$vb.' -vf yadif=0:-1:1,scale='.$width.':'.$height. ' -aspect 16:9 -preset veryfast -r 30000/1001'. // 音声 - ' -acodec aac -ab '.$ab.' -ar '.$samplerate.' -ac 2 -dual_mono_mode main'. + ' -acodec aac -ab '.$ab.' -ar '.$samplerate.' -ac 2'. // 字幕 ' '.$subtitle_ffmpeg_cmd. // その他 @@ -391,15 +393,18 @@ function stream_file($filepath, $quality, $encoder, $subtitle){ switch ($subtitle) { case 'true': + // $subtitle_ffmpeg_cmd = '-scodec copy'; // ffmpeg4.2以降用・ffmpeg側のバグでうまく行かないので保留 $subtitle_ffmpeg_cmd = '-map 0 -ignore_unknown'; $subtitle_other_cmd = '--sub-copy asdata'; break; case 'false': + // $subtitle_ffmpeg_cmd = '-sn'; // ffmpeg4.2以降用・ffmpeg側のバグでうまく行かないので保留 $subtitle_ffmpeg_cmd = ''; $subtitle_other_cmd = ''; break; + default: $subtitle_ffmpeg_cmd = ''; $subtitle_other_cmd = ''; @@ -493,7 +498,7 @@ function stream_file($filepath, $quality, $encoder, $subtitle){ $stream_cmd = 'start /min "ffmpeg Encoding..." '.$ffmpeg_path. // 入力 - ' -i "'.$filepath.'"'. + ' -dual_mono_mode main -i "'.$filepath.'"'. // HLS ' -f hls'. ' -hls_segment_type mpegts'. @@ -506,7 +511,7 @@ function stream_file($filepath, $quality, $encoder, $subtitle){ ' -vcodec libx264 -vb '.$vb.' -vf yadif=0:-1:1,scale='.$width.':'.$height. ' -aspect 16:9 -preset veryfast -r 30000/1001'. // 音声 - ' -acodec aac -ab '.$ab.' -ar '.$samplerate.' -ac 2 -dual_mono_mode main'. + ' -acodec aac -ab '.$ab.' -ar '.$samplerate.' -ac 2'. // 字幕 ' '.$subtitle_ffmpeg_cmd. // その他