ffmpegでビデオをカットする:長さが不正確


3

ビデオtest.wmv(長さ10分)から00:03:00の位置から開始して、5秒長いセンテンスをカットしようとしていました。そこで、次のffmpegコマンドを使用しました。

ffmpeg -ss 00:03:00 -t 00:00:05 -i test.wmv -acodec libmp3lame -vcodec copy 1.wmv

しかし、指定された期間の2倍である11秒長い出力wmvが得られます。

何が間違っていますか?何か案が?

ありがとう


1
ビデオはIフレームから開始する必要があります。つまり、03:00よりずっと前に開始する必要がある場合があります。
ダニエルB

回答:


3

-ssand -t-c copyor と一緒に使用するとよく起こり-codec copyます。

使用しないでくださいcopy、と別のコーデックを使用するか、単純に指定されていない-c-codecオプションを。そして、これは起こりません。

例えば: ffmpeg -ss 00:03:00 -t 00:00:05 -i test.wmv -acodec libmp3lame -vcodec libx264 1.mp4


ただし、ビデオは再エンコードされません。
ダニエルB

@DanielBそうではありません。変化する-vcodec copyだけです。しかし、維持-ss-tオプション。
Behroozfar

うん。つまり、元のビデオストリーム(の一部)はそのままでは使用されません。代わりに、デコードされてから再びエンコードされるため、品質が低下します。さらに悪いことに、エンコーダに追加のパラメータを指定しないと、見た目がかなり悪くなる可能性があります。
ダニエルB

@DanielBは正確なシークを望んでおり、正確なシークのために、ビデオストリームをデコードする必要があります。デコードとエンコードのプロセスは品質の低下を引き起こしますが、それは1サイクルではあまり見られません。私はこの解決策が実際的な目標に対して多分大丈夫であることを意味しています。
-Behroozfar

この答えは問題の回避策です。ffmpegのバグとして報告されていますが、長い間修正されません。trac.ffmpeg.org/ticket/4905
ロビンロクスリー

1

入力の後に開始パラメーターと終了パラメーターを配置します。これにより、より正確になります。

ffmpeg -i test.wmv -ss 00:03:00 -to 00:03:05 -c copy 1.wmv

この-tオプションは、この期間まで進むことを意味します。使用しました-to。だからあなたの場合には

-to 00:03:05

また、オーディオコーデックを元のものから変更しませんでした。うまくいくはずです。


ありがとう。私の場合、オプション-toは機能しませんでしたが、-tを試してみましたが、結果は良くなりましたが、正確ではありませんでした。今回は6.4秒のセグメントを取得しました。また、入力後に-ssパラメーターを配置すると、完了するまでに長い時間がかかります
エンフェン

それはすべきではない@EnnFenn という不正確な。ffmpegのやや最近のバージョンを使用していますか?(ffmpeg.org/download.htmlを参照)完全な、カットされていないffmpegコマンドライン出力を教えてください。-ssが前-iに指定されている場合、-tおよび-toオプションは同等であることに注意してください。
slhck

1
この答えは問題を解決しません。これは報告されたバグです。trac.ffmpeg.org/ticket/4905
ロビンロクスリー

@RobinLoxleyは、他の回答のコメントを参照してください。チケットはflacファイル専用であるようです。
ラジブ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.