Вопрос или проблема
Я увидел, что здесь задаются вопросы, связанные с кодированием и Sharex, и решил задать вопрос на этом портале.
В основном я записывал видео с помощью Sharex 16.1, версия ffmpeg
ffmpeg version n7.0-14-g2d3ee7c069-20240423 Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 13.2.0 (crosstool-NG 1.26.0.65_ecc5e41)
configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --disable-w32threads --enable-pthreads --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-fontconfig --enable-libharfbuzz --enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --enable-libdvdread --enable-libdvdnav --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libaribcaption --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable-libdrm --enable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --disable-doc --disable-ffplay --disable-ffprobe --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-libs=-lgomp --extra-ldflags=-pthread --extra-ldexeflags= --cc=x86_64-w64-mingw32-gcc --cxx=x86_64-w64-mingw32-g++ --ar=x86_64-w64-mingw32-gcc-ar --ranlib=x86_64-w64-mingw32-gcc-ranlib --nm=x86_64-w64-mingw32-gcc-nm --extra-version=20240423
libavutil 59. 8.100 / 59. 8.100
libavcodec 61. 3.100 / 61. 3.100
libavformat 61. 1.100 / 61. 1.100
libavdevice 61. 1.100 / 61. 1.100
libavfilter 10. 1.100 / 10. 1.100
libswscale 8. 1.100 / 8. 1.100
libswresample 5. 1.100 / 5. 1.100
libpostproc 58. 1.100 / 58. 1.100
Универсальный медиаконвертер
использование: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
Настройки внутри Sharex:
На последнем экране вы можете видеть, что я скопировал дополнительные параметры командной строки для записи с микрофоном.
Я записал 2-часовое видео и был рад “повторить материал на следующий день”, но когда я открыл VLC
или media player classic
(последняя версия) и хотел переключиться на 1ч05мин видео, это заняло около ~10 минут…
Не уверен, связана ли эта проблема с NVENC
(у меня 3770k и GTX1070ti, поэтому я решил использовать GPU, этот CPU перегружен различными программами и задачами) или это просто поведение Sharex.
Казалось очень странным, что записи Sharex не переключаются быстро. В основном, если я перехожу к моменту 1ч05мин, это занимает около ~10 минут. А потом я хочу перейти к моменту 1ч30мин, и это снова займет огромное количество времени.
Словно это видео записывалось с использованием ‘монолитного’ блока, а не ‘чанками’, поэтому переключение занимает огромное количество времени.
Что мне нужно добавить, чтобы переключение работало (думаю, возможно, мне нужно добавить что-то в дополнительные параметры командной строки
, как в обычном фильме на YouTube или любом фильме с любого сервиса, например, Netflix?
Или, возможно, я не могу это сделать (маловероятно)?
Я также открыт для других предложений по кодированию и различным параметрам, но основной проблемой является эта проблема переключения
.
Ответ или решение
Проблема, которую вы описали, связана с длительным временем перехода к определенному моменту в записанном видео, созданном с помощью ShareX и кодека NVENC. Давайте рассмотрим причины этого поведения и предлагаемые решения.
F – Факты
Вы записали видео длительностью 2 часа с помощью ShareX версии 16.1, используя ffmpeg с поддержкой кодека NVENC. При попытке перемотать видео в таких плеерах, как VLC или Media Player Classic, переход к моментам, вроде 1 часа 5 минут, занимает около 10 минут, что является аномально долгим ожиданием.
О – Объяснение
Причина замедленного перехода к нужному моменту может быть связана с тем, как видео закодировано. Если файл записан в режиме монолитного потока, плееру трудно эффективно выполнять произвольный доступ к кадрам, так как он должен последовательно декодировать видео вплоть до заданного временного метки.
R – Рекомендации
-
Изменение формата записи: Попробуйте изменить кодек или формат, в котором вы записываете видео. Кодек, поддерживающий более эффективное индексирование, может улучшить перемотку. Рекомендуется использовать контейнер формата MP4, который обычно рекомендуют для более быстрого доступа к данным.
-
Дополнительные параметры командной строки: Вы можете попробовать добавить следующие параметры в строку аргументов при записи:
-movflags faststart
— Это преводит индекс в начало файла, что улучшает возможность перемотки в потоковом видео.-preset fast
или-preset veryfast
— Эти пресеты позволят снизить время обработки, но при этом уменьшат автостабилизацию и качество. Можно протестировать разные пресеты для достижения оптимального результата.
-
Изменение настроек NVENC: Если вы используете NVENC, убедитесь, что используете оптимальные настройки. Параметр
-rc:v psv
(или-rc:v cbr
) может помочь в улучшении сжатия и структуре видео, что иногда влияет на скорость перемотки.
S – Стратегия
Для достижения максимальной эффективности и наилучшего качества полученного видео лучше всего провести несколько тестов. Запишите короткие видео с разными параметрами, чтобы определить, какие настройки лучше всего подходят для ваших нужд. Это может включать в себя изменения настроек кодека, формата контейнера и дополнительных параметров.
T – Тактика
Следуйте этим конкретным шагам:
- Измените настройки проектирования в ShareX, чтобы попробовать с разными кодеками и форматами.
- Запишите тестовые видео и проверьте скорость перемотки после каждой записи.
- Если ни одно из изменений не решит проблему, возможно, стоит рассмотреть запись видео в другой программе с более эффективной кодировкой.
Итог
Вероятнее всего, замедленная перемотка связана с конкретными настройками кодирования и форматом файла. Оптимизация этих аспектов, как указано выше, должна помочь в решении проблемы. Не забывайте тестировать каждую настройку, чтобы найти оптимальные параметры для вашего сценария использования.