Мне нужно использовать concat с абсолютным путем, но он не работает. В документе сказано, что это должно работать. У кого-нибудь есть идеи, как заставить это работать? ffmpeg Doc
Это не работает, потому что, кажется, добавляет каталог текстового файла к пути к файлу
Impossible to open 'C:/temp/ffmpeg/c:/temp/ffmpeg/01.mov'
Я использую Windows 7.
ffmpegTest.txt:
file 'c:/temp/ffmpeg/01.mov'
file 'c:/temp/ffmpeg/02.mov'
"Y:/Shotgun/bin/ffmpeg/bin/ffmpeg.exe" -f concat -i "C:/temp/ffmpeg/ffmpegTest.txt" -c copy "C:/temp/ffmpeg/test.mov
ffmpeg version N-58949-g0e575c2 Copyright (c) 2000-2013 the FFmpeg developers
built on Dec 9 2013 22:06:49 with gcc 4.8.2 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
libavutil 52. 58.100 / 52. 58.100
libavcodec 55. 45.100 / 55. 45.100
libavformat 55. 22.100 / 55. 22.100
libavdevice 55. 5.102 / 55. 5.102
libavfilter 3. 92.100 / 3. 92.100
libswscale 2. 5.101 / 2. 5.101
libswresample 0. 17.104 / 0. 17.104
libpostproc 52. 3.100 / 52. 3.100
[concat @ 0000000000337920] Impossible to open 'C:/temp/ffmpeg/c:/temp/ffmpeg/01.mov'
C:/temp/ffmpeg/ffmpegTest.txt: Invalid argument
Вы можете либо использовать текстовый файл , который представляет собой список входных файлов , так как:
ИЛИ ЖЕ
Вы можете явно назвать файлы так:
Обратите внимание, что вы используете 2 входа один за другим, а затем используете,
-c:v copy
чтобы сказать, что не должно быть никакого соединения только для перекодирования. Кроме того, это concat demuxer . Это гибкий, но требует, чтобы 2 входных файла имели одинаковые кодеки.Содержание текстового файла такое, как вы написали:
Обратите внимание на одинарные кавычки
Общий формат:
Это относится к нескольким дискам и путям.
Вот реальный пример файла конкатенации, который работает:
Это касается:
одного внутреннего диска,
одного внешнего USB-диска,
одного сетевого диска на другом компьютере с Windows в том же домене.
Использование команды:
Это работает, как ожидается, без каких-либо ошибок.
источник
Обратите внимание; в Windows, если вы используете concat с текстовым файлом, пути в текстовом файле должны быть связаны с выходным путем .
Например
Если ваши файлы находятся в каталоге,
C:\temp\bar.mp4
ваш текстовый файл выглядит так:источник
"
персонаж?использование
В твоем случае
Ключ -safe 0 . Это позволяет вам помещать абсолютные пути в текстовый файл.
источник
@ В ответе Эрика содержится важная инструкция, позволяющая указывать полные пути на входе демультиплексора concat (необходимо указать
-safe 0
параметр ffmpeg). Однако под Windows concat demuxer ffmpeg неправильно обрабатывает абсолютные / полные пути, начиная с имени диска . Хотя он правильно распознает полные пути в своих проверках безопасности, он неверно интерпретирует такие пути как относительные (потому что они не начинаются с косой черты) при открытии файла. Поскольку неабсолютные пути относятся к местоположению входного скрипта демультиплексораffmpeg
concat, предварительно добавляет путь к пути к файлу. Если аргумент командной строки сценария concat не содержит разделителей пути к файлу (т.е. это просто имя файла), проблема маскируется.Иллюстрация:
источник
Несмотря на то,
cmd.exe
что регистр не учитываетсяffmpeg
(он построен в первую очередь на Linux, но имеет тенденцию к * nix shell соглашениям). Я думаю, если вы измените значениеc:
в каждой строке входного файла наC:
, оно должно работать.источник