fieldhint
フィルタで手動インターレース解除しH.264のハードウェアエンコードする。手動インターレース解除するとぎりぎり1倍速以上出るので縞フレームの場所が分かればライブ配信にも使える。patternオプションは2022年3月15日に追加されたものなのでffmpegはソースコードからビルドする。
日常ものならば-b:v 4M指定でもよいが、動きが多いと-b:v 4Mではノイズが多い。1920×1080も-b:v 6M程度は必要かも。
ffmpeg -analyzeduration 10MB -probesize 10MB -i input.ts \ -vf "setpts=PTS-STARTPTS,fieldhint=pattern2.txt:pattern,split[1],\ shuffleframes=0 1 2 -1 -1[0];\ [1]tblend=all_mode=average,shuffleframes=-1 -1 -1 3 -1,[0]interleave" \ -r 24000/1001 -c:v h264_v4l2m2m -num_output_buffers 64 -num_capture_buffers 128 \ -b:v 4M -c:a copy -bsf:a aac_adtstoasc output.mp4
エンコーダでh264_v4l2m2mをつかうと、なぜか1440×1080の解像度で映像が乱れるのでリサイズしなければならないが、リサイズしてもまだ1倍速以上をキープしていた。
ffmpeg -analyzeduration 10MB -probesize 10MB -i input.ts \ -vf "setpts=PTS-STARTPTS,fieldhint=pattern2.txt:pattern,split[1],\ shuffleframes=0 1 2 -1 -1[0];\ [1]tblend=all_mode=average,shuffleframes=-1 -1 -1 3 -1,[0]interleave,scale=1280:720" \ -r 24000/1001 -c:v h264_v4l2m2m -num_output_buffers 64 -num_capture_buffers 128 \ -b:v 4M -c:a copy -bsf:a aac_adtstoasc output.mp4