Muszę użyć konkat z absolutną ścieżką, ale wydaje się, że to nie działa. W dokumencie mówi, że powinno działać. Czy ktoś ma pomysł, jak to zrobić? ffmpeg Doc
Nie działa, ponieważ wydaje się, że dołącza katalog plików tekstowych do ścieżki pliku
Impossible to open 'C:/temp/ffmpeg/c:/temp/ffmpeg/01.mov'
Używam 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
Można też użyć pliku tekstowego, który jest lista plików wejściowych tak:
LUB
Możesz jawnie nazwać pliki tak:
Zauważ, że używasz 2 wejść jeden po drugim, a następnie użyj,
-c:v copy
aby powiedzieć, że nie powinno być łączenia tylko z ponownym kodowaniem. Jest to również demuxer konkat . Jest to elastyczne, ale wymaga, aby 2 pliki wejściowe miały te same kodeki.Zawartość pliku tekstowego jest taka, jak napisałeś:
Zwróć uwagę na pojedyncze cytaty
Ogólny format to:
Dotyczy to wielu dysków i ścieżek.
Oto prawdziwy przykład działającego pliku konkatenacji:
Dotyczy to:
jednego dysku wewnętrznego,
jednego zewnętrznego dysku USB,
jednego dysku sieciowego na innym komputerze z systemem Windows w tej samej domenie
Komenda używa:
Działa zgodnie z oczekiwaniami bez żadnych błędów.
źródło
Ogłoszenie; w systemie Windows, jeśli używasz konkatii z plikiem tekstowym, ścieżki w pliku tekstowym muszą być względne względem ścieżki wyjściowej .
Na przykład
Jeśli twoje pliki znajdują się w katalogu, twój plik
C:\temp\bar.mp4
tekstowy wygląda następująco:źródło
"
postaci?Posługiwać się
W Twoim przypadku
Kluczem jest -bezpieczne 0 . To pozwala ci na umieszczenie absolutnych ścieżek w pliku txt.
źródło
@ Odpowiedź Erica zawiera ważną instrukcję pozwalającą na pełne ścieżki w danych demuxera konkatacji (musisz podać
-safe 0
opcję ffmpeg). Jednak w systemie Windows demuxer konkatacji ffmpeg nie obsługuje poprawnie ścieżek bezwzględnych / pełnych, zaczynając od nazwy dysku . Chociaż poprawnie rozpoznaje pełne ścieżki w swoich kontrolach bezpieczeństwa, błędnie interpretuje takie ścieżki jako względne (ponieważ nie zaczynają się od ukośnika) podczas otwierania pliku. Ponieważ ścieżki bezwzględne są względne w stosunku do położenia skryptu wejściowego demuxeraffmpeg
konkatacji , poprzedza ścieżkę do ścieżki pliku. Jeśli argument wiersza poleceń skryptu concat nie zawiera żadnych separatorów ścieżek plików (tzn. Jest tylko nazwą pliku), problem jest maskowany.Ilustracja:
źródło
Chociaż
cmd.exe
nie rozróżnia wielkości liter,ffmpeg
nie jest (zbudowany głównie na Linuksie, zmierza w kierunku konwencji powłoki * nix). Myślę, że jeśli zmieniszc:
w każdej linii pliku wejściowegoC:
, powinien on działać.źródło