2021年8月4日水曜日

よく使うffmpegのコマンドメモ

よく使うffmpegのコマンドメモ

1.  ファイル連結
ffmpeg -f concat -i file.txt  output.mp4

file.txt (ファイル内容)
file 1.mp4
file 2.mp4


2.   時間を指定してファイルを切り取り
ffmpeg -ss 0:0:1 -to 0:0:5 out.mp4 -i in.mp4
-t 00:00:50    指定時間から50秒の動画を切り取り、指定ない場合00:00:00から
-ss 00:00:10  最初の時間を指定
-to 00:00:50  終了の時間を指定

3.   ファイルのメタデータ削除する
ffmpeg -i in.mp4 -map_metadata -1 out.mp4


4.   クロップ-領域を指定して動画出力
ffmpeg -i in.mp4 -vf crop=482:180:44:397 out.mp4
クロップサイズw:クロップサイズh:座標x:座標y



5.  動画ファイルを連番画像に変換
ffmpeg -i in.mp4 -r 30 -q:v 1 image%04d.jpg


6.  複数の画像を動作に変換
ffmpeg -r 30 -i image%04d.jpg out.mp4


7. 手ぶれ補正(手順は2回、古いビデオカメラに役立つ)
7-1. ffmpeg.exe -i in.mp4 -vf vidstabdetect -an -f null -
       transforms.trf  動作の分析ファイルが作成されます。
7-2. ffmpeg.exe -i in.mp4  -vf vidstabtransform  out.mp4


8.  一枚の写真でMP4動作作成
ffmpeg.exe -i image.JPG -i sound.mp3 -r 1 out.mp4


9.  Mp3 ファイル作成、アルバムアートを追加する
ffmpeg.exe -i audio.mp3 -i art.jpg -disposition:v:1 attached_pic -map 0 -map 1 -id3v2_version 3 outfile.mp3


10.  ffmpeg でインターレース解除
ffmpeg.exe -i in.mp4 -vf bwdif  out.mp4


11.  サウンドの入れ替え(source1の映像、source2の音声)
ffmpeg.exe -i in1.mp4 -i in2.mp4 -map 0:v:0 -map 1:a:0 -shortest out.mp4


12.  動画のサイズ変更 1280x720 から 720x404へ
自動で設定したいほうに -1 をセットする
ffmpeg -i in.mp4 -s 720x404 out.mp4
ffmpeg -i in.mp4 -vf scale=1280:-1 out.mp4
ffmpeg -i in.mp4 -vf scale=-1:720 out.mp4


13.  動画の音量を調整
ffmpeg -i in.mp4 -c:v copy -af "volume=0.5" out.mp4
ffmpeg -i in.mp4 -c:v copy -af "volume=6dB" out.mp4


14.  動画再生速度を調整
ffmpeg -i in.mp4 -vf setpts=PTS/2.0 -af atempo=2.0 out.mp4
ffmpeg -i in.mp4 -vf setpts=PTS/0.5 -af atempo=0.5 out.mp4


15. 動画を回転する
ffmpeg -i in.mp4 -vf transpose=2 -c:a copy out.mp4 
1 → 90度 時計まわりに回転
2 → 90度 時計反まわりに回転
3 → 90度 時計まわり回転後、上下を反転
0 → 90度 時計反まわり回転後、上下を反転

ffmpeg -i in.mp4 -vf "rotate=45*PI/180" out.mp4  (45°)

rotate と transpose の違い
transpose 1280X720 だと、90度回転すると 720X1280 になる、枠が回転する
rotate で90度と回転後は1280X720のままです、枠は回転しない

ffmpeg - i in.mp4 -vf vflip out.mp4  (上下ミラ)
ffmpeg - i in.mp4 -vf hflip out.mp4  (左右ミラ)


16. ファイルの最大サイズを指定
ffmpeg -i in.mp4 -fs 20M out.mp4


17. ffmpeg ストリーミング ダウンロード
ffmpeg -i url -c copy out.mp4


18. ffmpeg メタデータの追加・変更
ffmpeg -i in.mp4 -metadata comment="vid:xxxxxxx" out.mp4
-metadata key=value


19. ffmpeg h264_qsv
ffmpeg -i in.mp4 -c:v h264_qsv -b:v 3000k out.mp4 

20. ffmpeg h264_nvenc
ffmpeg -i in.mp4 -c:v h264_nvenc -b:v 3000k out.mp4 

21. ffmpeg h264_amf
ffmpeg -i in.mp4 -c:v h264_amf -b:v 3000k out.mp4 

ffmpeg -encoders
h264_nvenc          NVIDIA NVENC H.264 encoder (codec h264)
nvenc_h264          NVIDIA NVENC H.264 encoder (codec h264)
nvenc                   NVIDIA NVENC H.264 encoder (codec h264)
h264_amf             AMD AMF H.264 Encoder (codec h264)
h264_qsv              H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 
                            (Intel Quick Sync Video acceleration) (codec h264)


x.  思い出したら追加します。








2020年7月5日日曜日

FFmpeg スタビライザー

FFmpeg スタビライザー -vf オプション

基本の例 ffmpegヘルプから
ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
ffmpeg -i input -vf vidstabdetect=show=1  dummy.avi

[ve1f8] Fieldsize: 112, Maximal translation: 154 pixel
[ve1f8] Number of used measurement fields: 65 out of 65
[ve1f8] Fieldsize: 32, Maximal translation: 32 pixel
[ve1f8] Number of used measurement fields: 392 out of 392
[P002524782ad40] Video stabilization settings (pass 1/2):
[P002524782ad40]      shakiness = 5
[P002524782ad40]       accuracy = 15
[P002524782ad40]       stepsize = 6
[P002524782ad40]    mincontrast = 0.250000
[P002524782ad40]         tripod = 0
[P002524782ad40]           show = 0
[P002524782ad40]         result = transforms.trf


他の例
ffmpeg -i i.mp4 -c:v hevc_qsv -vf vidstabdetect=shakiness=5:show=1  o.mp4
ffmpeg -i i.mp4 -c:v hevc_qsv -b:v 15984K -vf vidstabdetect  o.mp4

end

2020年7月3日金曜日

FFmpeg NVIDIA NVENC -b_ref_mode

NVIDIA NVENC -b_ref_mode 確認

ffmpeg -i input.mp4 -c:v hevc_nvenc -b_ref_mode 2 out.mp4


https://developer.nvidia.com/video-encode-decode-gpu-support-matrix


GTX1650 TU117 HEVC B Frame support なし
-b_ref_mode 1  エラー あり
Each B frame as referencd is not supported


-b_ref_mode 2  エラー あり
Each B frame as referencd is not supported


GTX1660 TU116 HEVC B Frame support あり
-b_ref_mode 1  エラー
Each B frame as referencd is not supported
-b_ref_mode 2  エラーなし


GTX1660TI TU116 HEVC B Frame support あり
-b_ref_mode 1  エラーあり
Each B frame as referencd is not supported

-b_ref_mode 2  エラーなし



参考
ffmpeg -encoders | find "NVIDIA"

hevc_nvenc AVOptions: 確認
ffmpeg -h encoder=hevc_nvenc



end

2020年6月29日月曜日

FFmpeg NVIDIA NVENC 詳細オプション確認コマンド

NVIDIA NVENC 詳細オプション確認コマンド

ffmpeg -h encoder=nvenc_hevc
nvenc_hevc           NVIDIA NVENC hevc encoder (codec hevc)

表示した結果の一部
Encoder nvenc_hevc [NVIDIA NVENC hevc encoder]:
    General capabilities: delay hardware
    Threading capabilities: none
    Supported hardware devices: cuda cuda d3d11va d3d11va
    Supported pixel formats: yuv420p nv12 p010le yuv444p p016le yuv444p16le bgr0 rgb0 cuda d3d11
nvenc_hevc AVOptions:
  -preset            <int>     
  -profile           <int>     
  -level             <int>     
  -tier              <int>     
  -rc                <int>     
  -rc-lookahead      <int>     
  -surfaces          <int>     
  -cbr               <boolean> 
  -2pass             <boolean> 
  -gpu               <int>     
  -delay             <int>     
  -no-scenecut       <boolean> 
  -forced-idr        <boolean> 
  -spatial_aq        <boolean> 
  -spatial-aq        <boolean> 
  -temporal_aq       <boolean> 
  -temporal-aq       <boolean> 
  -zerolatency       <boolean> 
  -nonref_p          <boolean> 
  -strict_gop        <boolean> 
  -aq-strength       <int>
  -cq                <float>
  -aud               <boolean> 
  -bluray-compat     <boolean> 
  -init_qpP          <int>     
  -init_qpB          <int>     
  -init_qpI          <int>     
  -qp                <int>     
  -weighted_pred     <int>     
  -b_ref_mode        <int>     
  -dpb_size          <int>     



  -b_ref_mode        <int>        E..V...... Use B frames as references (from 0 to 2) (default disabled)
     disabled        0            E..V...... B frames will not be used for reference
     each            1            E..V...... Each B frame will be used for reference
     middle          2            E..V...... Only (number of B frames)/2 will be used for reference



end

FFmpeg NVIDIA H.264 hevc エンコード確認コマンド

ffmpeg.exe -encoders | find "NVIDIA"
ffmpeg version 4.3 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 9.3.1 (GCC) 20200621
 V..... h264_nvenc           NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc                NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc_h264           NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc_hevc           NVIDIA NVENC hevc encoder (codec hevc)
 V..... hevc_nvenc           NVIDIA NVENC hevc encoder (codec hevc)


ffmpeg.exe -hide_banner -encoders | find "NVIDIA"
 V..... h264_nvenc           NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc                NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc_h264           NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc_hevc           NVIDIA NVENC hevc encoder (codec hevc)
 V..... hevc_nvenc           NVIDIA NVENC hevc encoder (codec hevc)


Advanced global options:
-hide_banner hide_banner  do not show program banner
ffmpeg バージョンなどを表示させない。


This encoder is deprecated, use 'hevc_nvenc' instead

end

2019年1月8日火曜日

FFmpeg ダウンロードとインストール

FFmpeg ダウンロードとインストール

Windows バージョンのダウンロード
https://ffmpeg.zeranoe.com/builds/

インストール(コピーのみ)
ダウンロードしたZIPファイルを解凍して、下記のファイルを Windows
フォルダにコピーします。

C:\Windows>dir ff*.*
C:\Windows のディレクトリ
2019/01/08  23:10        64,910,848 ffmpeg.exe
2019/01/08  23:11        64,797,696 ffplay.exe
2019/01/08  23:11        64,819,712 ffprobe.exe