FFMpeg concat desmuxer nome de arquivo não seguro

14

Estou usando o ffmpeg dentro do meu aplicativo .net para mesclar (concatenar) alguns vídeos curtos com as mesmas dimensões de codificação e largura e altura. Eu criei um arquivo txt como a documentação diz e este é o meu txt:

concatTextDirectory é o diretório do meu arquivo txt.

file 'C:\Users\mtst\Desktop\Clips\keep\a1.mp4'
file 'C:\Users\mtst\Desktop\Clips\keep\a2.mp4'
file 'C:\Users\mtst\Desktop\Clips\keep\a3.mp4'
file 'C:\Users\mtst\Desktop\Clips\keep\a4.mp4'
file 'C:\Users\mtst\Desktop\Clips\keep\a5.mp4'

E esta é a parte do argumento ffmpeg:

ffmpeg.StartInfo.Arguments = "/c ffmpeg.exe -f concat -i " + concatTextDirectory + " -c copy " + videoOut + " -y -report";

mas não tem resultado e abaixo está o relatório

ffmpeg iniciado em 25/04/2016 às 19:02:30 Relatório gravado em
"ffmpeg-20160425-190230.log" Linha de comando: ffmpeg.exe -f concat -i
"C: \ Users \ mtst \ Desktop \ Clips \ keep \ keep.txt "-c copy
" C: \ Usuários \ mtst \ Desktop \ Clipes \ keep \ keep.mp4 "-y -reporte o ffmpeg
versão N-79546-g13406b6 Copyright (c) 2000-2016 o FFmpeg
22.100 libavcodec 57. 35.100 / 57. 35.100 libavformat 57. 34.102 / 57. 34.102 libavdevice 57. 0.101 / 57. 0.101 libavfilter 6. 44.100 / 6. 44.100 libswscale 4. 1.100 / 4. 1.100 libswesample 2. 0.101 / 2. 0.101 libpostproc 54. 0.100 / 54. 0.100 Dividindo a linha de comando. A opção de leitura '-f' ... corresponde à opção
'f' (formato de força) com o argumento 'concat'. A opção de leitura '-i' ...
corresponde ao arquivo de entrada com o argumento
'C: \ Users \ mtst \ Desktop \ Clips \ keep \ keep.txt'. A opção de leitura '-c' ...
corresponde à opção 'c' (nome do codec) com o argumento 'copy'. A
opção de leitura 'C: \ Users \ mtst \ Desktop \ Clips \ keep \ keep.mp4' ... corresponde ao
arquivo de saída. A opção de leitura '-y' ... corresponde à opção 'y' (sobrescreve os arquivos de saída) com o argumento '1'. A opção de leitura '-report' ... corresponde à opção 'report' (gerar um relatório) com o argumento '1'. Terminou a
divisão da linha de comando. Analisando um grupo de opções: global.
Aplicando a opção y (sobrescrever arquivos de saída) com o argumento 1.

analisou um grupo de opções. Analisando um grupo de opções: arquivo de entrada
C: \ Usuários \ mtst \ Desktop \ Clips \ keep \ keep.txt. Aplicando a opção f (forçar
formato) com argumento concat. Analisado com sucesso um grupo de opções. Abrindo um arquivo de entrada: C: \ Usuários \ mtst \ Desktop \ Clips \ keep \ keep.txt.
[file @ 00000000027d3ee0] Definindo a lista de permissões padrão 'file, crypto'
[concat @ 00000000027d3800] Nome de arquivo não seguro
'C: \ Users \ mtst \ Desktop \ Clips \ keep \ a1.mp4' [AVIOContext @
0000000000957ca0] Estatísticas: 238 bytes lidos, 0 procura
C: \ Users \ mtst \ Desktop \ Clips \ keep \ keep.txt: operação não permitida

como você pode ver no final, ele diz:

Nome de arquivo não seguro 'C: \ Users \ mtst \ Desktop \ Clips \ keep \ a1.mp4'

... e Operação não permitida. Tentei adicionar barras invertidas extras ou alterar barras invertidas para encaminhar barras ou escapar dois pontos, adicionando aspas duplas ou aspas simples no início ou no final do concatTextDirectory ... nenhuma dessas alterações resultou.

Eftekhari
fonte

Respostas:

26

Ou corra

ffmpeg.exe -f concat -safe 0 -i
"C:\Users\mtst\Desktop\Clips\keep\keep.txt" -c copy
"C:\Users\mtst\Desktop\Clips\keep\keep.mp4

Ou não use caminhos absolutos (completos) em keep.txt

Gyan
fonte
O que não é seguro e por quê? O exemplo na documentação mostra caminhos absolutos, então acho que esse não é o problema.
Gustavo Rodrigues
1
ffmpeg.org/pipermail/ffmpeg-devel/2013-February/138400.html - faz com que caminhos absolutos sejam tratados como inseguros. Não tenho certeza sobre a lógica disso!
Jamadagni
Eu também pensei que era para ser caminhos absolutos baseados em documentos, mas aparentemente isso não está certo. Eu criei apenas nomes de arquivos e funcionou muito bem.
Michael Tunnell
+1 para usar nomes de caminhos relativos. Todos os exemplos mostram completo.
pkamb