ユーザ用ツール

サイト用ツール


サイドバー

最新の10件
一覧
unix:ffmpeg

ffmpeg

tips

width not divisible by 2

奇数サイズの動画をmp4等に変換しようとするとエラーになる

$ ffmpeg -i infile.webm -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" outfile.mp4
   :
[libx264 @ 0x55950e5c6e40] width not divisible by 2 (559x353)
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height

サイズ調整して変換

$ ffmpeg -i infile.webm -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" outfile.mp4

動画情報取得

$ ffprobe ./pfetch.mp4 -hide_banner -show_entries format 2>/dev/null
[FORMAT]
filename=./pfetch.mp4
nb_streams=1
nb_programs=0
format_name=mov,mp4,m4a,3gp,3g2,mj2
format_long_name=QuickTime / MOV
start_time=0.000000
duration=24.240000
size=223463
bit_rate=73750
probe_score=100
TAG:major_brand=isom
TAG:minor_version=512
TAG:compatible_brands=isomiso2avc1mp41
TAG:encoder=Lavf58.20.100
[/FORMAT]

指定情報のみ取得(ここでは duration 動画時間)

$ ffprobe ./pfetch.mp4 -hide_banner -show_entries format=duration 2>/dev/null
[FORMAT]
duration=24.240000
[/FORMAT]
$ ls -1 ./file*.mp4 | xargs -I{} ffprobe {} -hide_banner -show_entries format 2>/dev/null | grep duration | cut -f2 -d= | xargs -I{} echo {}/60|bc
230
120

動画のフレーム数を数える

動画のフレーム数を数える1

$ time ffprobe -v error -select_streams v:0 -show_entries stream=nb_frames -of default=nokey=1:noprint_wrappers=1 'かげきしょうじょ!! 第3話 クマのぬいぐるみ.mp4'              
34047

real    0m0.663s
user    0m0.546s
sys     0m0.091s

動画のフレーム数を数える2

$ time ffprobe -v error -count_frames -select_streams v:0 -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1 'か 
げきしょうじょ!! 第3話 クマのぬいぐるみ.mp4'
34047

real    6m1.871s
user    5m59.593s
sys     0m1.129s

動画のフレーム数を数える3

$ time ffmpeg -i 'かげきしょうじょ!! 第3話 クマのぬいぐるみ.mp4'  -map 0:v:0 -c copy -f null - 2>&1 | grep ^frame=
frame=34047 fps=21698 q=-1.0 Lsize=N/A time=00:23:40.00 bitrate=N/A speed= 905x    

real    0m2.184s
user    0m1.750s
sys     0m0.430s

動画のフレームを数える4

$ time mediainfo --Output="Video;%FrameCount%" 'かげきしょうじょ!! 第3話 クマのぬいぐるみ.mp4'
34047

real    0m0.326s
user    0m0.167s
sys     0m0.043s

全フレームを画像で出力

元動画のfpsを確認.今回は20fps

$ ffprobe -i input.mp4
--snip--
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080, 2101 kb/s, 20 fps, 20 tbr, 10240 tbn, 40 tbc (default)
--snip--

書き出し

$ ffmpeg -i input.mp4 -vf fps=20 out%04d.jpg

最終フレームの画像を出力

$ time ffmpeg -sseof -10 -skip_frame nokey -i 'INPUT.mp4' -update 1 -q:v 1 last.png
  :

real    0m11.865s
user    0m32.971s
sys     0m1.036s
$ time ffmpeg -sseof -10 -skip_frame nokey -i 'INPUT.mp4' -update 1 -q:v 1 last.png
  :

real    0m12.231s
user    0m34.340s
sys     0m1.018s

コメント

コメントを入力. Wiki文法が有効です:
   ____   ____   ___    __ __   ___ 
  / __/  / __/  / _ \  / // /  / _ )
 _\ \   / _/   / // / / _  /  / _  |
/___/  /_/    /____/ /_//_/  /____/
 
unix/ffmpeg.txt · 最終更新: 2022/01/01 00:48 by matoken