Necesito usar concat con ruta absoluta, pero no parece funcionar. En el documento dice que debería funcionar. ¿Alguien tiene una idea de cómo hacer que funcione? ffmpeg Doc
No funciona porque parece agregar el directorio del archivo de texto a la ruta del archivo
Impossible to open 'C:/temp/ffmpeg/c:/temp/ffmpeg/01.mov'
Yo uso 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
Puede o bien utilizar un archivo de texto que es una lista de los archivos de entrada, así:
O
Puede nombrar explícitamente los archivos de esta manera:
Tenga en cuenta que usa 2 entradas una tras otra, y luego usa
-c:v copy
para decir que no debe haber una nueva codificación, solo uniones. Además, este es el demuxer concat . Esto es flexible, pero requiere que los 2 archivos de entrada tengan los mismos códecs.El contenido del archivo de texto es como lo escribió:
Tenga en cuenta las comillas simples
El formato genérico es:
Eso se aplicaría a múltiples unidades y rutas.
Aquí hay un ejemplo real de un archivo de concatenación que funciona:
Esto es a través de:
Una unidad interna Una unidad
USB externa
Una unidad de red en otra máquina de Windows en el mismo dominio
El uso del comando es:
Esto funciona como se esperaba sin ningún error.
fuente
Aviso; en Windows, si está utilizando concat con un archivo de texto, las rutas en el archivo de texto deben ser relativas a la ruta de salida .
P.ej
Si sus archivos se encuentran en el directorio, su archivo de texto se
C:\temp\bar.mp4
verá así:fuente
"
personaje?Utilizar
En tu caso
La clave es -safe 0 . Eso le permite poner rutas absolutas en el archivo txt.
fuente
La respuesta de @ Eric proporciona una instrucción importante para permitir rutas completas en la entrada del demuxer concat (debe proporcionar la
-safe 0
opción de ffmpeg). Sin embargo, en Windows, el demuxer concat de ffmpeg no maneja correctamente las rutas absolutas / completas que comienzan con el nombre del disco . Aunque reconoce correctamente las rutas completas en sus comprobaciones de seguridad, malinterpreta tales rutas como relativas (porque no comienzan con una barra inclinada) al abrir el archivo. Dado que las rutas no absolutas son relativas a la ubicación del script de entrada de demuxer concat,ffmpeg
antepone la ruta de este último a la ruta del archivo. Si el argumento de la línea de comandos del script concat no contiene ningún separador de ruta de archivo (es decir, es solo un nombre de archivo), el problema está enmascarado.Ilustración:
fuente
Si bien
cmd.exe
no distingue entre mayúsculas y minúsculas,ffmpeg
no lo es (se construye principalmente en Linux, tiende hacia las convenciones de shell * nix). Si cambia elc:
en cada línea de su archivo de entrada aC:
, creo que debería funcionar.fuente