映像と音声の pts を扱う setpts, asetpts | ニコラボ
Skip to content
映像と音声の pts を扱う setpts, asetpts
Posted on 2018年11月29日 (Updated on 2020年8月14日 ) in FFmpeg
Home	
Menu	
Menu
Close
Search for:
Search
ffmpeg
おすすめ記事
プロフィール
niconico
Tweet
PTSを変更することで再生速度を上げたり下げたり、複数のファイルを合わせたりするときにPTSを揃えたりするのに使うsetpts、asetptsフィルタの使い方。音声の速度変更にはrubberband フィルタを使う方法もある。
サンプリング周波数を変えずにテンポとピッチを変える rubberband
目次
1 基本コマンド
2 オプション
3 応用例
基本コマンド
再生速度を2倍にする。
ffmpeg -i input -filter_complex setpts=(PTS-STARTPTS)/2;atempo=2 output
再生速度を半分にする。
ffmpeg -i input -filter_complex setpts=2*(PTS-STARTPTS);atempo=0.5 output
【ffmpeg】倍速再生できる動画にエンコードする
2つの映像のPTSを0開始に揃えて縦に並べる。
ffmpeg -i input1 -i input2 -filter_complex [0:v]setpts=PTS-STARTPTS[v0];[1:v]setpts=PTS-STARTPTS[v1];[v0][v1]vstack output
公式ドキュメント：FFmpeg Filters Documentation : setpts, asetpts
オプション
評価式のオプション
FRAME_RATE
フレームレート。固定フレームレートだけを定義する。固定値。音声はNaN
PTS
PTS（Presentation Timestamp）秒。PTS*TBでよく見る秒時間になる
N
0から始まる映像フレーム数、または音声サンプル数
NB_CONSUMED_SAMPLES
累積の音声サンプル数
NB_SAMPLES, S
音声サンプル数。固定値
SAMPLE_RATE, SR
音声のサンプリング周波数
STARTPTS
入力したストリームの開始時のPTS時間
STARTT
入力したストリームの開始時の時間
INTERLACED
現在のフレームがインターレースかどうか。インターレースなら1。そうでなければ0
T
現在のフレームの秒時間
POS
読み込み位置でのバイトサイズ。分からなければ未定義になる
PREV_INPTS
1つ前フレームのPTS
PREV_INT
1つ前フレームのT
PREV_OUTPTS
PREV_OUTT
RTCTIME
RTC のマイクロ秒。現在は非推奨。代わりに time(0) を使う
RTCSTART
RTC のマイクロ秒。マイクロ秒で動く
TB
タイムスタンプのタイムベース。固定値
応用例
PTSを25fpsに修正する。映像がそれよりも高fpsなら再生速度が遅くなり、低fpsなら再生速度が速くなる。
ffplay -f lavfi -i testsrc2=r=60,setpts=N/(25*TB)
ffplay -f lavfi -i testsrc2=r=10,setpts=N/(25*TB)
開始PTSを10秒進める。用途は動画の開始PTSが0開始でない場合に修正する。利用例。
setpts=PTS+10/TB
trim, atrimフィルタで10秒から20秒までカットする。
trim=10:20,setpts=PTS+10/TB;atrim=10:20,asetpts=PTS+10/TB
フレーム数から現在のタイムスタンプ秒に変換しタイムスタンプを振り直す。
setpts=N/FRAME_RATE/TB
音声サンプル数から現在のタイムスタンプ秒に変換しタイムスタンプを振り直す。
asetpts=N/SR/TB
タイムスタンプを振り直すのはtrim, selectフィルタなどで複数に分割、特定フレームだけ出力する場合に使う。振り直さなければ元映像のPTSで分割されるので、出力されなかった映像は動かなくなる。
ffmpeg -i input -an -vf select=eq(pict_type\,I) -vsync 0 -t 5 output.mp4
ffmpeg -i input -an -vf select=eq(pict_type\,I),setpts=N/FRAME_RATE/TB -vsync 0 -t 5 output.mp4
動画の途中、ここでは10秒から12秒までをカットして前後をつなげる。
ffmpeg -i input -vf select='not(between(t,10,12))',setpts=N/FRAME_RATE/TB -af aselect='not(between(t,10,12))',asetpts=N/SR/TB output
trim フィルタの使い方
ffmpeg でのフレームレート設定の違い
特定の映像フレームや音声サンプルを出力する select, aselect
投稿ナビゲーション
透過部分だけに色を付ける
再エンコードせずに fps を変更する
コメントを残す コメントをキャンセル
メールアドレスが公開されることはありません。
コメント
名前
メール
サイト
次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。
email confirm*
post date*
日本語が含まれない投稿は無視されますのでご注意ください。（スパム対策）
Search for:
Search
カテゴリー
FFmpeg (284)
niconico (91)
others (9)
tools (5)
ニコニコ動画 (4)
ニコニコ生放送 (86)
技術書典 (4)
未分類 (1)
最近の投稿
千円HDMIキャプチャ、Y&H HDMIキャプチャカード 2020年11月14日
ffmpegでBlackmagic Designの製品を扱う 2020年11月7日
この1ヶ月でのニコニコアカウント取得の変更点 2020年10月1日
FFmpegのオーディオフィルタの本を頒布した技術書典9を振り返る 2020年9月23日
技術書典9でFFmpegのオーディオフィルタ本が出ます 2020年9月11日
Zeranoe ffmpeg、9月18日に閉鎖へ 2020年9月2日
音量の統計を調べるvolumedetect 2020年8月14日
音声のチャンネルレイアウトを変えるchannelmap 2020年8月12日
指定したチャンネルの周波数帯の音量を変えるequalizer 2020年8月10日
ハードウェア支援フィルタのまとめ 2020年8月1日
アーカイブ
2020年11月 (2)
2020年10月 (1)
2020年9月 (3)
2020年8月 (4)
2020年7月 (9)
2020年6月 (11)
2020年5月 (8)
2020年4月 (2)
2020年3月 (7)
2020年2月 (8)
2020年1月 (4)
2019年12月 (2)
2019年11月 (2)
2019年10月 (5)
2019年9月 (4)
2019年8月 (10)
2019年7月 (4)
2019年6月 (3)
2019年5月 (1)
2019年4月 (3)
2019年3月 (6)
2019年2月 (10)
2019年1月 (1)
2018年12月 (6)
2018年11月 (8)
2018年10月 (1)
2018年9月 (1)
2018年8月 (3)
2018年7月 (4)
2018年6月 (2)
2018年5月 (7)
2018年4月 (4)
2018年3月 (6)
2018年2月 (9)
2018年1月 (6)
2017年12月 (5)
2017年11月 (2)
2017年10月 (5)
2017年9月 (4)
2017年8月 (1)
2017年7月 (6)
2017年6月 (5)
2017年5月 (6)
2017年4月 (7)
2017年3月 (5)
2017年2月 (5)
2017年1月 (7)
2016年12月 (5)
2016年11月 (2)
2016年10月 (5)
2016年9月 (13)
2016年8月 (14)
2016年7月 (6)
2016年6月 (3)
2016年5月 (5)
2016年4月 (5)
2016年3月 (16)
2016年2月 (6)
2016年1月 (3)
2015年12月 (2)
2015年11月 (5)
2015年10月 (13)
2015年9月 (9)
2015年8月 (6)
2015年7月 (11)
2015年6月 (6)
2015年5月 (5)
2015年4月 (6)
2015年3月 (3)
2015年2月 (7)
2015年1月 (6)
2014年12月 (1)
Proudly powered by WordPress | Theme: Carbon Lite by vincentdubroeucq.	
