У меня есть фильм, который ffmpeg и другие программы утверждают, что его длина составляет 07:03:52, но реальное время воспроизведения на самом деле больше похоже на 2:35:00.
ffprobe video.mp4
ffprobe version 3.0.2 Copyright (c) 2007-2016 the FFmpeg developers
built with gcc 5.3.1 (Debian 5.3.1-17) 20160429
configuration: --prefix=/usr --extra-cflags='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security ' --extra-ldflags='-Wl,-z,relro' --cc='ccache cc' --enable-shared --enable-libmp3lame --enable-gpl --enable-nonfree --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-nonfree --enable-libvpx --enable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-librtmp --enable-avfilter --enable-libfreetype --disable-decoder=amrnb --enable-libvo-amrwbenc --enable-libtesseract --libdir=/usr/lib/x86_64-linux-gnu --disable-vda --enable-libbluray --enable-libcdio --enable-gnutls --enable-frei0r --enable-openssl --enable-libass --enable-libopus --enable-fontconfig --enable-libpulse --disable-mipsdsp --disable-mips32r2 --disable-msa --disable-mipsfpu --disable-mipsdspr2 --enable-libvidstab --enable-libzvbi --enable-avresample --enable-libutvideo --enable-libfdk-aac --enable-libx265 --enable-libbs2b --enable-libilbc --enable-libopenh264 --enable-libkvazaar --enable-libsnappy --enable-libsoxr --enable-libiec61883 --enable-vaapi --enable-opencl --enable-libdc1394 --disable-altivec --shlibdir=/usr/lib/x86_64-linux-gnu
libavutil 55. 17.103 / 55. 17.103
libavcodec 57. 24.102 / 57. 24.102
libavformat 57. 25.100 / 57. 25.100
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 31.100 / 6. 31.100
libavresample 3. 0. 0 / 3. 0. 0
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4':
Metadata:
major_brand : isom
minor_version : 1
compatible_brands: isomavc1
creation_time : 2012-12-12 07:03:52
Duration: 07:13:45.09, start: 0.000000, bitrate: 274 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x528 [SAR 1:1 DAR 80:33], 601 kb/s, 23.98 fps, 23.98 tbr, 96k tbn, 47.95 tbc (default)
Metadata:
creation_time : 2012-12-12 07:03:52
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 92 kb/s (default)
Metadata:
creation_time : 2012-12-12 07:04:15
handler_name : GPAC ISO Audio Handler
Есть ли кто-нибудь, кто может помочь мне исправить время воспроизведения/длительность с помощью команды терминала на debian/centos
У меня установлен HandBrake-cli + FFmpeg
ОБНОВЛЕНИЕ Мысль: поскольку видео отлично воспроизводится в различных проигрывателях и частота кадров правильная, почему такие кодировщики, как HandBrake и ffmpeg, не могут рассчитать правильную продолжительность?
ОБНОВЛЕНИЕ 2 - Решение Я нашел это решение на сайте duckduckgo.com и нашел полезное решение на хорошем... торрент-сайте.
ffmpeg -i video.mp4 -t 2:09:39 -c:v copy -c:a copy -c:s copy out.mp4
Впрочем, это не исправление или какая-то акклиматизация работы, но это сработало.
Так вызовите, что это делает
ffmpeg
- Видеокодер-i
исходное видео-t
При использовании в качестве параметра ввода (до -i) ограничивайте продолжительность чтения данных из входного файла.-c:v
+ -c:a
копировать видео+аудио из источникаЛюбая оптимизация или адаптация к этой рабочей нагрузке по-прежнему приветствуется.
Хоакин, то, что вы предложили в своем обновлении 2, - это ремикс. В качестве альтернативы тому, что вы предложили, можно использовать ручное редактирование атома .
Ручное редактирование есть
(а) намного быстрее - просто изменяются метаданные
(б) может применяться в обоих направлениях - для увеличения и уменьшения масштаба. Мне лично удалось уменьшить длину путем повторного мультиплексирования, но мне не удалось ее увеличить.
У меня такая же проблема. Я решил это, удалив звук из видео. Вот почему видео кажется замороженным, но оно продолжает воспроизводиться из-за продолжительности звука.
По этой причине вы можете удалить весь звук из видеофайла, используя опцию «-an» ffmpeg. Когда он удален, неправильное время в видео не существует. Вы можете извлечь звук из исходного видеофайла, сопоставить его продолжительность с продолжительностью видео, а затем вы кодируете видео и аудио файлы вместе, в результате чего зависшие видеокадры не воспроизводятся.
например.
ffmpeg -i video_to_encode.MP4 -r 16 -crf 18 -vcodec libx264 -vb 10M -an video_output.avi
Гьян
07:03:52
сообщается как время создания, хотя расчетная продолжительность составляет07:13:45.09
. Попробуйте ремукс:ffmpeg -i video.mp4 -c copy out.mp4
Йоаким
Гьян
ffprobe video.mp4 -show_entries stream=codec_type,start_time,duration -of compact
и покажите результат.Йоаким
LF00
Ник