複数の音声を混ぜる amix

複数の音声を混ぜ(マルチトラックではない)て1つの音声で出力する amix フィルタの使い方。

基本コマンド

既定値の設定。長い時間の方に合わせて終わり2秒をフェードして2入力とも同じ割合で合わせる。
ffmpeg -i input1 -i input2 -filter_complex "amix=inputs=2:duration=longest:dropout_transition=2:weights=1 1" output
ffmpeg -i input1 -i input2 -filter_complex "amix=2:longest:2:1 1" output

公式ドキュメント:FFmpeg Filters Documentation : amix

Continue reading “複数の音声を混ぜる amix”

任意の音声チャンネルを出力する channelsplit

左だけ右だけ LFE だけなど指定したチャンネルだけ、つまりモノラル出力できる channelsplit フィルタの使い方。

基本コマンド

左(前左)のチャンネルだけ出力する。
ffmpeg -i stereo -filter_complex "[0:a]channelsplit=channel_layout=stereo:channels=FR[right]" -map "[right]" front_right.wav

ステレオから左右分別して出力する。
ffmpeg -i stereo -filter_complex "[0:a]channelsplit=channel_layout=stereo[left][right]" -map "[left]" front_left.wav -map "[right]" front_right.wav

5.1チャンネルサラウンドをそれぞれ6つのモノラルで出力する。
ffmpeg -i 6channels -filter_complex "channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR]" -map "[FL]" front_left.wav -map "[FR]" front_right.wav -map "[FC]" front_center.wav -map "[LFE]" lfe.wav -map "[BL]" back_left.wav -map "[BR]" back_right.wav

公式ドキュメント:FFmpeg Filters Documentation : channelsplit

Continue reading “任意の音声チャンネルを出力する channelsplit”

入力した音声ストリーム順にチャンネル配置する amerge

2入力以上の音声を順番にチャンネル配置する amerge フィルタの使い方。すべての音声は同じサンプルレートの同じフォーマットでなければならない。もし音声時間が異なれば短い時間の方で出力が止まる。

基本コマンド

左だけ、右だけの音声を合わせてステレオにする。
ffmpeg -i front_left.wav -i front_right.wav -filter_complex amerge=inputs=2 stereo.wav

公式ドキュメント:FFmpeg Filters Documentation : amerge

Continue reading “入力した音声ストリーム順にチャンネル配置する amerge”

音声の先頭に無音を挿入する adelay

音声のチャンネル毎に無音を挿入できる adelay フィルタの使い方。

音声の最後に無音を挿入する apad

基本コマンド

左右のチャンネルに10秒ずつ無音を挿入する。
ffmpeg -i input -af "adelay=10s|10s" -c:v copy output

左のチャンネルは無音を挿入せずに、右のチャンネルに1000サンプル無音を挿入する。
ffmpeg -i input -af "adelay=0|1000S" -c:v copy output

公式ドキュメント:FFmpeg Filters Documentation : adelay

Continue reading “音声の先頭に無音を挿入する adelay”

音声のフェードイン、フェードアウトの設定ができる afade

音量を次第に上げたり(フェードイン)下げたり(フェードアウト)するだけで時間は変わらない。フェードアウトすると音量は0になる。

映像はこちら:フェードイン、フェードアウトの設定ができる fade
クロスフェードはこちら:入力した2つの音声にクロスフェードをかける acrossfade の使い方

基本コマンド

最初から開始2秒までフェードインする。
ffmpeg -i input -af "afade=t=in:st=0:d=2" -c:v copy output

最初から1分たった後に3秒間フェードアウトする。
ffmpeg -i input -af "afade=t=out:start_time=00\\\:01\\\:00:d=3" -c:v copy output

最初から480,000サンプルたった後に48,000サンプル、フェードアウトする。
ffmpeg -i input -af "afade=t=out:ss=480000:st=48000" -c:v copy output

フェードのカーブを log に変える。
ffmpeg -i input -af "afade=t=in:st=0:d=2:curve=log" -c:v copy output

4秒から1秒間、1入力目の音声から2入力目の音声へクロスフェードする。
ffmpeg -i audio1 -i audio2 -filter_complex "[0:a]afade=t=out:st=4:d=1,asetpts=PTS-STARTPTS[0a];[1:a]afade=t=in:st=4:d=1,asetpts=PTS-STARTPTS[1a];[0a][1a]amix" output

公式ドキュメント:FFmpeg Filters Documentation : afade

Continue reading “音声のフェードイン、フェードアウトの設定ができる afade”

音声の最後に無音を挿入する apad

adelay フィルタは音声のチャンネル毎に無音の挿入ができたが、この apad フィルタはまとめて最後に無音を挿入する。

音声の先頭に無音を挿入する adelay

基本コマンド

オプション無指定だと無限に無音が挿入されるので -t-shortest を併用する。
ffmpeg -i input -af "apad" -shortest -c:v copy output

音声の最後に10秒無音を挿入する。
ffmpeg -i input -af "apad=pad_dur=10" -c:v copy output

入力した音声を含めて5分になるように無音を挿入する。
ffmpeg -i input -af "apad=whole_dur=00\\\:05\\\:00" -c:v copy output

音声の最後に48,000サンプル、無音を挿入する。
ffmpeg -i input -af "apad=pad_len=48000" -c:v copy output

公式ドキュメント:FFmpeg Filters Documentation : apad

Continue reading “音声の最後に無音を挿入する apad”

映像の前後にフレームを挿入する tpad

映像を挿入して動画時間を伸ばすことができる tpad フィルタの使い方。映像のフレームレートに合わせるのでフレーム数、時間の指定だけでよい。映像時間が伸びるので音声時間と合わなくなるときは -shortest をつけると短い方でカットされる。

音声も時間を延ばすには、
音声の先頭に無音を挿入する adelay
音声の最後に無音を挿入する apad

基本コマンド

映像の最初に100フレーム真っ黒な映像を挿入する。
ffmpeg -i input -vf tpad=start=100 -c:a copy output

映像の最初に10秒間、真っ白な映像を挿入する。
ffmpeg -i input -vf tpad=start_duration=10:color=white -c:a copy output

映像の最後に50フレーム、最後のフレームをコピーする。
ffmpeg -i input -vf tpad=stop=50:stop_mode=clone -c:a copy output

公式ドキュメント:FFmpeg Filters Documentation : tpad

Continue reading “映像の前後にフレームを挿入する tpad”

2019年7月のニコ生統計

2017年1週目から2019年10週目までの取得漏れが判明し、毎週土曜日の放送開始0時から6時までの6時間が入ってなかった。気がついたのが2019年11週目で月間統計は過去のデータを修正したが過去記事は修正してない。

集計期間は週間のニコ生統計の1ヶ月分である。2018年からカテゴリタグの割合は今までと変わらないが、1枠30分の割合が少なくなったので来場者数とコメント数の6000以上を除かないすべての放送を対象にした。それに伴い平均値は除外した。来場者数はTS視聴可能時間が来れば増え、TS来場者数を含まずに計算することは困難な仕様なので、翌日(当日)の朝に前日の6時から当日の6時までを取得している。

Continue reading “2019年7月のニコ生統計”

ffmpeg 4.2 リリース

2019年9月7日 4.2.1 がリリースされた。アップデート内容は修正ばかりで新しいフィルタは入ってない。

git.videolan.org Git – ffmpeg.git/commitdiff
git.videolan.org Git – ffmpeg.git/shortlog : n4.2.1

2019年8月6日に ffmpeg 4.2 Ada(エイダ・ラブレス)がリリースされた。今回のリリースはメジャーアップデートとなり、セキュリティ対応や 4.1 以降に追加された新機能の中からマスターにしか追加されていなかったフィルタやデコーダの新機能が全て取り込まれた。

今回のリリースで気になった部分は、libdav1d を使った AV1 デコーダ、ライセンス違反による libndi-newtek の除外、PocketSphinx を使った音声認識の asr フィルタ、DNN を使って映像内の雨を除去する derain フィルタ、libaribb24 を使って日本のテレビ字幕に対応した。CUDA SDK の利用に NVCC が使われ配布できない –enable-nonfree 扱いになっていたが、clang を代わりに使うことでそれを回避した

Continue reading “ffmpeg 4.2 リリース”

技術書典7 でFFmpeg本出ます

無事完売して電子版の販売と振り返り記事と修正箇所。
FFmpegの本を頒布した技術書典7を振り返る
【PDF】FFmpegの本 – ニコラボの本屋 – BOOTH
【サンプル】FFmpegの本【PDF】 – ニコラボの本屋 – BOOTH

技術書典7 | 技術書典
技術書典7 | サークルリスト | 技術書典(ニコラボは下から見たほうがはやい)

日時 2019/09/22 (日) 11:00〜17:00
場所 池袋サンシャインシティ 展示ホールC/D(文化会館ビル2/3F)

配置図、2F し21D

内容はブログで書いてきたことを中心に改稿したものになる。他のブログでよく紹介されている使い方から便利な使い方まで基本的な使い方を紹介する。

Continue reading “技術書典7 でFFmpeg本出ます”