web-dev-qa-db-ja.com

ハンドブレーキ--stop-atパラメーターが意図したとおりに機能しない

コマンドラインから次のコマンドを実行します。

handbrakeCLI.exe -i SourceFile.mkv -o OutputFile.mkv --stop-at 120

CLIGuide によると、-stop-at値を秒単位で指定できます(これは私が望むもので、ファイルへの120秒のエンコードを停止します)。

これの私の目的は、他のエンコードプロセスをテストするために、フルムービーから非常に高品質のビデオクリップをすばやく作成することです。

ただし、出力ファイルを表示すると、ムービー全体になります。何か案は?

7
karlgrz

さて、私は問題を ffmpeg で解決することにしました:

ffmpeg -i SourceFile.mkv -ss 00:00:05 -t 00:02:30 -ac 2 -sn OutputFile.mkv

説明:

  • ss:シークスタート、または「この時点でエンコードを開始する」(hh:mm:ss)
  • t:期間(hh:mm:ss)
  • ac:オーディオチャネル。この特定の映画では、エンコード中にオーディオトラックを広めるのに問題があったためです。
  • sn:ffmpegが字幕トラックについて不平を言っていたので、字幕を抑制します

これは私が探していたものに完璧に機能しました。

4
karlgrz

答えはHandbrakeのヘルプにあります:

handbrakeCLI.exe --help

正しい構文は次のとおりです。

--stop-at     <unit:#>  Stop encoding at a given frame, duration (in seconds),
                        or pts (on a 90kHz clock)

例:

handbrakeCLI.exe -i SourceFile.mkv -o OutputFile.mkv --stop-at duration:120

これにより、ビデオの最初の120秒が表示されます

9
Stefan Schmidt

2015年4月の時点で、これは私が見つけたものであり、将来変更されるのではないかと思います。

--start-at duration:120 --stop-at duration:60

start-at期間は実際にはいくつかのポイントで「開始」します。 stop-at期間は実際にはlength(実際の期間)です。つまり、durationという言葉はさまざまな意味を持っています。上記の行は、00:02:00に開始し、60秒間開始することを意味します。したがって、それを覚える簡単な方法は次のとおりです。start-atはある時点にあり、stop-atは長さです。

1
nonopolarity