我が家では「SV3C」という監視カメラを導入しています。アマゾンで安価に販売されている中華製の監視カメラです。
説明書の日本語がおかしかったり、必要な情報が見つけにくいなど、設置に難はあるものの性能は申し分ありません。
しかしこのカメラには設置の難しさだけでなく、もう一つ問題があります。
保存した動画を再生できるのは専用のプレーヤーだけという点です。唯一再生できるのはHIPlayerというプレーヤーです。これでは動画の共有が困難です。
解決策を調べていてわかったのですが、安価な中華製監視カメラではよくあることのようです。
では、なぜ謎の動画形式を採用するのか調べると、H.264のライセンス料が関係しているようです。中華メーカーが1円でも安く監視カメラを販売するためにとった苦肉の策です。
つまり、監視カメラのメーカーがわざと再生できない動画を作成しているというのが実情のようです。
ただし、謎の形式とは言ってもファイルのヘッダを操作しているだけで、実態はH.264形式です。ヘッダ情報を書き換えれば一般のプレーヤーで再生可能です。問題はその方法ですが、すでに海外では対策ソフトが公開されています。
Cheap Chinese camera garbled .264 files
ページ中程にある「convert.exe」という文字をクリックしてダウンロードしてください。
2020年5月追記 上記サイトで配布されていた「convert.exe」は配布が停止されています。 別の方より、より良いコードを提示されたため、そちらを掲載するというスタイルにされたようです。 そこで当サイトでは上記サイトで新しいプログラムが提供されるまでの暫定措置として改良されたコードのプログラムを配布します。 convert_re.exe 使用方法や注意点などはReadMe.txtをご覧ください。
使い方は簡単で、このソフトに動画ファイルをドラッグすれば同じフォルダに一般のプレーヤーで再生できる形式のファイルを書き出してくれます。
例)
input.h264をドラッグするとinput.h264.mp4とinput.h264.wmvの二種類が出力される。
これで万事解決かと言われるとそうでもなく、私の環境ではなぜか倍速で再生される動画が書き出されます。
2020年5月追記 SV3Cシリーズの公式ページで専用のソフトが公開されました。 その使い方を解説しました。 「中華製の監視カメラ「SV3C」で撮影した動画をavi形式へ変換する方法」
倍速になってしまった動画を通常の速度へ変更する方法
ここからは中華製の監視カメラとは関係なく、ただの動画エンコードの話です。お気に入りのエンコーダーがある場合はそちらを利用してください。
私の場合はコマンドラインで簡単にエンコードできるffmpegを利用しました。
ffmpegのダウンロードページでWindowsマークをクリックしてダウンロードします。
中のファイルbinフォルダをcドライブ直下に移動。
スタートメニューの隣の検索に「環境変数を編集」と入力し実行。
「新規」で、変数に「ffmpeg」で値に「c://bin\ffmpeg」と入力してOKをクリック。
スタートメニューの隣の検索に「cmd」でコマンドプロンプトを起動。変換したいファイルのフォルダへ移動。
例)デスクトップへ移動する
$ cd Desktop
続いてffmpegで再生速度を半分にするコマンドを実行。
例)変換するファイル名が「input.h264.mp4」の場合
ffmpeg -i input.h264.mp4 -vf setpts=PTS/0.5 -af atempo=0.5 output.mp4
フォルダに出力されたoutput.mp4が変換された動画ファイルです。
ffmpegのコマンドについて解説すると長くなるので、ざっくり解説します。
「-i input.h264.mp4」の部分が変換するファイル名の指定。
「-vf setpts=PTS/0.5」の部分が動画の再生スピードに関する部分。1が等倍で、2が倍速。今回は0.5なので半分の速度に変換という意味です。
「-af atempo=0.5」の部分が音声。数字の意味は上と同じです。
そして最後に出力ファイルの名前を指定しています。
ffmpegについて更に詳しく知りたい方は公式ページのDocumentationをご覧ください。
以下テストで書き出した際のffmpegの出力(クリックすると展開します)
cd C:\HIDownload\2019_01_08\MMMM-380810-DCEBF C:\HIDownload\2019_01_08\MMMM-380810-DCEBF>ffmpeg -i A20190106_203030_203044.mp4 -vf setpts=PTS/0.5 -af atempo=0.5 A20190106_203030_203044_output.mp4 ffmpeg version 2.8.4 Copyright (c) 2000-2015 the FFmpeg developers built with gcc 5.2.0 (GCC) configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-lzma --enable-decklink --enable-zlib libavutil 54. 31.100 / 54. 31.100 libavcodec 56. 60.100 / 56. 60.100 libavformat 56. 40.101 / 56. 40.101 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 40.101 / 5. 40.101 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 2.101 / 1. 2.101 libpostproc 53. 3.100 / 53. 3.100 Invalid UE golomb code Last message repeated 6 times Input #0, h264, from 'A20190106_203030_203044.mp4': Duration: N/A, bitrate: N/A Stream #0:0: Video: h264 (Main), yuvj420p(pc, bt709), 1280x960, 25 fps, 25 tbr, 1200k tbn, 50 tbc No pixel format specified, yuvj420p for H.264 encoding chosen. Use -pix_fmt yuv420p for compatibility with outdated media players. [libx264 @ 054fb600] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2 [libx264 @ 054fb600] profile High, level 3.2 [libx264 @ 054fb600] 264 - core 148 r2638 7599210 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 Output #0, mp4, to 'A20190106_203030_203044_output.mp4': Metadata: encoder : Lavf56.40.101 Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuvj420p(pc), 1280x960, q=-1--1, 25 fps, 12800 tbn, 25 tbc Metadata: encoder : Lavc56.60.100 libx264 Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264)) Press [q] to stop, [?] for help Invalid UE golomb code Last message repeated 1 times frame= 59 fps=0.0 q=28.0 size= 156kB time=00:00:00.28 bitrate=4571.3kbits/frame= 83 fps= 75 q=28.0 size= 477kB time=00:00:01.24 bitrate=3148.6kbits/Invalid UE golomb code frame= 101 fps= 63 q=28.0 size= 739kB time=00:00:01.96 bitrate=3088.1kbits/frame= 133 fps= 62 q=28.0 size= 889kB time=00:00:03.24 bitrate=2246.5kbits/Invalid UE golomb code frame= 165 fps= 62 q=28.0 size= 1140kB time=00:00:04.52 bitrate=2065.8kbits/Invalid UE golomb code frame= 195 fps= 62 q=28.0 size= 1496kB time=00:00:05.72 bitrate=2142.8kbits/frame= 213 fps= 58 q=28.0 size= 1637kB time=00:00:06.44 bitrate=2082.9kbits/Invalid UE golomb code frame= 245 fps= 56 q=28.0 size= 2016kB time=00:00:07.72 bitrate=2139.2kbits/Invalid UE golomb code Last message repeated 1 times frame= 285 fps= 59 q=28.0 size= 2182kB time=00:00:09.32 bitrate=1918.3kbits/frame= 313 fps= 58 q=28.0 size= 2586kB time=00:00:10.44 bitrate=2029.1kbits/Invalid UE golomb code Last message repeated 1 times frame= 337 fps= 56 q=28.0 size= 2863kB time=00:00:11.40 bitrate=2057.4kbits/frame= 355 fps= 55 q=28.0 size= 3189kB time=00:00:12.12 bitrate=2155.5kbits/Invalid UE golomb code Last message repeated 1 times frame= 379 fps= 54 q=28.0 size= 3520kB time=00:00:13.08 bitrate=2204.3kbits/frame= 407 fps= 54 q=28.0 size= 3791kB time=00:00:14.20 bitrate=2187.0kbits/frame= 407 fps= 50 q=-1.0 Lsize= 4119kB time=00:00:16.20 bitrate=2083.1kbits/s dup=203 drop=0 video:4114kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.129582% [libx264 @ 054fb600] frame I:2 Avg QP:18.94 size:165622 [libx264 @ 054fb600] frame P:149 Avg QP:21.63 size: 23618 [libx264 @ 054fb600] frame B:256 Avg QP:26.12 size: 1413 [libx264 @ 054fb600] consecutive B-frames: 14.7% 1.0% 9.6% 74.7% [libx264 @ 054fb600] mb I I16..4: 6.7% 31.0% 62.3% [libx264 @ 054fb600] mb P I16..4: 1.9% 6.2% 3.2% P16..4: 36.4% 3.8% 2.8% 0.0% 0.0% skip:45.8% [libx264 @ 054fb600] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 26.6% 0.6% 0.1% direct: 0.4% skip:72.2% L0:63.4% L1:36.2% BI: 0.4% [libx264 @ 054fb600] 8x8 transform intra:52.6% inter:25.1% [libx264 @ 054fb600] coded y,uvDC,uvAC intra: 76.8% 60.8% 16.2% inter: 7.0% 9.4% 0.1% [libx264 @ 054fb600] i16 v,h,dc,p: 14% 13% 19% 54% [libx264 @ 054fb600] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 26% 21% 23% 5% 4% 5% 4% 6% 7% [libx264 @ 054fb600] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 31% 17% 16% 5% 7% 8% 5% 5% 6% [libx264 @ 054fb600] i8c dc,h,v,p: 29% 24% 26% 22% [libx264 @ 054fb600] Weighted P-Frames: Y:3.4% UV:2.7% [libx264 @ 054fb600] ref P L0: 79.1% 6.5% 10.4% 3.8% 0.2% [libx264 @ 054fb600] ref B L0: 85.2% 14.5% 0.3% [libx264 @ 054fb600] ref B L1: 96.0% 4.0% [libx264 @ 054fb600] kb/s:2069.82
以上、中華製監視カメラの映像を一般のプレーヤーで再生できるようにする方法でした。
はっきり言って、PCの操作になれない方にとっては難しい操作だと思います。
多少の煩わしさを甘受して安さを取るか、手軽さのために3倍ほどの価格差を受け入れて日本製にするか…。難しいところです。
リンク先にconvert.exeが見当たりません。消されてしまったのでしょうか。
どうやら改良されたコードを提案されたため、作者の方が削除してしまったようです。
改良されたコード自体は提示してあるので、visual studioあたりでビルドすれば使えますが、一般の方には難しいですね…。
リンク先の方がソフトを追加するまでの暫定措置で当サイトでを配布させていただきます。
ご利用いただいて気に入った場合、PayPalでの寄付などは「spitzner.org」へお願いします。
CONVERTツールを登録いただきありがとうございます。使ってみようと思います。
困っていた所に詳しいご解説を見つけられ助かりました。
配布も頂きありがとうございます。
SDからとりだしたH264ファイルを早速コンバーターに入れてみたのですが、
再生不可な0kbファイルが出来上がる状況に悩んでおります…
公式で謎の動画形式を変換するツールが配布されているようです。
そちらを試してみてください。
こんにちは。大変参考になりました。
私は謎のavi形式ファイルで苦戦しています。
おそらくH.265のライセンスの関係で、H.264と同様の状態だと思うのですが、解決策が見つかりません。
第三者に証拠を提示するときに、これでは困りますよね・・・
どうしても変換できない場合は、画面の動画をキャプチャして別動画に書き出すか、スマホ等で映像を撮影するしかありませんね。