Ontem eu estava filmando uma cena com meu telefone, mas de repente o aplicativo travou e quando tento abrir o m4v gerado ele diz que está corrompido.
Eu baixei os arquivos de vídeo (cerca de 36 MB) no meu PC e estou tentando abri-lo e repará-lo. Você pode me sugerir uma maneira de fazer isso?
Informações FFMPEG
Conforme sugerido nos comentários, tento verificar o que o FFMPEG me diz sobre esse arquivo com este comando
ffmpeg.exe -i VID_20120425_144739.m4v -c:v copy -c:a copy out.mp4 2> log.txt
Aqui está o resultado:
ffmpeg version N-40126-ga4b58fd Copyright (c) 2000-2012 the FFmpeg developers
built on Apr 26 2012 03:29:50 with gcc 4.6.3
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-runtime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libass --enable-libcelt --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libopenjpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
libavutil 51. 47.100 / 51. 47.100
libavcodec 54. 15.100 / 54. 15.100
libavformat 54. 3.100 / 54. 3.100
libavdevice 53. 4.100 / 53. 4.100
libavfilter 2. 72.100 / 2. 72.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 11.100 / 0. 11.100
libpostproc 52. 0.100 / 52. 0.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 003fc940] moov atom not found
VID_20120425_144739.m4v: Invalid data found when processing input
As duas últimas linhas são exibidas em vermelho.
Respostas:
É possível reparar o arquivo mp4 ou m4v quebrado usando Untrunc .
Para esse método, você precisa de outro arquivo de vídeo do mesmo dispositivo que não esteja quebrado.
Como instalar
untrunc
Para compilação, você precisa de uma instalação Linux (idealmente Ubuntu) e capacidade básica de usar uma linha de comando. Você também pode pular esta parte e executar
untrunc
pelo Docker (veja a resposta abaixo ), se tiver.Isto é o que fazer:
Instale algumas bibliotecas pré-requisitos com este comando:
sudo apt-get install libavformat-dev libavcodec-dev libavutil-dev
Obtenha o código-fonte para Untrunc no repositório do GitHub (escolha um método):
wget https://github.com/ponchio/untrunc/archive/master.zip && unzip master.zip && cd untrunc-master
git clone https://github.com/ponchio/untrunc.git && cd untrunc
Compile o código-fonte usando este comando (todos em uma linha):
g++ -o untrunc file.cpp main.cpp track.cpp atom.cpp mp4.cpp -L/usr/local/lib -lavformat -lavcodec -lavutil
(você pode tentar pular esta etapa e usar o executável fornecido, mas não funcionou para mim)
Então você pode consertar o vídeo. Você precisa do vídeo quebrado e de um exemplo de vídeo de trabalho.
Como consertar o vídeo
Encontre outro vídeo de trabalho, idealmente da mesma câmera e de preferência pelo menos contanto que o quebrado; também a mesma resolução, se possível (acredito que isso pode ajudar, embora não seja essencial).
Execute este comando na pasta em que você descompactou e compilou o Untrunc, mas substitua os
/path/to/...
bits pelos seus 2 arquivos de vídeo:Em seguida, ele deve girar e produzir um arquivo reproduzível chamado
broken-video_fixed.m4v
É isso que você está pronto!
O VLC Media Player agora deve poder reproduzir o arquivo. No entanto, pode estar relatando as informações incorretas de comprimento (Untrunc tenta adivinhar / resolver isso, mas nem sempre as corrige). Para corrigir isso, tente recodificar o vídeo por outro programa.
[Obrigado ao comentário de slhck pela sugestão de tentar Untrunc.]
[Muito obrigado a Federico Ponchio por codificar Untrunc em primeiro lugar, para resolver esse problema exato.]
fonte
untrunc-master
. Em seguida, execute: ./untrunc goodfile.mp4 badfile.mp4 Demorou cerca de 3 minutos para um arquivo de 2 gb e só precisei sincronizar novamente o áudio. Tudo o resto estava bem.Se alguém tropeçar nisso, eu também tentei falar sobre o aplicativo sparrowt, mas não funcionou para mim (veja alguns relatórios de erros que eu criei no repositório de desenvolvedores). Talvez seja porque não era um arquivo mp4, mas um arquivo MOV ...
O que me ajudou foi este post: http://muzso.hu/2012/11/14/how-to-fix-a-broken-mp4-mov-video-ffmpeg-reports-moov-atom-not-found
Eles vinculam a um programa chamado "HD Video Repair Utility" ( http://grauonline.de/cmsimple2_6/en/?Solutions:HD_Video_Repair_Utility ), que é muito mais barato que o Treasured ( http://aeroquartet.com/movierepair/repair ) . Eles até apontaram que havia uma versão anterior (versão 1.5) que não custava nada ( http://nagasoft.cn/download/videorepair1.5.zip )!
Tentei reparar o arquivo usando a versão 1.5 e o consegui trabalhar parcialmente. Depois de recodificar com o ffmpeg (obtive alguns erros), percebi que uma parte do áudio havia desaparecido. Nos registros (felizmente, o Video Repair Utility possui alguns), não houve mais menções ao áudio após um determinado período. Vou levá-lo como está ...
fonte
Você pode instalar
docker
(disponível para todos os principais sistemas operacionais) e executar:A sintaxe é para o Bash no Linux ou macOS. Aqui,
GOOD-reference-file.MP4
eBAD-corrupt-file.md5
deve ser tanto em seu diretório atual, e o diretório será montado/vol
no recipiente Docker.Leia os outros comentários para obter explicações mais detalhadas.
Este foi o mais rápido para mim!
fonte
Dockerfile
está disponível aqui se alguém quiser ver o que será executado antes de executá-lo no seu computador: github.com/synctree/docker-untrunc Também há umDockerfile
nountrunc
repositório real agora - eu não testei nem comparei eles em detalhes, mas mencione-o aqui para obter detalhes: github.com/ponchio/untrunc/blob/master/Dockerfile@sparrowt Suas instruções atuais não funcionaram na minha recente instalação do Ubuntu 16.10. Eu recebi o seguinte erro ao compilar sem interrupção:
Conforme explicado no repositório não- truncado , pode ser necessário baixar o libav separadamente, em vez de usar a versão no repositório Ubuntu. O código a seguir funcionou para mim:
Isso criou um arquivo chamado broken-video_fixed.mp4 que funcionou para mim. Muito obrigado por iniciar este tópico.
fonte
h264dec.h
? porquetrack.cpp
está tentando incluí-lo e eu não consigo encontrá-lo em qualquer lugar: /sudo apt-get install yasm
,sudo apt-get install libbz2-dev
e, para superar uma referência indefinida para 'clock_gettime', adicione-lrt
ao final dag++
linha de comando (veja stackoverflow.com/a/2418175/550712 ). Ele converteu cerca de 2/3 do meu vídeo.Caso o untrunc não suporte o codec dentro do seu arquivo, tente corrigi-lo com um editor hexadecimal:
mdat
seção no arquivo "ok" pelamdat
seção no arquivo "quebrado", sem o cabeçalho (ou seja, copie apenas os bytes após 'mdat')mdat
seção, o valor atual será o tamanho antigo (mdat
tamanho da seção do arquivo "ok" ), substitua-o pelo novo tamanho (" quebrado "mdat
tamanho da seção do arquivo )Acabei codificando um programa simples para fazer isso: https://github.com/golimarrrr/fix-3gp
Tanto o programa quanto manualmente usando o editor hexadecimal devem criar o mesmo arquivo fixo
fonte
Você tentou abrir o arquivo com o VLC Player ? Geralmente é muito bom em reparar arquivos danificados.
fonte