FFMpeg concat demuxer nom de fichier non sécurisé

14

J'utilise ffmpeg dans mon application .net pour fusionner (concaténer) quelques courtes vidéos avec les mêmes dimensions d'encodage et de largeur et hauteur. J'ai créé un fichier txt comme le dit la documentation et voici mon txt:

concatTextDirectory est le répertoire de mon fichier 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'

Et c'est la partie de l'argument ffmpeg:

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

mais il n'a pas de résultat et voici le rapport

ffmpeg a commencé le 2016-04-25 à 19:02:30 Rapport écrit dans
"ffmpeg-20160425-190230.log" Ligne de commande: ffmpeg.exe -f concat -i
"C: \ Users \ mtst \ Desktop \ Clips \ keep \ keep.txt "-c copy
" C: \ Users \ mtst \ Desktop \ Clips \ keep \ keep.mp4 "-y -report ffmpeg
version N-79546-g13406b6 Copyright (c) 2000-2016 the 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 libswresample 2. 0.101 / 2. 0.101 libpostproc 54. 0.100 / 54. 0.100 Fractionnement de la ligne de commande. Option de lecture «-f» ... assortie en option
'f' (formatage forcé) avec l'argument 'concat'. L'option de lecture '-i' ...
correspond au fichier d'entrée avec l'argument
'C: \ Users \ mtst \ Desktop \ Clips \ keep \ keep.txt'. L'option de lecture «-c» ...
correspond à l'option «c» (nom du codec) avec l'argument «copie». L'
option de lecture «C: \ Users \ mtst \ Desktop \ Clips \ keep \ keep.mp4» ... correspond au
fichier de sortie. L'option de lecture «-y» ... correspond à l'option «y» (écraser les fichiers de sortie) avec l'argument «1». La lecture de l'option '-report' ... correspond à l'option 'report' (générer un rapport) avec l'argument '1'. Fin de la
division de la ligne de commande. Analyse d'un groupe d'options: global.
Application de l'option y (écraser les fichiers de sortie) avec l'argument 1.

analysé un groupe d'options. Analyse d'un groupe d'options: fichier d'entrée
C: \ Users \ mtst \ Desktop \ Clips \ keep \ keep.txt. Application de l'option f (forcer le
format) avec l'argument concat. Analyse réussie d'un groupe d'options. Ouverture d'un fichier d'entrée: C: \ Users \ mtst \ Desktop \ Clips \ keep \ keep.txt.
[file @ 00000000027d3ee0] Définition de la liste blanche par défaut 'file, crypto'
[concat @ 00000000027d3800] Nom de fichier non sécurisé
'C: \ Users \ mtst \ Desktop \ Clips \ keep \ a1.mp4' [AVIOContext @
0000000000957ca0] Statistiques: 238 octets lus, 0 cherche
C: \ Users \ mtst \ Desktop \ Clips \ keep \ keep.txt: opération non autorisée

comme vous pouvez le voir à la fin, il dit:

Nom de fichier non sécurisé «C: \ Users \ mtst \ Desktop \ Clips \ keep \ a1.mp4»

... et opération non autorisée. J'ai essayé d'ajouter des barres obliques inverses supplémentaires ou de changer les barres obliques inverses en barres obliques ou en échappant aux deux-points, en ajoutant des guillemets doubles ou des guillemets simples au début ou à la fin de concatTextDirectory ... aucune de ces modifications n'a donné de résultat.

Eftekhari
la source

Réponses:

26

Soit courir

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'utilisez pas de chemins absolus (complets) dans keep.txt

Gyan
la source
Qu'est-ce qui n'est pas sûr et pourquoi? L'exemple dans la documentation montre des chemins absolus, donc je pense que ce n'est pas le problème.
Gustavo Rodrigues
1
ffmpeg.org/pipermail/ffmpeg-devel/2013-F February / 138400.html - fait que les chemins absolus sont traités comme dangereux. Pas sûr de la logique cependant!
jamadagni
J'ai également pensé que c'était supposé être des chemins absolus basés sur des documents, mais apparemment, ce n'est pas vrai. Je l'ai fait juste des noms de fichiers et cela a très bien fonctionné.
Michael Tunnell
+1 pour l'utilisation des noms de chemin relatifs. Tous les exemples sont complets.
pkamb