l3tnun / EPGStation

Mirakurun を使用した録画管理ソフト
https://twitter.com/l3tnun
MIT License
547 stars 148 forks source link

録画時のサムネイル生成と録画後のエンコード処理がうまく走らない #516

Closed MicotoTisaki closed 3 years ago

MicotoTisaki commented 3 years ago

環境

Issue

連続で録画をしていた際、いくつかの録画データのサムネイルが生成されず、その後自動でエンコードを走らせるようにしているのですが、サムネイルが生成されていない録画データのみエンコードに失敗してエンコードタブの中にタスクとして残り続けてしまいました。 また、サムネイルの生成されていない録画データに関しては録画済みの中にはあるのですが、ストリーミング再生はファイルの読み込みがうまく行かず再生することが出来ませんでした。 以下に録画時のsystem.logと後に手動でエンコード処理をした際のencode.logを添付します。

system.log

[2021-08-14T04:00:12.593] [ERROR] system - create thumbnail cmd error: 1 [2021-08-14T04:00:12.594] [ERROR] system - create thumbnail error: 1223 [2021-08-14T04:00:12.594] [ERROR] system - Error: CreateThumbnailExitError at ThumbnailManageModel. (/app/dist/model/operator/thumbnail/model/operator/thumbnail/ThumbnailManageModel.ts:159:28) at Generator.next () at fulfilled (/app/dist/model/operator/thumbnail/ThumbnailManageModel.js:36:58) at runMicrotasks () at processTicksAndRejections (internal/process/task_queues.js:95:5) [2021-08-14T04:00:12.679] [INFO] system - create thumbnail: 1191, /app/thumbnail/872.jpg

encode.log

[2021-08-14T06:30:49.414] [INFO] encode - add new encode: 2 [2021-08-14T06:30:49.421] [INFO] encode - encode start. mode: H.264 name: 空からクルージング特別編「イタリア・シチリア島一周の旅」 file: /app/recorded/2021年08月14日02時34分00秒-空からクルージング特別編「イタリア・シチリア島一周の旅」.m2ts -> /app/recorded/2021年08月14日02時34分00秒-空からクルージング特別編「イタリア・シチリア島一周の旅」.mp4 [2021-08-14T06:30:49.421] [INFO] encode - encodeCmd.suffix: .mp4 [2021-08-14T06:30:49.421] [INFO] encode - queueItem.directory: undefined [2021-08-14T06:30:49.421] [INFO] encode - outputFilePath: /app/recorded/2021年08月14日02時34分00秒-空からクルージング特別編「イタリア・シチリア 島一周の旅」.mp4 [2021-08-14T06:30:49.427] [INFO] encode - create new encode process: 1628890249427 [2021-08-14T06:31:00.084] [INFO] encode - exit code: 0, signal: null [2021-08-14T06:31:00.085] [INFO] encode - Successfully encod: 2 /app/recorded/2021年08月14日02時34分00秒-空からクルージング特別編「イタリア・シ チリア島一周の旅」.mp4 [2021-08-14T06:31:00.085] [INFO] encode - rmOrg: true, hasSam: false

その他必要なログがありましたら仰っていただければ探して添付します。

l3tnun commented 3 years ago

はじめに、サムネイル生成とエンコードはプロセスが別なのでほぼ依存関係は無いです。 それぞれ個別に原因を探るのが良いかと思います。 エンコードとストリーミングに関しては、同一プロセスかつエンコードやストリーミングに必要なリソースを共有しいるため依存関係があります。


まず、サムネイルが生成できない問題ですが、ログを見るにサムネイル生成のコマンドが正常に終了していないようです。(終了コードが 1) これだけですと原因がわからないので、デバッグ出力を有効にしてサムネイルを再生成したときのログを貼ってください。

確認になりますが、以下の点を教えて下さい


次にエンコードの件ですが、こちらはログを見る限り正常に処理が完了しているように見えます。 ログはこれであっていますでしょうか?

以下の点も確認をお願いします

  1. エンコード完了後もエンコードページのエンコード中に残るとのことですが、ページをリロードしても状況は変わらないですか?
  2. epgstation を再起動後、手動で同じファイルをエンコードさせてもエンコード中に残る現象は発生しますか?

最後にサムネイルが生成されない動画でのストリーミングが失敗する件についてですが、 以下の点を確認お願いします。

  1. ストリーミング再生に使用したファイルはなにか (TSファイルかエンコードしたファイルか)
  2. ストリーミング再生に使用した配信方式はなにか (WebM, MP4, HLS)
  3. config/config.ymlrecorded 以下に変更を加えたか。加えたのであれば変更内容を記載してください
  4. epgstation 再起動後にエンコード処理を行う前でも、ストリーミング再生に失敗するか

ストリーミング再生が失敗する現象に再現性があるようでしたら、以下手順でログの収集をお願いします。

ログ収集手順 (検証が終わったら戻してください)

  1. config/serviceLogConfig.ymlcategories -> stream -> levelinfo から debug に変更
  2. epgstation を再起動
  3. ストリーミングを行う
  4. logs/Service/stream.log を確認する
MicotoTisaki commented 3 years ago

返信ありがとうございます。 operatorLogConfig.ymlをdebugに変更し、apiから再生成を叩いてもサムネイルは再生成されず、またlogs/Operator/system.logとlogs/Service/system.logには何も出力されませんでした。

また、config/config.ymlの設定項目は以下のようになっていました。 thumbnail: ‘%ROOT%/thumbnail’ thumbnailSize: 480x270 thumbnailPosition: 5

ffmpegはDockerfileから録画時は4.2.4で録画していましたが、どこかのissueで4.1.6にすると安定するというのを見つけて4.1.6にしてあります。

エンコードに関してですが、リロードしても症状は改善されず、epgstationを再起動させ手動で入れるとエンコードが数秒で終わり最初に添付したようなログが出力されていました。しかし、Streamのプルダウンにはエンコード後のファイルは存在せず閲覧することができませんでした。

最後のサムネイルが生成されていないファイルの再生に関してですが、これはエンコードファイルがうまく生成されなかったため再生で試したファイルはTSファイルです。 配信方法はWebM,MP4,HLSの全てで試しましたが再生されませんでした。 config/config.ymlのrecorded以下は変更は加えていませんが、docker-compose.ymlのepgstation:volumes:/app/recordedのみhddRaidのマウントポイントに変更しています 。 epgstation再起動後のエンコード処理前でもストリーミング再生は失敗してしましまいます。

logs/Service/stream.logの出力は以下のようになっていました。

[2021-08-14T15:19:53.230] [INFO] stream - start stream: 0 [2021-08-14T15:19:54.887] [INFO] stream - create file stream: /app/recorded/2021年08月14日03時00分00秒-美しき日本の山々「大台ケ原山、巻機山、早池峰山」.m2ts [2021-08-14T15:19:54.888] [INFO] stream - create encode process: /usr/local/bin/ffmpeg -dual_mono_mode main -i pipe:0 -sn -threads 3 -c:a libvorbis -ar 48000 -b:a 192k -ac 2 -c:v libvpx-vp9 -vf yadif,scale=-2:720 -b:v 3000k -deadline realtime -speed 4 -cpu-used -8 -y -f webm pipe:1 [2021-08-14T15:19:54.919] [DEBUG] stream - ffmpeg version 4.2.4 Copyright (c) 2000-2020 the FFmpeg developers built with gcc 8 (Debian 8.3.0-6) configuration: --prefix=/usr/local --disable-shared --pkg-config-flags=--static --enable-gpl --enable-libass --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-version3 --enable-libaribb24 --enable-nonfree --disable-debug --disable-doc --enable-vaapi [2021-08-14T15:19:54.922] [DEBUG] stream - libavutil 56. 31.100 / 56. 31.100 libavcodec 58. 54.100 / 58. 54.100 libavformat 58. 29.100 / 58. 29.100 libavdevice 58. 8.100 / 58. 8.100 libavfilter 7. 57.100 / 7. 57.100 libswscale 5. 5.100 / 5. 5.100 libswresample 3. 5.100 / 3. 5.100 libpostproc 55. 5.100 / 55. 5.100 [2021-08-14T15:19:54.943] [DEBUG] stream - [libaribb24 @ 0x560598bd6d00] arib parser was created [libaribb24 @ 0x560598bd6d00] arib decoder was created [2021-08-14T15:19:54.943] [DEBUG] stream - [libaribb24 @ 0x560598bca0c0] arib parser was created [libaribb24 @ 0x560598bca0c0] arib decoder was created [2021-08-14T15:20:01.699] [DEBUG] stream - [mpegts @ 0x560598bc6440] nothing to probe for stream 2 [2021-08-14T15:20:01.705] [DEBUG] stream - [mpegts @ 0x560598bc6440] Could not find codec parameters for stream 0 (Video: mpeg2video ([2][0][0][0] / 0x0002), none(tv)): unspecified size Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x560598bc6440] Could not find codec parameters for stream 1 (Video: mpeg2video ([2][0][0][0] / 0x0002), none(tv)): unspecified size Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x560598bc6440] Could not find codec parameters for stream 2 (Audio: aac ([15][0][0][0] / 0x000F), 0 channels, fltp): unspecified sample rate Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x560598bc6440] Could not find codec parameters for stream 7 (Unknown: none ([13][0][0][0] / 0x000D)): unknown codec Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x560598bc6440] Could not find codec parameters for stream 8 (Unknown: none ([13][0][0][0] / 0x000D)): unknown codec Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x560598bc6440] Could not find codec parameters for stream 9 (Unknown: none ([13][0][0][0] / 0x000D)): unknown codec Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x560598bc6440] Could not find codec parameters for stream 10 (Unknown: none ([13][0][0][0] / 0x000D)): unknown codec Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x560598bc6440] Could not find codec parameters for stream 11 (Unknown: none ([13][0][0][0] / 0x000D)): unknown codec Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x560598bc6440] Could not find codec parameters for stream 12 (Unknown: none ([13][0][0][0] / 0x000D)): unknown codec Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x560598bc6440] Could not find codec parameters for stream 13 (Unknown: none ([13][0][0][0] / 0x000D)): unknown codec Consider increasing the value for the 'analyzeduration' and 'probesize' options [2021-08-14T15:20:01.706] [DEBUG] stream - [libaribb24 @ 0x560598bd6d00] arib decoder destroyed [libaribb24 @ 0x560598bd6d00] arib parser was destroyed [libaribb24 @ 0x560598bca0c0] arib decoder destroyed [libaribb24 @ 0x560598bca0c0] arib parser was destroyed

よろしくお願いします。

l3tnun commented 3 years ago

確認ありがとうございます。

サムネイルについて。

operatorLogConfig.ymlをdebugに変更し、apiから再生成を叩いてもサムネイルは再生成されず、またlogs/Operator/system.logとlogs/Service/system.logには何も出力されませんでした。

なにも出力されないというのは、本当に何も出力されず空ということですか? logs/Operator/system.log に起動時のログや、サムネイル生成のための queue の追加のログ、サムネイル生成時の ffmpeg の動作ログが残るはずです。 もし、本当に空なのであれば config/operatorLogConfig.yml の設定がなにかおかしいです。


エンコードについて。

最初に添付したようなログであれば、エンコードによってファイルが生成されているかと思いますがファイルは実際に存在しますか?

[2021-08-14T06:31:00.085] [INFO] encode - Successfully encod: 2 /app/recorded/2021年08月14日02時34分00秒-空からクルージング特別編「イタリア・シチリア島一周の旅」.mp4

もし存在するのであればファイルが再生可能か確認してください。 もし再生できないのであれば、ffmpegが異常終了したはずなのに正常終了した扱いになっているので、 これも原因調査のために ffmpeg の動作ログを確認する必要があるかと思います。

確認手順は以下になります。

  1. config/serviceLogConfig.ymlcategories -> encode -> levelinfo から debug に変更
  2. epgstation を再起動
  3. logs/Service/encode.log ログを確認

ストリーミングについて。

config/config.ymlのrecorded以下は変更は加えていませんが、docker-compose.ymlのepgstation:volumes:/app/recordedのみhddRaidのマウントポイントに変更しています

すいません、私の質問が間違っていました。 正確には config/config.ymlstream -> recorded 以下に更新を加えていないかどうかですね。 logs/Service/stream.log のログを見る限り特に変更はされていないようですね。

ストリーミングの失敗原因ですが、aribb24 の影響か正常に ffmpeg が動いていないように見えます。

[2021-08-14T15:19:54.919] [DEBUG] stream - ffmpeg version 4.2.4 Copyright (c) 2000-2020 the FFmpeg developers built with gcc 8 (Debian 8.3.0-6)

ffmpeg を 4.2.4 から 4.1.x に差し替えて動作を確認してもらえますか?aribb24 の影響であれば解消されるはずです。 ffmpeg 4.1.x で動かなければなにかおかしいです。


ここまで書いてふと思いましたが、今回のサムネイル生成やエンコードがうまく行かないファイルは特定のファイルだけでしょうか? もしそのようであれば、そのファイルだけスクランブル解除がうまく行っていないのではないでしょうか。 スクランブル解除が正しくできているか確認してもらえますか?

MicotoTisaki commented 3 years ago

サムネイルについて 一応何か書き間違いがあったらと思いsampleから再度コピーをしてsystemをdebugに変更の後再起動をかけ、再起動直後からAPIによるサムネイル再生成の送信を行い終わったところまでのlogを添付いたします。

[2021-08-14T18:29:17.214] [INFO] system - all reservation update start [2021-08-14T18:29:17.215] [INFO] system - update rule reservation: 2 [2021-08-14T18:29:17.225] [INFO] system - { insert: 0, update: 0, delete: 0 } [2021-08-14T18:29:17.225] [INFO] system - successful update rule reservation: 2 [2021-08-14T18:29:17.236] [INFO] system - all reservation update finish [2021-08-14T18:30:27.634] [INFO] system - check mirakurun [2021-08-14T18:30:27.654] [INFO] system - check db [2021-08-14T18:30:28.717] [INFO] system - check db [2021-08-14T18:30:29.721] [INFO] system - check db [2021-08-14T18:30:29.775] [INFO] system - start service pid: 29 [2021-08-14T18:30:29.776] [INFO] system - start recordings cleanup [2021-08-14T18:30:29.783] [INFO] system - finish recordings cleanup [2021-08-14T18:30:29.784] [INFO] system - start reserves cleanup [2021-08-14T18:30:29.788] [INFO] system - finish reserves cleanup [2021-08-14T18:30:29.794] [INFO] system - start epg updater pid: 36 [2021-08-14T18:30:32.782] [INFO] system - all reservation update start [2021-08-14T18:30:32.787] [INFO] system - update rule reservation: 2 [2021-08-14T18:30:32.799] [INFO] system - { insert: 0, update: 0, delete: 0 } [2021-08-14T18:30:32.800] [INFO] system - successful update rule reservation: 2 [2021-08-14T18:30:32.810] [INFO] system - all reservation update finish

エンコードについて ファイルは生成されていましたが、0byteファイルになっておりました。 また、servicelogConfig.ymlのencodeをdebugに変更し、ffmpegを4.1にDockerfileから変更、再buildを行った後TSファイルを手動でエンコードした際のlog/Service/encode.logを以下に添付します。

[2021-08-14T18:41:54.296] [INFO] encode - add new encode: 1 [2021-08-14T18:41:54.304] [INFO] encode - encode start. mode: H.264 name: 美しき日本の山々「大台ケ原山、巻機山、早池峰山」 file: /app/recorded/2021年08月14日03時00分00秒-美しき日本の山々「大台ケ原山、巻機山、早池峰山」.m2ts -> /app/recorded/2021年08月14日03時00分00秒-美しき日本の山々「大台ケ原山、巻機山、早池峰山」.mp4 [2021-08-14T18:41:54.305] [INFO] encode - encodeCmd.suffix: .mp4 [2021-08-14T18:41:54.305] [INFO] encode - queueItem.directory: undefined [2021-08-14T18:41:54.305] [INFO] encode - outputFilePath: /app/recorded/2021年08月14日03時00分00秒-美しき日本の山々 「大台ケ原山、巻機山、早池峰山」.mp4 [2021-08-14T18:41:54.310] [INFO] encode - create new encode process: 1628934114310 [2021-08-14T18:41:59.278] [INFO] encode - exit code: 0, signal: null [2021-08-14T18:41:59.278] [INFO] encode - Successfully encod: 1 /app/recorded/2021年08月14日03時00分00秒-美しき日本 の山々「大台ケ原山、巻機山、早池峰山」.mp4 [2021-08-14T18:41:59.278] [INFO] encode - rmOrg: false, hasSam: false

ストリーミングについて ffmpegのversionを4.1にダウングレードしようと思い、Dockerfileの4.2.4となっている所を4.1に書き換えdocker-compose build && docker-compose up -dを走らせた所以下のようなエラーが出てしまい上手くffmpegのversionが下がりませんでした。自分の技術不足で申し訳ないのですが、ffmpegのダウングレードの方法も教えていただけないでしょうか。

Selecting previously unselected package libaribb24-0:amd64. (Reading database ... 25496 files and directories currently installed.) Preparing to unpack .../libaribb24-0_1.0.3-2_amd64.deb ... Unpacking libaribb24-0:amd64 (1.0.3-2) ... Selecting previously unselected package libaribb24-dev:amd64. Preparing to unpack .../libaribb24-dev_1.0.3-2_amd64.deb ... Unpacking libaribb24-dev:amd64 (1.0.3-2) ... Setting up libaribb24-0:amd64 (1.0.3-2) ... Setting up libaribb24-dev:amd64 (1.0.3-2) ... Processing triggers for libc-bin (2.28-10) ... Unknown option "--enable-libaribb24". See ./configure --help for available options. ERROR: Service 'epgstation' failed to build: The command '/bin/sh -c apt-get update && apt-get -y install $DEV && apt-get -y install yasm libx264-dev libmp3lame-dev libopus-dev libvpx-dev && apt-get -y install libx265-dev libnuma-dev && apt-get -y install libasound2 libass9 libvdpau1 libva-x11-2 libva-drm2 libxcb-shm0 libxcb-xfixes0 libxcb-shape0 libvorbisenc2 libtheora0 libaribb24-dev && mkdir /tmp/ffmpeg_sources && cd /tmp/ffmpeg_sources && curl -fsSL http://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 | tar -xj --strip-components=1 && ./configure --prefix=/usr/local --disable-shared --pkg-config-flags=--static --enable-gpl --enable-libass --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-version3 --enable-libaribb24 --enable-nonfree --disable-debug --disable-doc && make -j$(nproc) && make install && apt-get -y remove $DEV && apt-get autoremove -y && apt-get clean && rm -rf /var/lib/apt/lists/ && rm -rf /tmp/' returned a non-zero code: 1

今回の録画ファイルは1日30chの同時録画でまとめて取り、そのまま自動エンコードの方へ処理を回して必要容量の概算をしようと思い作業をしていた所で発生しました。 いくつかの録画データがサムネイルが生成されておらず、それらだけエンコードが走っておらず、TSファイルのストリーミング再生が不可能だった事で発見しました。他に同時に録画をしていてサムネイルが生成されている番組は通常通りエンコードが完了出来、ストリーミング再生もmp4ファイルから再生可能な状態でした。

l3tnun commented 3 years ago

サムネイルについて

ログを見る限り api が実行できていないようですね。

execute ボタンの下に Responses がありますが、その下の Response body はどの様になっているでしょうか? 以下のようなレスポンスであれば何らかのログは出てくると思いますが、おそらくそうなっていないのだと思います。

{
  "code": 200
}

エンコードとストリーミングについて

ffmpeg をダウングレードすると問題なくなるかと思います。 サムネイル生成も ffmpeg の影響を受けているかもしれません。

ffmpegのダウングレードの方法も教えていただけないでしょうか。

docker-mirakurun-epgstation をお使いでしたか。

試していませんが、以下の部分を変えてもらえればよいかと思います

4行目 ENV FFMPEG_VERSION=4.2.4 -> ENV FFMPEG_VERSION=4.1 or ENV FFMPEG_VERSION=4.1.6 31行目 --enable-libaribb24 \ を削除

あと、config/enc.jshttps://github.com/l3tnun/EPGStation/blob/master/config/enc.js に差し替えてください。

MicotoTisaki commented 3 years ago

サムネイル再生成に関して localhost側からAPIを叩いたら返答がありました。

[2021-08-15T02:39:32.142] [ERROR] system - video file is not found: 903 [2021-08-15T02:39:32.142] [ERROR] system - create thumbnail error: 903 [2021-08-15T02:39:32.142] [ERROR] system - Error: VideoFileIsNotFound at ThumbnailManageModel. (/app/dist/model/operator/thumbnail/model/operator/thumbnail/ThumbnailManageModel.ts:76:19) at Generator.next () at fulfilled (/app/dist/model/operator/thumbnail/ThumbnailManageModel.js:36:58) at processTicksAndRejections (node:internal/process/task_queues:96:5)

どうやらvideo file idが違うといわれたのですが、このファイルをepgstationで開いた場合のアドレスはhttp://192.168.1.110:8888/#/recorded/detail/903?timestamp=1628962822884の様になっているのですが、この際のvideo file id は903で合っているのでしょか?もし違う場合はvideo file idを取得する方法はあるのでしょうか?

ストリーミング再生について ffmpegは何度かbuildし直したら無事versionを下げることが出来ました。しかしサムネイルが表示されていないファイルに関してはやはり再生されませんでした。その際のログを以下に添付します。

[2021-08-15T02:31:26.526] [INFO] stream - start stream: 0 [2021-08-15T02:31:29.667] [INFO] stream - create file stream: /app/recorded/2021年08月14日03時00分00秒-美しき日本の山々「大台ケ原山、巻機山、早池峰山」.m2ts [2021-08-15T02:31:29.667] [INFO] stream - create encode process: /usr/local/bin/ffmpeg -dual_mono_mode main -i pipe:0 -sn -threads 3 -c:a libvorbis -ar 48000 -b:a 192k -ac 2 -c:v libvpx-vp9 -vf yadif,scale=-2:720 -b:v 3000k -deadline realtime -speed 4 -cpu-used -8 -y -f webm pipe:1 [2021-08-15T02:31:29.676] [DEBUG] stream - ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developers built with gcc 8 (Debian 8.3.0-6) configuration: --prefix=/usr/local --disable-shared --pkg-config-flags=--static --enable-gpl --enable-libass --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-version3 --enable-nonfree --disable-debug --disable-doc libavutil 56. 22.100 / 56. 22.100 libavcodec 58. 35.100 / 58. 35.100 libavformat 58. 20.100 / 58. 20.100 libavdevice 58. 5.100 / 58. 5.100 libavfilter 7. 40.101 / 7. 40.101 libswscale 5. 3.100 / 5. 3.100 libswresample 3. 3.100 / 3. 3.100 libpostproc 55. 3.100 / 55. 3.100 [2021-08-15T02:31:37.907] [DEBUG] stream - [mpegts @ 0x5590737cb440] nothing to probe for stream 2 [2021-08-15T02:31:37.910] [DEBUG] stream - [mpegts @ 0x5590737cb440] Could not find codec parameters for stream 0 (Video: mpeg2video ([2][0][0][0] / 0x0002), none(tv)): unspecified size Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x5590737cb440] Could not find codec parameters for stream 1 (Video: mpeg2video ([2][0][0][0] / 0x0002), none(tv)): unspecified size Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x5590737cb440] Could not find codec parameters for stream 2 (Audio: aac ([15][0][0][0] / 0x000F), 0 channels, fltp): unspecified sample rate Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x5590737cb440] Could not find codec parameters for stream 7 (Unknown: none ([13][0][0][0] / 0x000D)): unknown codec Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x5590737cb440] Could not find codec parameters for stream 8 (Unknown: none ([13][0][0][0] / 0x000D)): unknown codec Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x5590737cb440] Could not find codec parameters for stream 9 (Unknown: none ([13][0][0][0] / 0x000D)): unknown codec Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x5590737cb440] Could not find codec parameters for stream 10 (Unknown: none ([13][0][0][0] / 0x000D)): unknown codec Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x5590737cb440] Could not find codec parameters for stream 11 (Unknown: none ([13][0][0][0] / 0x000D)): unknown codec Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x5590737cb440] Could not find codec parameters for stream 12 (Unknown: none ([13][0][0][0] / 0x000D)): unknown codec Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x5590737cb440] Could not find codec parameters for stream 13 (Unknown: none ([13][0][0][0] / 0x000D)): unknown codec Consider increasing the value for the 'analyzeduration' and 'probesize' options [2021-08-15T02:31:37.911] [DEBUG] stream - Input #0, mpegts, from 'pipe:0': Duration: N/A, start: 59575.805022, bitrate: N/A Program 101 Metadata: service_name : ?~����ӱ service_provider: ?~��� Stream #0:0[0x100]: Video: mpeg2video ([2][0][0][0] / 0x0002), none(tv), 90k tbr, 90k tbn, 90k tbc Stream #0:1[0x101]: Video: mpeg2video ([2][0][0][0] / 0x0002), none(tv), 90k tbr, 90k tbn, 90k tbc Stream #0:2[0x110]: Audio: aac ([15][0][0][0] / 0x000F), 0 channels, fltp [2021-08-15T02:31:37.911] [DEBUG] stream - Stream #0:3[0x130]: Data: bin_data ([6][0][0][0] / 0x0006) Stream #0:4[0x138]: Data: bin_data ([6][0][0][0] / 0x0006) Stream #0:5[0x139]: Data: bin_data ([6][0][0][0] / 0x0006) Stream #0:6[0x131]: Data: bin_data ([6][0][0][0] / 0x0006) Stream #0:7[0x140]: Unknown: none ([13][0][0][0] / 0x000D) Stream #0:8[0x160]: Unknown: none ([13][0][0][0] / 0x000D) Stream #0:9[0x161]: Unknown: none ([13][0][0][0] / 0x000D) Stream #0:10[0x162]: Unknown: none ([13][0][0][0] / 0x000D) Stream #0:11[0x170]: Unknown: none ([13][0][0][0] / 0x000D) Stream #0:12[0x171]: Unknown: none ([13][0][0][0] / 0x000D) Stream #0:13[0x158]: Unknown: none ([13][0][0][0] / 0x000D) Program 102 Metadata: service_name : ?~����ӱ service_provider: ?~��� Program 700 Metadata: service_name : ?~���?|�!<�?~� service_provider: ?~��� Program 701 Metadata: service_name : ?~���?|�!<�?~� service_provider: ?~��� Program 707 Metadata: service_name : ?~���?|����� service_provider: ?~��� Program 929 Metadata: service_name : ?~���?|����!<� service_provider: ?~��� [2021-08-15T02:31:37.911] [DEBUG] stream - Output #0, webm, to 'pipe:1': Output file #0 does not contain any stream [2021-08-15T02:31:38.417] [INFO] stream - stop stream 0

また、エンコードに関してもffmpegを4.1にダウングレードしても同様の挙動ですぐに処理が終了してしまい、今回は0byteファイルも生成されませんでした。以下にlogs/Servic/encode.logを添付します。

[2021-08-15T02:43:55.779] [INFO] encode - add new encode: 2 [2021-08-15T02:43:55.784] [INFO] encode - encode start. mode: H.264 name: 美しき日本の山々「大台ケ原山、巻機山、早池峰山」 file: /app/recorded/2021年08月14日03時00分00秒-美しき日本の山々「大台ケ原山、巻機山、早池峰山」.m2ts -> /app/recorded/2021年08月14日03時00分00秒-美しき日本の山々「大台ケ原山、巻機山、早池峰山」.mp4 [2021-08-15T02:43:55.784] [INFO] encode - encodeId: 2 [2021-08-15T02:43:55.784] [INFO] encode - encodeCmd.suffix: .mp4 [2021-08-15T02:43:55.784] [INFO] encode - queueItem.directory: undefined [2021-08-15T02:43:55.784] [INFO] encode - outputFilePath: /app/recorded/2021年08月14日03時00分00秒-美しき日本の山々「大台ケ原山、巻機山、早池峰山」.mp4 [2021-08-15T02:43:55.788] [INFO] encode - create new encode process: 1628963035788 [2021-08-15T02:43:55.811] [DEBUG] encode - -y -analyzeduration 10M -probesize 32M -i /app/recorded/2021年08月14日03時00分00秒-美しき日本の山々「大台ケ原山、巻機山、早池峰山」.m2ts -movflags faststart -vf yadif,scale=-2:720 -preset veryfast -aspect 16:9 -c:v libx264 -crf 23 -f mp4 -c:a aac -ar 48000 -ab 192k -ac 2 /app/recorded/2021年08月14日03時00分00秒-美しき日本の山々「大台ケ原山、巻機山、早池峰山」.mp4

[2021-08-15T02:43:55.818] [DEBUG] encode - ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developers built with gcc 8 (Debian 8.3.0-6) configuration: --prefix=/usr/local --disable-shared --pkg-config-flags=--static --enable-gpl --enable-libass --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-version3 --enable-nonfree --disable-debug --disable-doc libavutil 56. 22.100 / 56. 22.100 libavcodec 58. 35.100 / 58. 35.100 libavformat 58. 20.100 / 58. 20.100 libavdevice 58. 5.100 / 58. 5.100 libavfilter 7. 40.101 / 7. 40.101 libswscale 5. 3.100 / 5. 3.100 libswresample 3. 3.100 / 3. 3.100 libpostproc 55. 3.100 / 55. 3.100

[2021-08-15T02:43:59.880] [DEBUG] encode - [mpegts @ 0x558e26ef7400] nothing to probe for stream 2

[2021-08-15T02:43:59.884] [DEBUG] encode - [mpegts @ 0x558e26ef7400] start time for stream 0 is not set in estimate_timings_from_pts [mpegts @ 0x558e26ef7400] start time for stream 1 is not set in estimate_timings_from_pts [mpegts @ 0x558e26ef7400] start time for stream 2 is not set in estimate_timings_from_pts [mpegts @ 0x558e26ef7400] start time for stream 4 is not set in estimate_timings_from_pts [mpegts @ 0x558e26ef7400] start time for stream 5 is not set in estimate_timings_from_pts

[2021-08-15T02:43:59.885] [DEBUG] encode - [mpegts @ 0x558e26ef7400] Could not find codec parameters for stream 0 (Video: mpeg2video ([2][0][0][0] / 0x0002), none(tv)): unspecified size Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x558e26ef7400] Could not find codec parameters for stream 1 (Video: mpeg2video ([2][0][0][0] / 0x0002), none(tv)): unspecified size Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x558e26ef7400] Could not find codec parameters for stream 2 (Audio: aac ([15][0][0][0] / 0x000F), 0 channels, fltp): unspecified sample rate Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x558e26ef7400] Could not find codec parameters for stream 7 (Unknown: none ([13][0][0][0] / 0x000D)): unknown codec Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x558e26ef7400] Could not find codec parameters for stream 8 (Unknown: none ([13][0][0][0] / 0x000D)): unknown codec Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x558e26ef7400] Could not find codec parameters for stream 9 (Unknown: none ([13][0][0][0] / 0x000D)): unknown codec Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x558e26ef7400] Could not find codec parameters for stream 10 (Unknown: none ([13][0][0][0] / 0x000D)): unknown codec Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x558e26ef7400] Could not find codec parameters for stream 11 (Unknown: none ([13][0][0][0] / 0x000D)): unknown codec Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x558e26ef7400] Could not find codec parameters for stream 12 (Unknown: none ([13][0][0][0] / 0x000D)): unknown codec Consider increasing the value for the 'analyzeduration' and 'probesize' options [mpegts @ 0x558e26ef7400] Could not find codec parameters for stream 13 (Unknown: none ([13][0][0][0] / 0x000D)): unknown codec Consider increasing the value for the 'analyzeduration' and 'probesize' options

[2021-08-15T02:43:59.885] [DEBUG] encode - Input #0, mpegts, from '/app/recorded/2021年08月14日03時00分00秒-美しき日本の山々「大台ケ原山、巻機山、早池峰山」.m2ts': Duration: 00:00:00.50, start: 59575.805022, bitrate: 131314298 kb/s Program 101 Metadata: service_name : ?~����ӱ service_provider: ?~��� Stream #0:0[0x100]: Video: mpeg2video ([2][0][0][0] / 0x0002), none(tv), 90k tbr, 90k tbn,

[2021-08-15T02:43:59.885] [DEBUG] encode - 90k tbc Stream #0:1[0x101]: Video: mpeg2video ([2][0][0][0] / 0x0002), none(tv), 90k tbr, 90k tbn, 90k tbc Stream #0:2[0x110]: Audio: aac ([15][0][0][0] / 0x000F), 0 channels, fltp Stream #0:3[0x130]: Data: bin_data ([6][0][0][0] / 0x0006) Stream #0:4[0x138]: Data: bin_data ([6][0][0][0] / 0x0006) Stream #0:5[0x139]: Data: bin_data ([6][0][0][0] / 0x0006) Stream #0:6[0x131]: Data: bin_data ([6][0][0][0] / 0x0006)

[2021-08-15T02:43:59.886] [DEBUG] encode - Stream #0:7[0x140]: Unknown: none ([13][0][0][0] / 0x000D) Stream #0:8[0x160]: Unknown: none ([13][0][0][0] / 0x000D) Stream #0:9[0x161]: Unknown: none ([13][0][0][0] / 0x000D) Stream #0:10[0x162]: Unknown: none ([13][0][0][0] / 0x000D) Stream #0:11[0x170]: Unknown: none ([13][0][0][0] / 0x000D) Stream #0:12[0x171]: Unknown: none ([13][0][0][0] / 0x000D)

[2021-08-15T02:43:59.886] [DEBUG] encode - Stream #0:13[0x158]: Unknown: none ([13][0][0][0] / 0x000D) Program 102 Metadata: service_name : ?~����ӱ service_provider: ?~��� Program 700 Metadata: service_name : ?~���?|�!<�?~� service_provider: ?~��� Program 701 Metadata: service_name : ?~���?|�!<�?~� service_provider: ?~��� Program 707 Metadata: service_name : ?~���?|����� service_provider: ?~��� Program 929 Metadata: service_name : ?~���?|����!<� service_provider: ?~���

[2021-08-15T02:43:59.886] [DEBUG] encode - Output #0, mp4, to '/app/recorded/2021年08月14日03時00分00秒-美しき日本の山々「大台ケ原山、巻機山、早池峰山」.mp4': Output file #0 does not contain any stream

[2021-08-15T02:43:59.889] [INFO] encode - exit code: 0, signal: null [2021-08-15T02:43:59.889] [INFO] encode - Successfully encod: 2 /app/recorded/2021年08月14日03時00分00秒-美しき日本の山々「大台ケ原山、巻機山、早池峰山」.mp4 [2021-08-15T02:43:59.890] [ERROR] encode - finish encode error [2021-08-15T02:43:59.890] [ERROR] encode - Error: FileIsNotFound at EventEmitter. (/app/dist/model/ipc/model/ipc/IPCClient.ts:119:28) at Object.onceWrapper (node:events:514:26) at EventEmitter.emit (node:events:394:28) at IPCClient. (/app/dist/model/ipc/model/ipc/IPCClient.ts:80:31) at Generator.next () at /app/dist/model/ipc/IPCClient.js:39:71 at new Promise () at __awaiter (/app/dist/model/ipc/IPCClient.js:35:12) at process. (/app/dist/model/ipc/model/ipc/IPCClient.ts:77:76) at process.emit (node:events:394:28)

長くなり申し訳ありません。よろしくお願いします。

tobitti0 commented 3 years ago

横からですが。 http://192.168.1.110:8888/#/recorded/detail/903?timestamp=1628962822884903は録画番組のidですね。 903を用いて

curl -X 'GET' \
  'http://localhost:8888/api/recorded/903?isHalfWidth=true' \
  -H 'accept: application/json'

このようにして録画機でAPIを叩けば録画情報が取れると思います。(叩き方はやりやすい方法で叩いてください。) (API画面からですと、「[GET]/recorded/{recordedId}録画詳細情報を取得」という箇所から実行できます。) 実行結果の中に"videoFiles":[{"id":XXX,"name":"TS","filename":"ファイル名.ts","type":"ts","size":0000000}のような情報があると思います。 そのidがTSファイルのvideo file idですのでそのidでサムネイル生成試されると良いかと思います。

curl -X 'POST' \
  'http://localhost:8888/api/thumbnails/videos/【video file id】' \
  -H 'accept: application/json' \
  -d ''

(↑コマンドでの例)

そして、該当のTSファイルは正常なTSファイルとなっていますか? EPGStationでの再生ではなく、TSファイルをEPGStationからダウンロードなどして一般的なプレーヤーソフトであるVLCなどで正常に再生できるか一度確認したほうが良いと思います。

横から失礼しました。

MicotoTisaki commented 3 years ago

ありがとうございます。教えていただいたようにAPIを叩いたらvideo file idが取得することが出来ました。ただ、サムネイル生成はうまく行きませんでした。

そして、確かにTSファイルをVLCplayerなどで再生して確かめる事をしていなかったのでチェックしてみた所、動画の再生時間はあっているのですが動画の内容と音声などが再生できない状態でした。この場合、録画の段階でTSファイルが破損してしまったという事でいいのでしょうか?また、原因などの解明に必要な物はあるでしょうか? こちらも再度ffmpegを4.1の状態で同時録画をして再発するか確認してみます。

よろしくお願いします。

l3tnun commented 3 years ago

tsselect等で調べてみてください。 ツールの使い方についてはここでは扱わないのでご自身で調べてください。

MicotoTisaki commented 3 years ago

先程tsselectにてうまく行かなかったファイルを調べた所、scramblingの項目がかなり残っていました。 もう少し調べてみてスクランブル解除をうまく出来るかどうかやってみます。

MicotoTisaki commented 3 years ago

色々調べて調整してみた結果、同時録画量に対してICカードリーダーの性能が追いついておらず、一部スクランブル解除が不完全な状態になり、その結果エンコードやサムネイル生成が出来ていなかったっぽいです。 具体的にはPX-Q3PE42とPX-MLT8PE2で最大32ch、同時20ch以上の録画が発生したタイミングでカードリーダーがAU9540 Smartcard Readerのみで行っている時に発生していました。 SCR3310を用いてカードを2枚刺しCAS処理分散をさせる事でエラーを起こさずスクランブル解除、エンコード、サムネイル生成を行う事が出来ました。

色々なご意見ありがとうございました。

l3tnun commented 3 years ago

クランブル解除が不完全ということで解決できたかと思いますので閉じます