У меня есть файл

Другое - Analogue Clock-JEJqy1Wlovw.mp4, который можно загрузить с https://www.youtube.com/watch?v=JEJqy1Wlovw.

Это 2 минуты 13 секунд.

У меня были некоторые проблемы, урезавшие это до второго.

Я смог использовать эту команду

ffmpeg -ss 0 -i infile.mp4 -c copy -t 60 output.mp4

чтобы сделать файл, который был 60 секунд, так что никаких проблем до сих пор.

Это файл ровно через 1 минуту, никаких проблем пока нет.

C:\vids\a>dir
blahhclo.mp4   9,590,540 bytes

C:\vids\a>


C:\vids\a>mediainfo blahhclo.mp4
General
Complete name                            : blahhclo.mp4
Format                                   : MPEG-4
Format profile                           : Base Media
Codec ID                                 : isom
File size                                : 9.15 MiB
Duration                                 : 1mn 0s
Overall bit rate                         : 1 278 Kbps
Writing application                      : Lavf58.3.100

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : High@L4.0
Format settings, CABAC                   : Yes
Format settings, ReFrames                : 3 frames
Codec ID                                 : avc1
Codec ID/Info                            : Advanced Video Coding
Duration                                 : 1mn 0s
Bit rate                                 : 1 146 Kbps
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 25.000 fps
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.022
Stream size                              : 8.21 MiB (90%)

Audio
ID                                       : 2
Format                                   : AAC
Format/Info                              : Advanced Audio Codec
Format profile                           : LC
Codec ID                                 : 40
Duration                                 : 1mn 0s
Bit rate mode                            : Constant
Bit rate                                 : 126 Kbps
Channel count                            : 2 channels
Channel positions                        : Front: L R
Sampling rate                            : 44.1 KHz
Compression mode                         : Lossy
Delay relative to video                  : 40ms
Stream size                              : 920 KiB (10%)



C:\vids\a>

Но у меня действительно есть проблема, когда я пытаюсь сократить это в следующие моменты времени, и это - пытаюсь ли я сократить 1-минутную одну или целые 2 минуты 13 секунд одна.

Если я обрежу с -ss 0 -t 1, то получится файл с размером 1 с 22 мс.

Так что это не так уж плохо, это довольно близко к одной секунде. 1,022 секунды - это неплохо для попытки сократить одну секунду.

Если я обрежу с -ss 0 -t 2, то получится файл 3s 19ms. Это ужасно! это должно быть одна секунда!

Если я обрежу с -ss 0 -t 30, то это нормально, 30 с 1 мс.

Или это видео, например, также mp4 https://www.youtube.com/watch?v=pJ3-xf26wDE

C:\blah>ffmpeg -ss 189 -i vid.mp4 -c copy -t 6 someoutput.mp4

C:\blah>mediainfo someoutput.mp4

производит длительность 8 с 383 мс

Это так неправильно, потому что это должно быть 6 секунд! Так что это две секунды слишком долго!

C:\blah>ffmpeg -ss 191 -i vid.mp4 -c copy -t 6 someoutput2.mp4

C:\blah>mediainfo output2.mp4

показывает, что ffmpeg произвел длительность 10 с 403 мс

что безумно неправильно, потому что команда ffmpeg указала 6 секунд!

Так что это не просто одна секунда, это 4 секунды!

Это почти на 50% больше, чем должно быть!

1 ответ1

0

Я говорил с парнем, который знает кое-что о ffmpeg. Они сказали, что не используйте -c копию. Я вижу, что -acodec copy и -vcodec copy, такие же плохие или одинаковые. И я не должен использовать их для этого видео.

Видео было MP4 контейнером, видео AVC, AAC Audio. Он также сказал, что время начала или окончания не зависит от I-кадра, поэтому вы получаете ближайший, который может быть довольно далеко от желаемого местоположения, и он подумал, что, возможно, есть некоторые профили AVC только для I-кадров. Но он сказал, что проблема была в том, что я делал '-c копию' или -vcodec. И я не должен делать копии.

Поэтому я попробовал -vcodec и -acodec, которые я записал как хорошие для mp4s ..

И я применил их к команде

ffmpeg -ss 191 -i vid.mp4 -vcodec libx264 -acodec libmp3lame -t 6 someoutput3.mp4 

Это сработало, оно дало файл, который был 6s 26ms, так что это очень с точностью до секунды.

в отличие от копии с -vcodec и -acodec, это было 10,4 секунды.

Оно работает

$ffmpeg -ss 193 -i vid.mp4 -acodec libmp3lame -vcodec libx264 -t 4 someoutput4.mp4

Создает файл 4s 26ms. Близко к 4с, как и должно быть. Этот сайт https://trac.ffmpeg.org/wiki/Encode/HighQualityAudio упоминает -acodec libvorbis Я получаю 4s 3ms с тем, что даже лучше.

Принимая во внимание, что если бы я сделал это с копией acodec и vcodec, это заняло бы чуть более 5 секунд.

Таким образом, указав эти кодеки для mp4 и не используя 'copy', это решило проблему.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .