
通常、フレームレートを変更するときは、Adobe Premiere を使用してビデオ素材を新しいフレームレートとして解釈するため、継続時間が変わります。これは問題ありません。ただし、これは変換したい mkv ファイルなので、ffmpeg を使用します。
しかし、タイムコードを追加する際に ffmpeg で奇妙な問題が発生します。
私が使用しているコードは次のようになります。
/Applications/ffmpeg -probesize 50M -analyzeduration 100M -i "$f" -map 0:0 -map 0:1 -c:a pcm_s24le -async 1 -c:v dnxhd -b:v 36000k -r 25 -s 1920x1080 -aspect 16:9 -pix_fmt yuv422p -coder ac -trellis 0 -colorspace bt709 -color_range mpeg -subq 6 -me_range 16 -sc_threshold 40 -keyint_min 25 -g 50 -metadata creation_time=now -af atempo=1/0.95904 -vf setpts="0.95904*PTS" -vf drawtext="fontsize=30:fontfile=/library/fonts/tahoma.ttf: timecode='01\:00\:00\:00': r=25: x=main_w-180: y=30: fontcolor=white@1: box=1: boxcolor=0x00000000@1" -sn -y "/Volumes/videos/$FILENAME.mov"
作成されたビデオの長さは約42分です。
drawtext なしでビデオをレンダリングすると:
/Applications/ffmpeg -probesize 50M -analyzeduration 100M -i "$f" -map 0:0 -map 0:1 -c:a pcm_s24le -async 1 -c:v dnxhd -b:v 36000k -r 25 -s 1920x1080 -aspect 16:9 -pix_fmt yuv422p -coder ac -trellis 0 -colorspace bt709 -color_range mpeg -subq 6 -me_range 16 -sc_threshold 40 -keyint_min 25 -g 50 -metadata creation_time=now -af atempo=1/0.95904 -vf setpts="0.95904*PTS" -sn -y "/Volumes/videos/$FILENAME.mov"
レンダリングされたビデオの長さは 40 分 59 秒です。これは私が望んでいた長さであり、Adobe が作成するものと同じです。
画像にタイムコードが描画されている場合、ビデオの長さが描画されていない場合よりも長くなるのはなぜですか?
ffmpeg を使用して、正しい方法で mkv を 25fps および焼き込みタイムコード付きの DNxHD に変換するにはどうすればよいでしょうか?
答え1
ログには次のように書かれています:
Multiple -filter, -af or -vf options specified for stream 0, only the last option '-filter:v drawtext' will be used.
つまり、設定は無視され、そのため期間が長くなります。
いずれか 1 つだけを使用する-vf
か、-filter_complex
オーディオとビデオの両方のフィルタリングに使用します。
/Applications/ffmpeg -probesize 50M -analyzeduration 100M -i "$f" -map 0:0 -map 0:1 -c:a pcm_s24le -async 1 -c:v dnxhd -b:v 36000k -r 25 -s 1920x1080 -aspect 16:9 -pix_fmt yuv422p -coder ac -trellis 0 -colorspace bt709 -color_range mpeg -subq 6 -me_range 16 -sc_threshold 40 -keyint_min 25 -g 50 -metadata creation_time=now -af atempo=1/0.95904 -vf setpts="0.95904*PTS,drawtext=fontsize=30:fontfile=/library/fonts/tahoma.ttf: timecode='01:00:00:00': r=25: x=main_w-180: y=30: fontcolor=white@1: box=1: boxcolor=0x00000000@1" -sn -y "/Volumes/videos/$FILENAME.mov"
timecode='01:00:00:00'
に変更する必要があるかもしれませんtimecode='01\:00\:00\:00'
。- 見るフィルタリングの概要。