ユーザ用ツール

サイト用ツール


サイドバー

最新の10件
一覧
unix:ffmpeg

ffmpeg

tips

動画時の情報確認

$ ffprobe -i ./test.mp4 
ffprobe version 4.1.8-0+deb10u1 Copyright (c) 2007-2021 the FFmpeg developers
  built with gcc 8 (Debian 8.3.0-6)
  configuration: --prefix=/usr --extra-version=0+deb10u1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100
Input #0, matroska,webm, from './test.mp4':
  Metadata:
    HTTP://YOUTUBE.COM/STREAMING/OTF/DURATIONS/112015: Segment-Count: 6109 
                    : Segment-Durations-Ms: 5067,5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),506 
                    :  
                    : 
    ENCODER         : Lavf58.20.100
  Duration: 08:35:50.04, start: 0.000000, bitrate: 551 kb/s
    Stream #0:0(eng): Video: vp9 (Profile 0), yuv420p(tv, bt709/unknown/unknown), 1280x720, SAR 1:1 DAR 16:9, 30 fps, 30 tbr, 1k tbn, 1k tbc (default)
    Metadata:
      DURATION        : 08:35:49.996000000
    Stream #0:1(eng): Audio: aac (LC), 44100 Hz, stereo, fltp (default)
    Metadata:
      HANDLER_NAME    : ISO Media file produced by Google Inc.
      DURATION        : 08:35:50.040000000

動画から音声のみ抜き出し

$ ffmpeg -i IN.mkv -vn -acodec copy OUT.aac

音声の無音部分をカット

ffmpegのsilenceremoveフィルタを使う

$ ffmpeg -i IN.mkv -vn -af silenceremove=1:0:-50dB -acodec copy OUT.aac

無音部分をカット&コーデックとビットレートを変更

$ ffmpeg -i IN.mkv -vn -af silenceremove=1:0:-50dB -acodec libopus -b:a 32k OUT.opus

soxを使った別解(未確認)

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/03/13 22:02 by matoken