Czy istnieje sposób użycia programu FFMPEG do rozłożenia wideo na pojedyncze pliki obrazów, a następnie ponownego złożenia tych plików obrazów na wideo z dźwiękiem z oryginalnego wideo w synchronizacji z nową ścieżką wideo?
Uważam, że jednym z kluczowych elementów może być prawidłowe ustawienie liczby klatek na sekundę, ale wszystkie kombinacje, które wypróbowałem, nie zadziałały.
Kombinacje, które wypróbowałem, są następujące:
ffmpeg -i "/InputVideoFilePath" "/OutputImageFilePath"
(To polecenie zwraca tę samą liczbę plików obrazu wyjściowego, niezależnie od tego, czy specyfikacja liczby klatek na sekundę jest umieszczona w pliku wejściowym, pliku wyjściowym, czy w obu.)
Następnie przeciągam również dźwięk do osobnego pliku, wykonując następujące polecenie:
ffmpeg -i "/InputVideoFilePath" "/OutputAudioFilePath"
Następnie składam obrazy w inny plik wideo, wpisując jedną z następujących czynności:
ffmpeg -i "/OutputImageFilePath" "/OutputVideoFilePath"
ffmpeg -i "/OutputImageFilePath" -r 23.98 "/OutputVideoFilePath"
ffmpeg -r 23.98 -i "/OutputImageFilePath" -r 23.98 "/OutputVideoFilePath"
(23,98 to oryginalna liczba klatek na sekundę wideo)
Jak dotąd zarówno 1, jak i 2 tworzą wideo krótsze niż oryginalne wideo, a 3 tworzy wideo o tej samej długości. Nie rozumiem, w jaki sposób ustawienie liczby klatek na sekundę może mieć jakąkolwiek różnicę, ponieważ dane wejściowe to po prostu seria obrazów (tj. W jaki sposób seria obrazów może mieć liczbę klatek na sekundę?). Dokumentacja FFmpeg stwierdza, że ustawienie częstotliwości klatek na wejściu powoduje ignorowanie znaczników czasu, ale w jaki sposób obrazy mogą mieć znaczniki czasu, jeśli nie są częścią wideo?
Po użyciu metody 3 nakładam plik audio MP3 na nowo utworzony plik wideo za pomocą polecenia:
ffmpeg -i "/PathToVideoFile" -i "/PathToAudioFile" "/PathOfFinalVideoOutput"
Produkt końcowy jest tylko nieznacznie zsynchronizowany, ale nadal zauważalnie. W razie potrzeby mogę wyświetlić dane wyjściowe FFmpeg dla każdego z tych kroków (oczywiście jest to dużo danych wyjściowych).
-r
jako opcja wejścia. Jeśli nie zostanie określony, FFmpeg przyjmie domyślną liczbę klatek na sekundę 25 dla sekwencji obrazów. Właśnie przetestowałem twój proces i działał bez problemów z synchronizacją. To było z wideo 25 FPS, więc nie musiałem tutaj określać żadnej liczby klatek, ale ustawienie zarówno 23,98 jako opcji wejścia i wyjścia byłoby idealne. Może możesz pokazać nam wynik pierwszego polecenia, a trzeciego polecenia ponownego złożenia? Nie martw się, jeśli to trochę potrwa.