Closed konikoni428 closed 3 years ago
encodeでのsuffixは必須ではないからだと思います。
マニュアルに下記のとおり記載があります。
suffix を空欄にした場合、非エンコードコマンドとして実行される
https://github.com/l3tnun/EPGStation/blob/master/doc/conf-manual.md#encode
該当処理部分を読んでいないのでおそらくですが、suffixがない場合はコマンド実行後に生成ファイルを登録する処理をしないようになっていると思います。
よって分岐は意図したものであると思います。
ありがとうございます suffixは必須ではないことを読み落としていました。
ただし、動作に関しては疑問が残っています。 該当処理部分についてもう少し長く引用すべきだったので長めに引用すると、
// src/model/service/encode/EncodeManageModel.ts
// 243-269行目
// DIR
let dir: string = '';
if (typeof encodeCmd.suffix === 'undefined' && typeof queueItem.directory !== 'undefined') {
dir = queueItem.directory;
} else if (outputFilePath !== null) {
dir = outputFilePath;
}
this.log.encode.info(`encodeCmd.suffix: ${encodeCmd.suffix}`);
this.log.encode.info(`queueItem.directory: ${queueItem.directory}`);
this.log.encode.info(`outputFilePath: ${outputFilePath}`);
// プロセスの生成
const childProcess = await this.processManager.create({
input: inputFilePath,
output: outputFilePath,
cmd: encodeCmd.cmd,
priority: EncodeManageModel.ENCODE_PRIPORITY,
spawnOption: {
env: {
...process.env,
RECORDEDID: recorded.id.toString(10),
INPUT: inputFilePath,
OUTPUT: outputFilePath === null ? '' : outputFilePath,
DIR: dir,
FFMPEG: config.ffmpeg,
FFPROBE: config.ffprobe,
.
.
.
このようになっています。
私が疑問としているdir
変数なのですが、DIR
環境変数の値の設定のみに使用されており、これ以降使用されていません。
そのため
該当処理部分を読んでいないのでおそらくですが、suffixがない場合はコマンド実行後に生成ファイルを登録する処理をしないようになっていると思います。
この指摘が当てはまらないと考えています。
気が早くPR(#444)を出してしまったのですが
let dir: string = '';
if (typeof queueItem.directory !== 'undefined') {
dir = queueItem.directory;
}
dir
変数についてはDIR環境変数のみ影響を与えるので、このような動作が妥当だと思うのですがいかがでしょうか?
ただ、エンコード時、非エンコード時に関わらず設定した文字列を渡すようにするのは理想的な処理だと思います。
過去issue探すの失念していました。 ありがとうございます。
昔からこの動作が正しいのであれば、変更による影響を考慮して新しい環境変数SUBDIRを導入し、そちらにはエンコード時、非エンコード時にかかわらずサブディレクトリの情報を入れてもいいかもしれません
doc の 環境変数 DIR の説明が紛らわしかったですね。 @takuo さんのおっしゃるとおりで、#392 による修正で、v1 の頃の挙動に合わせました。
変更による影響を考慮して新しい環境変数SUBDIRを導入し、そちらにはエンコード時、非エンコード時にかかわらずサブディレクトリの情報を入れてもいいかもしれません
とても良いと思います。 プルリクがあれば受け入れます。
プルリクありがとうございました。 マージしましたのでクローズします。
環境
2.1.4
0.15.0
14.16.0
6.14.11
Issue
エンコードの環境変数であるDIRはdocsに以下のように記述されています。
これより私は指定したサブディレクトリ文字列が渡されると考えました。 しかし実際の動作はサブディレクトリを指定してもしなくてもOUTPUTと変わらない文字列が渡されるので調査しました。
該当の箇所がここだったのですが、なぜifで
typeof encodeCmd.suffix === 'undefined'
での分岐を行っているのでしょうか? この変数は.mp4
などが入り、undefined
になることはほぼないと思われます。 バグなのか意図的なのか判別がつかないため質問させていただきました。ここからは提案になってしまうのですが、DIRの動作について
の動作にするのはどうでしょうか?
以上よろしくお願いいたします。