Şu ana kadar bulduğum, tam kareyi kesebilen (veya kare doğruluğuna sahip) tek Linux komut satırı aracı melt( sudo apt-get install melt).
Diyelim ki inputvid.mp4- ilk önce kodlama ayarlarını kontrol edin ffmpeg(burada, sadece tekrar kodlamak istediğimi söylüyorum -f mp4, ancak dosya /dev/nullçıktı olarak atılır; stderr'i yönlendiririm, böylece onu elimden alabilirim) , komut istemde bulunur ve yENTER ile cevap vermelisiniz , bu nedenle işlem yararlı bilgiyi iler ve çıkarır; bu, Ubuntu 14'teki ffmpeg 3.3.3'tür):
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
Tamam, bu video için ffmpegseçimleri libx264ve aackodlayıcıları görebiliyoruz ; o zaman şunu girebiliriz melt:
melt inputvid.mp4 in=7235 out=7349 -consumer avformat:cut.mp4 acodec=aac vcodec=libx264
.... ve melt7235 ile 7349 arasındaki kareler ile parça yeni bir dosyaya kesilecek cut.mp4,. Ardından cut.mp4doğru döngüler olup olmadığını kontrol etmek meltiçin iki kez çalmak için tekrar kullanın - ve bir SDL penceresine oynatın:
melt cut.mp4 cut.mp4 -consumer sdl
... ve işte ffmpegbu dosya için görünen şey :
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
Bunun için video kodlama ayarları , 389 kb / sn'den 526 kb / sn'ye değiştirilen video bit hızının haricinde olduğu cut.mp4gibi görünmektedir inputvid.mp4ve ayrıca ses kodlama ayarları, örnekleme hızı 44100'den 48000 Hz'ye değiştirilenlerin haricinde hemen hemen aynıdır; Bununla birlikte düzenlenebilir:
melt inputvid.mp4 in=7235 out=7349 -consumer avformat:cut.mp4 acodec=aac ar=44100 ab=95k vcodec=libx264 vb=389k
... Bununla birlikte, bununla bile, benim için son video bit hızı 337 kb / s. Yine de, bir döngüde çalındığında kesimler iyi işliyor (ve bu ses içeriyor), bu yüzden bu gerçekten kare-doğru ...