Fundo
Eu recuperei alguns vídeos grandes, conforme explicado aqui:
Existem 3 vídeos quase do mesmo tamanho com o mesmo conteúdo, aparentemente:
> ls recoverit-Wondershare/ -lh
total 23G
-rw-r--r-- 1 m3 users 3.7G Nov 25 20:03 00000084.mp4
-rw-r--r-- 1 m3 users 3.3G Nov 25 18:10 39289942016.mp4
-rw-r--r-- 1 m3 users 3.3G Nov 25 20:30 5142605824.mp4
Problema
O problema é que todos os 3 vídeos só podiam ser reproduzidos até 27m. Estou jogando pelo VLC media player. Mas a duração do vídeo de acordo com a duração informada por ffprobe
é de 1h27m:
> ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 -sexagesimal recoverit-Wondershare/00000084.mp4
1:27:14.640000
Além disso, o menu de detalhes/propriedades do botão direito do mouse mostra que 1h27m é a duração.
Sem erros fatais
Eu verifico a integridade do vídeo pelo método aqui:
https://superuser.com/a/100290/571029
Por este comando:
> ffmpeg -v fatal -i recoverit-Wondershare/00000084.mp4 -f null - 2>error-fatal.log
Mas não há nenhum erro fatal relatado no error-fatal.log
.
Pergunta
O que mais posso fazer para corrigir/reproduzir os vídeos?
Atualizar
Abrindo o vídeo do Avidemux, a análise de quadros continua em torno de %32 e, de repente, salta para terminar. Indicando que algo está errado por volta de %32 da duração do vídeo.
Registro MPV
Tentando reproduzir o vídeo por MPV, o vídeo é reproduzido bem, mas se eu pular para quadros após 27m, este log é recebido:
> mpv recoverit-Wondershare/00000084.mp4
(+) Video --vid=1 (*) (h264 1920x1080 50.000fps)
(+) Audio --aid=1 --alang=eng (*) (aac 2ch 48000Hz)
AO: [pulse] 48000Hz stereo 2ch float
VO: [gpu] 1920x1080 yuv420p
AV: 00:23:54 / 01:27:14 (27%) A-V: 0.000
[ffmpeg/video] h264: Found reference and non-reference fields in the same frame, which is not implemented. Update your FFmpeg version to the newest one from Git. If the problem still occurs, it means that your file has a feature which has not been implemented.
[ffmpeg/video] h264: If you want to help, upload a sample of this file to https://streams.videolan.org/upload/ and contact the ffmpeg-devel mailing list. ([email protected])
[ffmpeg/video] h264: decode_slice_header error
AV: 00:23:54 / 01:27:14 (27%) A-V: 0.000
[ffmpeg/video] h264: mmco: unref short failure
AV: 00:23:56 / 01:27:14 (27%) A-V: 0.000
Exiting... (End of file)
Salvando novamente o arquivo com o Avidemux
Por Avidemux, salvei novamente o vídeo com o sufixo MKV. A economia vai para cerca de 32% e depois salta para terminar. O ponto principal é que o tamanho do arquivo salvo novamente é o mesmo do arquivo de entrada!
> ls -lh recoverit-Wondershare/
total 26G
-rw-r--r-- 1 m3 users 3.7G Nov 26 00000084.mkv
-rw-r--r-- 1 m3 users 3.7G Nov 25 00000084.mp4
Analisando com FFMPEG
Tentei analisar o arquivo de vídeo por este comando:
> ffmpeg -i recoverit-Wondershare/00000084.mp4 -f null -
A análise é boa até 27m de tempo. Em seguida, esses erros são lançados:
[aac @ 0x560ec12d36c0] channel element 0.0 is not allocated
Error while decoding stream #0:1: Invalid data found when processing input
[aac @ 0x560ec12d36c0] channel element 0.0 is not allocated
Error while decoding stream #0:1: Invalid data found when processing input
[aac @ 0x560ec12d36c0] channel element 0.0 is not allocated
Error while decoding stream #0:1: Invalid data found when processing input
[aac @ 0x560ec12d36c0] channel element 0.0 is not allocated
Error while decoding stream #0:1: Invalid data found when processing input
Error while decoding stream #0:0: Invalid data found when processing input
[h264 @ 0x560ec12d6ac0] Invalid NAL unit size (0 > 124102).
[h264 @ 0x560ec12d6ac0] Error splitting the input into NAL units.
Error while decoding stream #0:0: Invalid data found when processing input
[h264 @ 0x560ec19a5180] Invalid NAL unit size (-1676108775 > 73339).
[h264 @ 0x560ec19a5180] Error splitting the input into NAL units.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x560ec12a1cc0] Packet corrupt (stream = 0, dts = 84810).
recoverit-Wondershare/00000084.mp4: corrupt input packet in stream 0
Error while decoding stream #0:0: Invalid data found when processing input
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x560ec12a1cc0] stream 0, offset 0xe8d711da: partial file
recoverit-Wondershare/00000084.mp4: Invalid data found when processing input
[h264 @ 0x560ec12dd240] Invalid NAL unit size (2013396992 > 15690).
[h264 @ 0x560ec12dd240] Error splitting the input into NAL units.
Error while decoding stream #0:0: Invalid data found when processing input
Last message repeated 1 times
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x560ec12a1cc0] stream 0, offset 0xe8d7ec2d: partial file
recoverit-Wondershare/00000084.mp4: Invalid data found when processing input
Error while decoding stream #0:0: Invalid data found when processing input
Last message repeated 1 times
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x560ec12a1cc0] stream 0, offset 0xe8db8bd3: partial file
recoverit-Wondershare/00000084.mp4: Invalid data found when processing input
frame=40826 fps=129 q=-0.0 Lsize=N/A time=00:27:13.06 bitrate=N/A speed=5.16x
video:21370kB audio:306204kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
cópia FFMPEG
Executando este comando:
> ffmpeg -i 00000084.mp4 -c copy 00000084--copy-by-ffmpeg.mp4
Dá esta saída:
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x557f3798ecc0] Packet corrupt (stream = 0, dts = 84810).speed=20.5x
00000084.mp4: corrupt input packet in stream 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x557f3798ecc0] stream 0, offset 0xe8d711da: partial file
00000084.mp4: Invalid data found when processing input
frame=84813 fps=1028 q=-1.0 Lsize= 3808738kB time=00:28:16.20 bitrate=18394.8kbits/s speed=20.6x
video:3727528kB audio:79510kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.044648%
átomo moov não encontrado
Além de 3 vídeos de cerca de 3 GB recuperados antes:
Mais um vídeo é recuperado, com cerca de 11 GB de tamanho. Não é jogado nada. Ao executar este comando em 11 GB de vídeo:
> ffmpeg -i za.mp4 -c copy za--output.mp4
Eu recebo este erro:
átomo moov não encontrado
Meu plano é tentar corrigir o moov atom not found
erro de vídeo de 11 GB. Vamos esquecer os vídeos de 3 GB.
Eu já havia usado o Wondershare Recoverit para recuperar os vídeos perdidos. Então, eu tentei o Wondershare Repairit para reparar os vídeos!
O Wondershare Repairit processou os vídeos de 3 GB. Sua visualização de saída é um vídeo de 28 minutos. Eu só posso visualizá-lo em baixa qualidade. Para realmente salvá-lo, tive que comprar a licença.
Além disso, o Wondershare Repairit processou o vídeo de 11 GB. Processo normal não foi suficiente. Assim, o processo avançado foi feito fornecendo um vídeo de amostra. Eu usei os vídeos de 3 GB como vídeo de amostra de vídeo de 11 GB! Bem, funcionou. O processo foi concluído e a visualização de saída é um vídeo de 43 minutos. Bem, aqui está a coisa decepcionante: o vídeo de 43 minutos é apenas um subconjunto do vídeo de 28 minutos que é repetido duas vezes!
Então, eventualmente, eu tenho cerca de 27 ou 28 minutos de vídeo assistível em minhas mãos. Não sei quais são minhas chances de ir mais longe. Vou verificar outras abordagens sugeridas por @Silbee .
Eu estava fazendo o processo de recuperação de forma errada. Com uma melhor forma de recuperação, agora, 1h17m do vídeo de 1h27m está recuperado. Ou seja, apenas os últimos 10m não são recuperados. Os detalhes estão aqui:
https://superuser.com/a/1691027/571029