2015-03-05 10 views
8

Używam ffpmeg przekonwertować wszystkie moje filmy na mp4:Problem z zastąpieniem pliku podczas korzystania z ffmpeg do konwersji

ffmpeg -i InpuFile -vcodec h264 -acodec aac -strict -2 OutputFile.mp4 

Problem polega na tym, czy jestem nadpisania pliku wejściowego, czyli na wyjściu i wejściu pliki są takie same:

ffmpeg -i InpuFile -vcodec h264 -acodec aac -strict -2 InpuFile.mp4 -y 

lub

ffmpeg -i InpuFile -y -vcodec h264 -acodec aac -strict -2 InpuFile.mp4 

nowy plik nie jest dobre. Trwa jedną sekundę, a jego rozmiar jest bardzo mały.

Wszelkie pomysły?

Chcę użyć tego jako skryptu na moim serwerze, więc nadpisywanie jest dla mnie najbardziej dogodnym sposobem, wolę w ten sposób zamiast tworzyć pliki tymczasowe, a następnie zastępować tymczasowy oryginałem.

+0

Ta sama koncepcja dotyczy większości narzędzi systemu Linux. Jedynym sposobem na pokonanie tego jest użycie pliku tmp. A jeśli narzędzia mają opcje na pokonanie tego, to w zasadzie to, co robią za kulisami. –

Odpowiedz

8

Miałem ten sam (frustrujący) problem, mogłeś zauważyć, że dzieje się tak dlatego, że ffmpeg pisze nad plikiem, który odczytuje, uszkadzasz źródło przed zakończeniem procesu ... ffmpeg nie umieszcza pliku w jakimś buforze, więc nie możesz tego zrobić, będziesz musiał użyć pliku tymczasowego.

just in case

+0

To się zgadza. Używam PHP shell_exec do wypróbowania i skompresowania pliku, a on zgłasza błąd. Nie można zastąpić źródła wejściowego. Tak, więc utwórz plik tymczasowy, a następnie zmień jego nazwę później. – Andy

2

Nie można nadpisać pliku wejściowego podczas kodowania. Musisz kodować do innego pliku wyjściowego.

Następnie można zastąpić oryginalny plik nowym zakodowanym plikiem.

Powiązane problemy