私がこれまでに見つけた唯一のLinuxコマンドラインツールは、正確なフレームで(または、フレーム精度で)カットできますが、melt
(sudo apt-get install melt
)です。
あなたが持っているinputvid.mp4
と言う-まず、そのエンコーディング設定をsayで確認してくださいffmpeg
(ここでは、再度エンコードしたいと言い-f mp4
ますが、ファイルとして/dev/null
出力は破棄されます.stderrをリダイレクトして、それを介してgrepすることができます-中央に注意してください、コマンドプロンプトが表示されるy
ので、Enterキーを押して応答する必要があります。そのため、プロセスが進行し、有用な情報がダンプされます。これはUbuntu 14のffmpeg 3.3.3で行われます。
ffmpeg -i inputvid.mp4 -f mp4 /dev/null 2>&1 | grep 'Stream\|encoder'
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p(tv, bt709), 640x360 [SAR 1:1 DAR 16:9], 389 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 95 kb/s (default)
y
File '/dev/null' already exists. Overwrite ? [y/N] Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Stream #0:1 -> #0:1 (aac (native) -> aac (native))
encoder : Lavf57.71.100
Stream #0:0(und): Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p(progressive), 640x360 [SAR 1:1 DAR 16:9], q=-1--1, 23.98 fps, 24k tbn, 23.98 tbc (default)
encoder : Lavc57.89.100 libx264
Stream #0:1(und): Audio: aac (LC) ([64][0][0][0] / 0x0040), 44100 Hz, stereo, fltp, 128 kb/s (default)
encoder : Lavc57.89.100 aac
さて、このビデオのffmpeg
選択libx264
とaac
エンコーダーを確認できます。これをforに入力できますmelt
:
melt inputvid.mp4 in=7235 out=7349 -consumer avformat:cut.mp4 acodec=aac vcodec=libx264
....そしてmelt
、フレーム7235と7349の間のピースで新しいファイルにカットしますcut.mp4
。次に、cut.mp4
ループが正しく行われているかどうかを確認するには、melt
もう一度使用して2回再生し、SDLウィンドウで再生します。
melt cut.mp4 cut.mp4 -consumer sdl
...そしてffmpeg
、このファイルの内容は次のとおりです。
ffmpeg -i cut.mp4 -f mp4 /dev/null 2>&1 | grep 'Stream\|encoder' encoder : Lavf54.20.4
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 526 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 182 kb/s (default)
y
File '/dev/null' already exists. Overwrite ? [y/N] Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Stream #0:1 -> #0:1 (aac (native) -> aac (native))
encoder : Lavf57.71.100
Stream #0:0(und): Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 640x360 [SAR 1:1 DAR 16:9], q=-1--1, 23.98 fps, 24k tbn, 23.98 tbc (default)
encoder : Lavc57.89.100 libx264
Stream #0:1(und): Audio: aac (LC) ([64][0][0][0] / 0x0040), 48000 Hz, stereo, fltp, 128 kb/s (default)
encoder : Lavc57.89.100 aac
のビデオエンコーディング設定は、ビデオビットレートが389 kb / sから526 kb / sに変更されたcut.mp4
ことinputvid.mp4
を除いて同じように見えます。また、サンプリングレートが44100から48000 Hzに変更されたことを除いて、オーディオエンコーディング設定はほぼ同じです。ただし、次の方法で規制できます。
melt inputvid.mp4 in=7235 out=7349 -consumer avformat:cut.mp4 acodec=aac ar=44100 ab=95k vcodec=libx264 vb=389k
...しかし、これでも、最終的なビデオビットレートは337 kb / sになります。それでも、カットはループで再生されたときに正常にループします(オーディオを含む)ので、これは実際にフレーム精度です...