Como evitar que o vídeo gravado usando o ffmpeg seja corrompido

2

Na verdade, tenho um dispositivo que grava o áudio e o vídeo. quando a gravação é iniciada, o arquivo de vídeo também começa a persistir no disco rígido.

Mas se o dispositivo for desativado, infelizmente, entre a gravação. O arquivo de vídeo fica corrompido e dá um erro: Este arquivo não contém stream reproduzível

Estou usando o sistema Ubuntu e gravo o vídeo usando ffmpeg

Qualquer um pode me ajudar .. !!!

Estou usando a webcam para gravar o vídeo e o microfone bluetooth para áudio usando o ffmpeg. A seguir, o comando que estou usando para armazenar a gravação de áudio e vídeo em outro dispositivo (disco rígido):

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

Se a gravação for iniciada e no meio, desligamos o dispositivo de gravação, o vídeo e o áudio gravados são mantidos no disco rígido, mas não podem ser reproduzidos. Quando tentamos reproduzir esta gravação a vlc dá o erro this files contains no playable stream

    
por Prakash V Holkar 12.03.2014 / 10:23

2 respostas

1

Existe outra ótima solução que eu tenho. Não corrompa os arquivos de áudio e vídeo de qualquer maneira. Você pode usar -f mpegts em vez de -f mp4 no ffmpeg

    
por Prakash V Holkar 16.04.2014 / 09:16
3

Você deve tentar um formato de contêiner de saída diferente, como MKV.

Seu -f mp4 parece supérfluo (a menos que isso faça parte de um script em que o nome de saída é ou parte de uma variável), mas se você quiser continuar usando essa opção, altere-o para -f matroska e forneça sua saída extensão mkv em vez de mp4.

O MP4 requer que informações adicionais sejam gravadas no arquivo, mas isso só pode ocorrer depois que a codificação for concluída corretamente. Se a codificação não for concluída corretamente, a informação pode não estar presente, resultando em uma saída não reproduzível.

    
por LordNeckbeard 13.03.2014 / 18:17