Обрезанное видео с использованием ffmpeg короче, чем ожидалось

600
Anjan0791

Я пытаюсь получить клип длиной 6 секунд из видео MP4 (размер: 1,44 ГБ, длина: 02:23:38). Но видеопоток останавливается через 1 секунду, а аудиопоток продолжает нормально воспроизводиться до 6 секунд.

Я использую эту команду, чтобы сделать отсечение:

ffmpeg -i myvid.mp4 -ss 00:50:40.0 -c:v copy -c:a copy -t 00:00:06.0 -async 1 clip.mp4 

Может ли кто-нибудь помочь мне в этом вопросе?

Спасибо

Обновление 1: Вот вывод команды:

ffmpeg version N-69530-g52f2adc-Sherpya Copyright (c) 2000-2015 the FFmpeg devel opers built with gcc 4.9.2 (GCC) Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'myvid.mp4': Metadata: major_brand : isom minor_version : 1 compatible_brands: isomavc1 creation_time : 2013-02-22 12:22:10 Duration: 02:23:38.07, start: 0.000000, bitrate: 1437 kb/s Chapter #0:0: start 0.000000, end 354.125000 Metadata: title : 00:00:00.000 Chapter #0:1: start 354.125000, end 2339.125000 Metadata: title : 00:05:54.125 Chapter #0:2: start 2339.125000, end 2573.125000 Metadata: title : 00:38:59.125 Chapter #0:3: start 2573.125000, end 3504.750000 Metadata: title : 00:42:53.125 Chapter #0:4: start 3504.750000, end 3854.458000 Metadata: title : 00:58:24.750 Chapter #0:5: start 3854.458000, end 4364.125000 Metadata: title : 01:04:14.458 Chapter #0:6: start 4364.125000, end 5029.125000 Metadata: title : 01:12:44.125 Chapter #0:7: start 5029.125000, end 5526.750000 Metadata: title : 01:23:49.125 Chapter #0:8: start 5526.750000, end 5796.958000 Metadata: title : 01:32:06.750 Chapter #0:9: start 5796.958000, end 6084.416000 Metadata: title : 01:36:36.958 Chapter #0:10: start 6084.416000, end 8316.416000 Metadata: title : 01:41:24.416 Chapter #0:11: start 8316.416000, end 8618.068333 Metadata: title : 02:18:36.416 Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x544 [SAR 1:1 DAR 40:17], 1242 kb/s, 24 fps, 24 tbr, 96 tbn, 48 tbc (default) Metadata: creation_time : 2013-02-22 12:22:10 handler_name : Jab We Met (2009) BRRip 1080P DTS ESub Chapters [DDR] Stream #0:1(und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 48000 Hz, 5.1, fl tp, 192 kb/s (default) Metadata: creation_time : 2013-02-22 12:22:23 handler_name : på. Output #0, mp4, to 'clip.mp4': Metadata: major_brand : isom minor_version : 1 compatible_brands: isomavc1 encoder : Lavf56.19.100 Chapter #0:0: start 0.000000, end 6.000000 Metadata: title : 00:42:53.125 Stream #0:0(und): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 1280x544 [S AR 1:1 DAR 40:17], q=2-31, 1242 kb/s, 24 fps, 24 tbr, 12288 tbn, 96 tbc (default ) Metadata: creation_time : 2013-02-22 12:22:10 handler_name : Jab We Met (2009) BRRip 1080P DTS ESub Chapters [DDR] Stream #0:1(und): Audio: aac ([64][0][0][0] / 0x0040), 48000 Hz, 5.1, 192 kb /s (default) Metadata: creation_time : 2013-02-22 12:22:23 handler_name : på. Stream mapping: Stream #0:0 -> #0:0 (copy) Stream #0:1 -> #0:1 (copy) Press [q] to stop, [?] for help frame= 25 fps=6.4 q=-1.0 Lsize= 226kB time=00:00:06.01 bitrate= 307.1kbits /s video:82kB audio:141kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.334416% 
0
Что произойдет, если вы пропустите опцию `-async`? slhck 8 лет назад 0
Событие после удаления -async, проблема сохраняется. Я думаю, что проблема была с кодеками, когда я явно упоминал кодеки (mpeg4, aac) и скорости передачи данных. Это правильно обрезало видео. В любом случае спасибо за вашу помощь. Anjan0791 8 лет назад 0

1 ответ на вопрос

0
avnr

Вы не должны действительно копировать закодированный поток, когда ваша цель - только его сегмент. Вы можете либо поместить опции -ss& -tперед входным файлом, но затем обрезка будет выполнена на ключевом кадре, либо поместить их перед выходным файлом, как вы это делали для точной обрезки, но вам придется перекодировать видео, чтобы удалить -c:v copy -c:a copyиз вашей команды. Подробное объяснение доступно в этом ответе .

Спасибо за вашу помощь. Это сработало после явного указания параметров кодеков и кодеков. Anjan0791 8 лет назад 0
Это не совсем правильно. В принципе, вы можете вырезать сегменты даже при потоковом копировании. Они могут быть не точными, но я не вижу, как пример, приведенный ОП, не должен работать. @anjan slhck 8 лет назад 0
@slhck - ты прав. Но на практике вопрос заключается в том, как добиться цели, поэтому я предполагаю, что нет никакого интереса тратить время на исследование того, почему неправильная команда выдает неправильный вывод такого рода, а не другой неправильный вывод ... avnr 8 лет назад 0

Похожие вопросы