J'ai besoin d'utiliser concat avec un chemin absolu, mais cela ne semble pas fonctionner. Dans le document, il dit que cela devrait fonctionner. Quelqu'un a une idée de comment le faire fonctionner? ffmpeg Doc
Cela ne fonctionne pas car il semble ajouter le répertoire du fichier texte au chemin du fichier
Impossible to open 'C:/temp/ffmpeg/c:/temp/ffmpeg/01.mov'
J'utilise 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
Vous pouvez soit utiliser un fichier texte qui est une liste de fichiers d'entrée comme ceci:
OU
Vous pouvez nommer explicitement les fichiers comme ceci:
Notez que vous utilisez 2 entrées l'une après l'autre, puis utilisez
-c:v copy
pour dire qu'il ne doit pas y avoir de réencodage uniquement. Il s'agit également du démultiplexeur concat . C'est flexible, mais les 2 fichiers d'entrée doivent avoir les mêmes codecs.Le contenu du fichier texte est comme vous l'avez écrit:
Notez les guillemets simples
Le format générique est:
Cela s'appliquerait à plusieurs lecteurs et chemins.
Voici un exemple réel d'un fichier de concaténation qui fonctionne:
C'est à travers:
Un lecteur interne Un lecteur
USB externe
Un lecteur réseau sur une autre machine Windows sur le même domaine
L'utilisation de la commande est:
Cela fonctionne comme prévu sans aucune erreur.
la source
Remarquer; sous Windows, si vous utilisez concat avec un fichier texte, les chemins d'accès dans le fichier texte doivent être relatifs au chemin de sortie .
Par exemple
Si vos fichiers se trouvent dans le répertoire,
C:\temp\bar.mp4
votre fichier texte ressemble à ceci:la source
"
Personnage manquant ?Utilisation
Dans ton cas
La clé est -safe 0 . Cela vous permet de mettre des chemins absolus dans le fichier txt.
la source
@ La réponse d'Eric fournit une instruction importante pour autoriser des chemins complets dans l'entrée du démultiplexeur concat (vous devez fournir l'
-safe 0
option à ffmpeg). Cependant, sous Windows, le démultiplexeur concat de ffmpeg ne gère pas correctement les chemins absolus / complets commençant par le nom du disque . Bien qu'il reconnaisse correctement les chemins d'accès complets dans ses contrôles de sécurité, il interprète mal ces chemins comme relatifs (car ils ne commencent pas par une barre oblique) lors de l'ouverture du fichier. Les chemins non absolus étant relatifs à l'emplacement du script d'entrée du démultiplexeur concat,ffmpeg
ajoute le chemin de ce dernier au chemin du fichier. Si l'argument de ligne de commande du script concat ne contient aucun séparateur de chemin de fichier (c'est-à-dire qu'il s'agit simplement d'un nom de fichier), le problème est masqué.Illustration:
la source
Bien qu'il
cmd.exe
soit insensible à la casse, ilffmpeg
ne l'est pas (étant construit principalement sur linux, il tend vers les conventions shell * nix). Si vous changez lec:
sur chaque ligne de votre fichier d'entréeC:
, cela devrait fonctionner, je pense.la source