2015-03-05 1 views
8

J'utilise ffpmeg pour convertir toutes mes vidéos en MP4:Problème avec le fichier en utilisant ffmpeg écraser pour convertir

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

Le problème est, si je suis en écrasant le fichier d'entrée, à savoir la sortie et l'entrée les fichiers sont les mêmes:

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

ou

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

le nouveau fichier n'est pas bon. Il dure une seconde et sa taille est extrêmement petite.

Des idées? Je veux l'utiliser comme un script sur mon serveur, donc l'écrasement est le moyen le plus pratique pour moi, je préfère ça au lieu de créer des fichiers temporaires puis de remplacer le temporaire par l'original.

+0

Le même concept s'applique à la plupart des outils Linux. La seule façon de le surmonter est d'utiliser un fichier tmp. Et si les outils ont des options pour le surmonter, c'est essentiellement ce qu'ils font dans les coulisses. –

Répondre

8

J'ai eu ce même problème (frustrant), vous avez peut-être remarqué que cela se produit parce que ffmpeg écrit sur le fichier qu'il lit, vous corrompez la source avant que le processus se termine ... ffmpeg ne met pas le fichier dans certains tampons, donc vous ne pouvez pas faire de cette façon, vous devrez utiliser un fichier temporaire.

just in case

+0

Ceci est correct. J'utilise un shell_exec PHP pour essayer de compresser le fichier, et il génère une erreur. Vous ne pouvez pas écraser la source d'entrée. Alors, oui, créez un fichier temporaire, puis renommez-le plus tard. – Andy

2

Vous ne pouvez pas écraser le fichier d'entrée pendant que vous encodez. Vous devez encoder dans un fichier de sortie différent. Par la suite, vous pouvez remplacer le fichier original par le nouveau fichier codé.