私の防犯カメラ( Victure PC7 )は、動きを検出すると、SDカードに短いビデオを保存します。
ファイルの名前はxx.h264
です。
どのプレーヤー(VLC、MPlayer、…)もそれを再生できません。
ある種のh264圧縮のようです。
私はそれをFFmpegで変換しようとしました
ffmpeg -i 00.264 -bsf h264_mp4toannexb -vcodec libx264 out00.mp4
また、他の多くのオプションもあります。変換は常に次のような多くのエラーを生成します。
out00.h264: corrupt decoded frame in stream 0
[h264 @ 0000000000509a00] concealing 7804 DC, 7804 AC, 7804 MV errors in P frame
out00.h264: corrupt decoded frame in stream 0
[h264 @ 00000000036e2a00] concealing 8045 DC, 8045 AC, 8045 MV errors in P frame
[h264 @ 000000000366fc80] top block unavailable for requested intra mode -1
[h264 @ 000000000366fc80] error while decoding MB 78 0, bytestream 1153
[h264 @ 000000000366fc80] concealing 8131 DC, 8131 AC, 8131 MV errors in P frame
out00.h264: corrupt decoded frame in stream 0
[h264 @ 0000000002bf0e40] concealing 7930 DC, 7930 AC, 7930 MV errors in P frame
[NULL @ 00000000004f2980] illegal POC type 10
out00.h264: corrupt decoded frame in stream 0
[h264 @ 00000000036e2a00] illegal POC type 10
frame= 1489 fps= 12 q=28.0 size= 5888kB time=00:00:57.44 bitrate= 839.7kbits/
[h264 @ 00000000036e2a00] illegal POC type 10
Last message repeated 1 times
out00.h264: corrupt decoded frame in stream 0
[h264 @ 00000000004e2bc0] top block unavailable for requested intra mode -1
[h264 @ 00000000004e2bc0] error while decoding MB 62 0, bytestream 1441
ファイルの始まりは次のとおりです。
NALユニットの区切り文字00 00 01
が頻繁に表示されるため、ファイルにはNALユニットが含まれているように見えますが、NALユニット内のペイロードについてはよくわかりません。
それを再生可能な形式に変換する方法についてのアイデアは大歓迎です。
ビデオを変換する代わりに、おそらくそのストリームをMP4ビデオコンテナに取り込む必要があります。したがって、次のようなコマンドを使用します。
ffmpeg -i input.h264 -c copy output.mp4
これは、input.h264
の生の内容をoutput.mp4
にコピーするだけです。ただし、互換性のあるすべてのプレーヤーで期待どおりに再生されるMP4コンテナに含まれるようになります。たぶん、このようなフレームレートを強制することさえできます:
ffmpeg -framerate 30 -i input.h264 -c copy output.mp4
そして、どういうわけかビデオストリームが本当に損傷している場合は、基本的に最初のコマンドと同様のことを行うこのコマンドを試してください。ただし、この場合、エラーは無視されます。
ffmpeg -err_detect ignore_err -i input.h264 -c copy output.mp4
530/540モデルと同様の場合、ビデオは暗号化されます。カメラ設定で暗号化を無効にしない限り、アプリでの動画の表示は制限されています。無効にすることができるかどうかはわかりませんが、onvifを有効にすることで可能です。