2017-07-10 6 views
0

私はFFMPEGを使ってサウンドトラックの特定の部分を切り抜こうとしています。私は4時33分に午前0時07分から切断したかったので、私は入力ffmpegのコマンドを次のようにFFMPEG -ssと-t for mp3を切断する

bin\ffmpeg -ss 00:07 -t 04:26 -i "input.mp3" -acodec copy "output.mp3" 

Iは[END_TIME - START_TIME]で-t、のために4時26分を用いました。しかし、私が得たoutput.mp3は00:07から04:40にカットされ、トラックは04:33と長くなりました。正しい出力ファイルを得るために、私は-t 04:19を使用しなければなりませんでした。これは[end_time - 2 *(start_time)]です。

timeline of desired mp3 track

私の代わりに-t

bin\ffmpeg -i "input.mp3" -ss 00:07 -to 04:33 -acodec copy -y "output.mp3" 

の-to使用代替コマンドを試み、予想通り、これは午後12時07から午前4時33分に所望の出力トラックを与え、働きました。

質問が最初の方法では、[end_time - 2 *(start_time)]になる必要がありますか?直感的に、私は00:07を探して、その後の04:26をキャプチャしたいので、-ss 00:07と-t 04:26は私にとって意味があります。私はffmpegがこれをどのように解釈して、04:19を-tとして代わりに使用しなければならないかを理解できません。

2番目の方法が機能するので、私は実際に解決策を探していません。なぜこれが起こるのだろうかと思っています。

答えて

1

-ss-tが入力の前に置かれている場合、ffmpegは入力のインデックスに依存する高速シークに頼っており、ffmpegがシークを開始および停止できるようにします。 MP3はインデックスを持たないので、ffmpegはビットレートでデュレーションを見積もります。これは不正確なことがあります。

入力後に-ss-tを配置すると、ffmpegはデマルチプレクスされたパケットをカウントします。これは正確です。

+0

ありがとう、今私は理解する。 – cobaltB12

関連する問題