Eu preciso usar concat com caminho absoluto, mas parece não funcionar. No documento, ele diz que deve funcionar. Alguém tem uma idéia de como fazê-lo funcionar? ffmpeg Doc
Não funciona porque parece anexar o diretório do arquivo de texto ao caminho do arquivo
Impossible to open 'C:/temp/ffmpeg/c:/temp/ffmpeg/01.mov'
Eu uso o 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
Você pode tanto usar um arquivo de texto que é uma lista de arquivos de entrada assim:
OU
Você pode nomear explicitamente os arquivos da seguinte forma:
Observe que você usa 2 entradas uma após a outra e depois
-c:v copy
diz que não deve haver junção somente de recodificação. Além disso, este é o desmembrador de concat . Isso é flexível, mas requer que os 2 arquivos de entrada tenham os mesmos codecs.O conteúdo do arquivo de texto é como você escreveu:
Observe as aspas simples
O formato genérico é:
Isso se aplicaria a várias unidades e caminhos.
Aqui está um exemplo real de um arquivo de concatenação que funciona:
É o seguinte:
Uma unidade interna Uma unidade
USB externa
Uma unidade de rede em outra máquina Windows no mesmo domínio
O comando use é:
Isso funciona como esperado, sem erros.
fonte
Aviso prévio; no Windows, se você estiver usando concat com um arquivo de texto, os caminhos no arquivo de texto precisam ser relativos ao caminho de saída .
Por exemplo
Se seus arquivos estão localizados no diretório,
C:\temp\bar.mp4
seu arquivo de texto se parece com isso:fonte
"
personagem?Usar
No seu caso
A chave é -safe 0 . Isso permite que você coloque caminhos absolutos no arquivo txt.
fonte
A resposta do @ Eric fornece uma instrução importante para permitir caminhos completos na entrada do concat desmuxer (você deve fornecer a
-safe 0
opção para ffmpeg). No entanto, no Windows, o descomplexador de concat do ffmpeg não manipula corretamente caminhos absolutos / completos começando com o nome do disco . Embora reconheça corretamente caminhos completos em suas verificações de segurança, ele interpreta mal esses caminhos como relativos (porque eles não começam com uma barra) ao abrir o arquivo. Como os caminhos não absolutos são relativos ao local do script de entrada do concat desmuxer,ffmpeg
precede o caminho deste último ao caminho do arquivo. Se o argumento da linha de comando do script concat não contiver nenhum separador de caminho de arquivo (ou seja, é apenas um nome de arquivo), o problema será mascarado.Ilustração:
fonte
Embora não faça
cmd.exe
distinção entre maiúsculas e minúsculas,ffmpeg
não é (sendo construído principalmente no Linux, ele tende a convenções * nix shell). Se você alterar oc:
em cada linha do seu arquivo de entrada paraC:
, deve funcionar, eu acho.fonte