web-dev-qa-db-fra.com

Comment empêcher la vidéo enregistrée en utilisant ffmpeg d'être corrompue

En fait, j'ai un appareil qui enregistre l'audio et la vidéo. lorsque l'enregistrement est démarré, le fichier vidéo a également commencé à persister sur le disque dur.

Mais si l'appareil s'éteint malheureusement entre l'enregistrement. Le fichier vidéo est corrompu et donne une erreur: Ce fichier ne contient pas de flux lisible

J'utilise le système Ubuntu et enregistre la vidéo avec ffmpeg

Est-ce que quelqu'un peut m'aider..!!!

J'utilise la webcam pour enregistrer la vidéo et le microphone Bluetooth pour l'audio à l'aide du ffmpeg. Voici la commande que j'utilise pour stocker l'enregistrement audio et vidéo sur un autre périphérique (disque dur):

ffmpeg -loglevel warning -y  -i /home/prakash/../../output/2013-10-07T22-39-05/right_cam.mp4 -i /home/prakash/../.. output/2013-10-07T22-39-05/left_cam.mp4 -filter_complex '[1:0] pad=108:28:5:2:black [padvidleft]; [0:0] setpts=PTS+0.8786787543577881/TB [right_cam_pts]; [padvidleft][right_cam_pts] overlay=544:0 [mergedvid] ; [1:2] channelsplit [ll][lr]; [ll][lr] amix [leftmix];
               [1:3] channelsplit [rl][rr]; [rl][rr] amix [rightmix];
               [leftmix][rightmix] amix [cam_all];
               [1:4] channelsplit [btl][btr] ; [btl][btr] amix [btmix] ;
               [btmix][cam_all] join [bt_mixcam]' -f mp4 -crf 20 -r 24 -pix_fmt yuv420p -vcodec libx264 -vprofile baseline -map [mergedvid] -map [bt_mixcam] -map 1:2 -map 1:3 -map 1:4 /home/prakash/../../output/combos/combo-2013-10-07T22-39-05_dgrt6546533w471567f880abf287a855c_1088x288.mp4

Si l'enregistrement est démarré et au milieu, nous éteignons l'appareil d'enregistrement. La vidéo et l'audio enregistrés sont conservés sur le disque dur, mais ils ne peuvent pas être lus. Lorsque nous essayons de lire cet enregistrement, le vlc donne l’erreur this files contains no playable stream

2
Prakash V Holkar

Il existe une autre excellente solution que j'ai. Cela ne corromp pas les fichiers audio et vidéo de quelque manière que ce soit. Vous pouvez utiliser -f mpegts au lieu de -f mp4 dans ffmpeg

1
Prakash V Holkar

Vous devriez essayer un autre format de conteneur de sortie tel que MKV.

Votre -f mp4 semble superflu (sauf s’il s’agit d’une partie d’un script dont le nom de sortie est une partie d’une variable), mais si vous souhaitez continuer à utiliser cette option, changez-la en -f matroska et donnez votre sortie. l'extension mkv au lieu de mp4.

MP4 nécessite l'écriture d'informations supplémentaires dans le fichier, mais cela ne peut se produire qu'une fois l'encodage correctement effectué. Si l'encodage ne se termine pas correctement, les informations risquent de ne pas être présentes, ce qui rendrait la sortie non lisible.

3
llogan