問題タブ [handbrakecli]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
audio - ハンドブレーキ付きの複数のオーディオ トラック
かなり一般化された方法でビデオをエンコードしようとすると、典型的な呼び出しは次のようになります。
問題は、オーディオトラックで次のことをしたいということです:
- 高ビットレートのトラック (dts など) がある場合は、それを ac3 に変換します。
- aac トラックがある場合は、再エンコード (またはコピー) します。
- aac トラックがなく、高ビットレートのトラックがある場合は、aac トラックを作成します
基本的に、オーディオ トラックに基づいて何を行うかを条件付きで選択するにはどうすればよいでしょうか。それとも、処理しているオーディオ トラックの種類を特定し、それに基づいてプログラムでコマンドを変更するために何らかの前処理を行う必要があるでしょうか。
bash - Bashスクリプトはループを早期に終了します
イライラする時間を過ごしています。ファイルを 1 行ずつ読み取り、その行に基づいて操作を行うスクリプトを作成しました。具体的には、handbrake CLI を使用して、部分的なディレクトリ (ファイル リストに基づく) を別の小さな形式に変換しています。コマンドラインで「echo」を使用してスクリプトをテストし、ドライランを実行しましたが、実際にスクリプトを実行したい場合、リストの最初の項目でのみコマンドを実行し、終了します。コードは次のとおりです。
ファイルリストは次のとおりです。
コマンドの前に「echo」を付けたときの出力は次のとおりです。
しかし、エコーと必要な引用符を削除すると、ハンドブレーキは最初のファイルでのみ実行され、スクリプト全体が終了します。ドライランは do ループを移動するときに正しいコマンドを順番に吐き出しているため、これがどのように発生するのかわかりません。Handbrake CLIコマンドの後に待機を入れようとしましたが、スクリプトを中断したとき(エンコード中にctl-c)に役立つように見えましたが、エンコードをそのままにしておくと、同じ動作(スクリプトの終了)になりました。
誰にもアイデアはありますか?
ffmpeg - ffmpeg と handbrake を使用してハードコーディング サブルーチンを高速化する
レガシー デバイスの字幕をハードコードする必要があるビデオがあるので、通常はこれに ffmpeg を使用します。正常に動作しますが、非常に遅いです。
これは私が通常使用するコマンドです。
先日handbrakeCLIを試してみたところ、同じファイルではるかに高速でした。
このHandbrakeCLIコマンドを使用して変換とハードコードを行いました。好きではないことはわかっていますが、オーディオを変換せず、字幕が必要なフレームでビデオを変換するだけでよいため、ffmpegの方が高速であると期待できます。
サブが必要なビデオにサブをインプリントするだけでffmpegを使用できる方法はありますか。ビデオ全体を変換する必要はありません。
たとえば、1 分間のビデオがあり、30 秒で 1 つの文があり、その文/サブを 5 秒間表示して、ffmpeg でその 5 秒のセグメントのみを変換し、残りのビデオをコピーする必要がある場合新しい出力へのオーディオ?
入力ビデオは 24 FPS の 720p で、速度の違いは通常、ハンドブレーキが 2 倍、ffmpeg がビデオの長さの約 0.7 倍です。ハンドブレーキに 1080p プロファイルを使用していることは知っています。どちらも同じマシンと同じビデオでテストされました。
バージョン ffmpeg バージョン 4.2.2 HandBrake 1.3.1
動画情報 オリジナル動画
ハンドブレーキ出力
ffmpeg 出力
ハードコーディングされたサブシステムで ffmpeg を高速化するための提案を誰かが提供できればありがたいです。