##はじめに
pythonからffmpegを使って動画の加工を行うのが目的です。
動画にフィルターをかけたら音声は消えてしまい、別々に処理する必要があったため備忘録として残します。
ffmpegを直接使えばいいのでは?
##対象
pythonを使ってプログラミングができる人
pythonのコードだけで完結させたい人
##環境
テスト環境
OS: Windows 10, 64bit
python:3.6 (Anaconda)
ffmpeg: 4.1.3(ffmpeg-20190610-80e68ce-win64-static.zip)
ffmpeg-python: 0.1.18
##準備
1. ffmpegのダウンロードとPath設定
・リンク先のDownload Buildをクリックしてzipファイルをダウンロードする。
・適当な場所で展開する。
・binフォルダのpathを環境変数pathに設定する。
2. ffmpeg-pythonのインストール
ffmpeg-pythonインストール
pip install ffmpeg-python
##Code
動画にフィルター適用
import ffmpeg
fname = 'in.mp4'
#動画全体の時間を調べる
video_info = ffmpeg.probe(fname)
duration = float(video_info['streams'][0]['duration'])
#後半の半分だけ取り出し
divide_sec = duration / 2
stream = ffmpeg.input(fname, ss=divide_sec, t=divide_sec)
#音声取り出し
audio_stream = stream.audio
#開始から5秒かけてフェードイン
stream = stream.filter('fade', type='in', start_time=0, duration=5)
audio_stream = audio_stream.filter('afade', type='in', start_time=0, duration=5)
stream = ffmpeg.output(stream, audio_stream, 'out.mp4')
ffmpeg.run(stream)
フェードアウトはtypeにoutを入れるとできます。
##追記 200405
ノイズ除去の場合
パラメータは参考サイト参照
audio_stream = audio_stream.filter('afftdn')
##参考・資料サイト