中華製の監視カメラが生成する謎のh264形式動画を一般のプレイヤーで再生する方法


投稿日:2019年4月11日
  • 0
  • 0



我が家では「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.mp4input.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倍ほどの価格差を受け入れて日本製にするか…。難しいところです。


現在のページを共有する



現在のページに関連する記事

中華製の監視カメラが生成する謎のh264形式動画を一般のプレイヤーで再生する方法 GOM Playerでコーデックが原因で動画が再生できない場合の対処法
中華製の監視カメラが生成する謎のh264形式動画を一般のプレイヤーで再生する方法 コピペから脱出!iptablesの仕組みを理解して環境に合わせた設定をしよう
中華製の監視カメラが生成する謎のh264形式動画を一般のプレイヤーで再生する方法 WordPressのテンプレートタグを使ってコメントフォームをカスタマイズする方法
中華製の監視カメラが生成する謎のh264形式動画を一般のプレイヤーで再生する方法 iptablesをシェルスクリプトで設定していて動作が遅い場合の対処法
中華製の監視カメラが生成する謎のh264形式動画を一般のプレイヤーで再生する方法 メールサーバが「451 Local Error」を返した際の対処法
中華製の監視カメラが生成する謎のh264形式動画を一般のプレイヤーで再生する方法 GMO VPSを契約してWordPressを安定動作させるまでのサーバ設定方法
中華製の監視カメラが生成する謎のh264形式動画を一般のプレイヤーで再生する方法 yumコマンドで外部リポジトリを指定して、最新のPHPにバージョンアップ

おすすめの記事

最新のXAMPPをインストールし、安全・高速に運用する方法

最新のXAMPPをインストールし、安全・高速に運用する方法

DNS Amp攻撃の解説と、踏み台にされないためのBIND DNSの設定

DNS Amp攻撃の解説と、踏み台にされないためのBIND DNSの設定

Linuxでサーバを構築するに当たって必要になる基礎知識

Linuxでサーバを構築するに当たって必要になる基礎知識

初めてでも理解できるようになる「Firefox機能拡張の開発」

初めてでも理解できるようになる「Firefox機能拡張の開発」

PukiWikiで5段階評価を付けるプラグインを作成しました

PukiWikiで5段階評価を付けるプラグインを作成しました

「アマレコTV」でWindows 10のPC画面に表示されている動画を撮影する方法

「アマレコTV」でWindows 10のPC画面に表示されている動画を撮…

iptablesで設定したパケットフィルタリングが正しく動作しているかテスト

iptablesで設定したパケットフィルタリングが正しく動作してい…

Google Feed APIの代替手段としてjQueryだけでRSSを表示する方法

Google Feed APIの代替手段としてjQueryだけでRSSを表示する方法


いただいたコメントなど

  1. アツシ のコメント:

    リンク先にconvert.exeが見当たりません。消されてしまったのでしょうか。

    • oxy のコメント:

      どうやら改良されたコードを提案されたため、作者の方が削除してしまったようです。
      改良されたコード自体は提示してあるので、visual studioあたりでビルドすれば使えますが、一般の方には難しいですね…。
      リンク先の方がソフトを追加するまでの暫定措置で当サイトでを配布させていただきます。
      ご利用いただいて気に入った場合、PayPalでの寄付などは「spitzner.org」へお願いします。

  2. アツシ のコメント:

    CONVERTツールを登録いただきありがとうございます。使ってみようと思います。

  3. パンプキンパイ のコメント:

    困っていた所に詳しいご解説を見つけられ助かりました。
    配布も頂きありがとうございます。

    SDからとりだしたH264ファイルを早速コンバーターに入れてみたのですが、
    再生不可な0kbファイルが出来上がる状況に悩んでおります…

    • oxy のコメント:

      公式で謎の動画形式を変換するツールが配布されているようです。
      そちらを試してみてください。

パンプキンパイ へ返信する コメントをキャンセル

コメントは認証制のため、すぐには反映されません。

プログラミングに関する質問は「日本語でプログラミングの悩みを解決するQ&Aサイト sukegra」をご利用ください。