web-dev-qa-db-ja.com

Linuxでピッチの歪みなしにビデオを高速化するにはどうすればよいですか?

私が達成したいのは、私が得たのと同じ効果を得ることです(1.7倍のスピードアップを想定):

mplayer -af scaletempo -speed 1.7 myvideo.mp4

このコマンドは私が望むものを正確に与えてくれますが、どういうわけか結果をファイルに保存する必要があります。

私が取得したくないのはこれです:

mplayer -vf scale -speed 1.7 myvideo.mp4

Linuxボックスの外で再生する必要があるため、これをファイルで実行する必要があります(ファイルを再コーディングする必要があります)。

スクリプトで作成したいので、CLIの方が望ましいです。たくさんグーグルで検索して、たくさんの提案を見つけました-ffmpeg、mencoder、そして多くの面白いエキゾチックなコンパイル不可能なツール、正確な結果を私に与えるものは何もありません。実際、これはほとんど機能しません(かなり昔に機能したと思います)。

残念ながら、Ubuntu 13.04をアップグレードして使用しましたが、このバージョンではほとんどすべてのソリューションが機能しないようです;(

8

setpts&atempoフィルター

setpts および atempo フィルターでffmpegを使用する例:

速い動き

ffmpeg -i input -filter_complex "[0:v]setpts=PTS/2[v];[0:a]atempo=2[a]" -map "[v]" -map "[a]" output

スローモーション

ffmpeg -i input -filter_complex "[0:v]setpts=PTS/0.5[v];[0:a]atempo=0.5[a]" -map "[v]" -map "[a]" output

アテンポ値の範囲は0.5〜100です。

setpts&ラバーバンドフィルター

または、atempoの代わりに rubberband フィルターを使用すると、音が良くなる場合がありますが、ffmpeg--enable-librubberbandでコンパイルする必要があります。 ffmpeg -filtersを参照して、使用できるかどうかを確認できます。

速い動き

ffmpeg -i input -filter_complex "[0:v]setpts=PTS/2[v];[0:a]rubberband=tempo=2[a]" -map "[v]" -map "[a]" output

スローモーション

ffmpeg -i input -filter_complex "[0:v]setpts=PTS/0.5[v];[0:a]rubberband=tempo=0.5[a]" -map "[v]" -map "[a]" output
14
llogan

これを試して:

ビデオ:

mkfifo stream.yuv
mplayer -vf scale -speed 1.7 -vo yuv4mpeg source.avi

cat stream.yuv | yuv2lav -o result.avi

または

ffmpeg -i source.avi -filter "setpts=PTS/1.7" result.avi

オーディオ:

mplayer -vf scale -speed 1.7 -vo null -ao pcm -ao pcm:file=result.wav source.avi

結果ファイル:result.avi、result.wav

0
september