雲の向こうの空

立ち上る雲の向こうの空 いかん
見上げしもののあわれとぞ思ふ

日産カーナビ MP311D-W エンコード設定

2019年06月10日 | CPU

日産のカーナビ MP311D-W では、MP3の他にMPEG4が利用できると取扱説明書にあります。ここ以外のブログ(ウエブサイト)でもエンコード方法が紹介されていますが、 PC環境を Ubunto 18.10 に変更したので、CUI で ffmpeg を利用して、h.264(MPEG4 AVC) でエンコードする場合にハマった。よって、ここにメモを残しておきます。

次のコマンドで MP311D-W で再生できる h.264(MPEG4 AVC) に変換できます。

ffmpeg -i "${INPUT_FILE}" -vcodec libx264 -profile:v baseline -level 2.1 -s 400x240 -crf 21 -refs 1 -acodec aac -strict experimental -ac 2 -ab 64k -ar 44100 -f mp4 "${OUTPUT_FILE}"

まず、転載ではありますが、MP311D-W で利用可能な規格について触れておきます。 次のサイトを参考にさせていただきましたが、いくつか追加情報があります。

表-1 映像部分
コーデック ビットレート フレームレート 最大解像度 プロファイル フレーム参照距離
MPEG4 216 kbps ~ 2.5 Mbps 15 fps、30 fps *1 400 × 240 Simple Profile Level 3 Unknown
H.264 216 kbps ~ 1.5 Mbps 15 fps、30 fps *1 400 × 240 Baseline Profile Level 2.1 1 Ref Frame(s)
表-2 音声部分
コーデック ビットレート サンプリングレート
AAC-LC 8 kbps ~ 320 kbps 16 kHz、22.05 kHz、24 kHz、32 kHz、44.1 kHz、48 kHz
表-3 ファイル
拡張子 サイズ制限
.MP4、.MKV、.m4v 1 GB未満 *2

  1. *1 30fps 以下だと任意の値を取れるかもしれない
  2. *2 1GB以上のファイルも再生できた

表が見づらいですが、話しを進めます。すべて重要なのですが、特筆すべき(ハマるところ)は、プロファイルとフレーム参照距離です。 特にオプションの "-refs" フレーム参照距離については、他のサイトでは触れられておりません。

えっ?まだわからないことがある?

次に ffmpeg の基本的な使い方が紹介されているサイトがあったので、紹介しておきます。

そこで気になるのが
-pix_fmt yuv420p
もしくは
-vf format=yuv420p
というオプションです。ちょっと気にとめておこう。

今回紹介したコマンドでは、明示的にオプションを指定しなかったけど、ちゃんと yuv420p で出力されていました。 参考までに "ffprobe" の出力を載せておきます。

ffprobe version 4.0.4-0ubuntu1 Copyright (c) 2007-2019 the FFmpeg developers
  built with gcc 8 (Ubuntu 8.2.0-7ubuntu1)
  configuration: --prefix=/usr --extra-version=0ubuntu1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
  WARNING: library configuration mismatch
  avcodec     configuration: --prefix=/usr --extra-version=0ubuntu1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared --enable-version3 --disable-doc --disable-programs --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libtesseract --enable-libvo_amrwbenc
  libavutil      56. 14.100 / 56. 14.100
  libavcodec     58. 18.100 / 58. 18.100
  libavformat    58. 12.100 / 58. 12.100
  libavdevice    58.  3.100 / 58.  3.100
  libavfilter     7. 16.100 /  7. 16.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  1.100 /  5.  1.100
  libswresample   3.  1.100 /  3.  1.100
  libpostproc    55.  1.100 / 55.  1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '4.m4v':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.12.100
  Duration: 00:04:00.07, start: 0.000000, bitrate: 302 kb/s
    Chapter #0:0: start 0.000000, end 33.992000
    Metadata:
      title           : Intro
    Chapter #0:1: start 33.992000, end 63.939000
    Metadata:
      title           : Credits
    Chapter #0:2: start 63.939000, end 229.980000
    Metadata:
      title           : Episode
    Chapter #0:3: start 229.980000, end 239.948000
    Metadata:
      title           : Preview
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 400x240 [SAR 16:15 DAR 16:9], 232 kb/s, 23.98 fps, 23.98 tbr, 11988 tbn, 47.95 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(jpn): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 64 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
    Stream #0:2(eng): Data: bin_data (text / 0x74786574), 0 kb/s
    Metadata:
      handler_name    : SubtitleHandler
えっ?もっとためになる情報が見たい?仕方ありませんねぇ。
Format                                   : MPEG-4
Format profile                           : Base Media
Codec ID                                 : isom (isom/iso2/avc1/mp41)
File size                                : 59.5 MiB
Duration                                 : 23 min 59 s
Overall bit rate                         : 347 kb/s
Writing application                      : Lavf58.12.100

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : Baseline@L2.1
Format settings                          : 2 Ref Frames
Format settings, CABAC                   : No
Format settings, ReFrames                : 2 frames
Codec ID                                 : avc1
Codec ID/Info                            : Advanced Video Coding
Duration                                 : 23 min 59 s
Bit rate                                 : 278 kb/s
Width                                    : 400 pixels
Height                                   : 240 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 23.976 (24000/1001) FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.121
Stream size                              : 47.7 MiB (80%)
Writing library                          : x264 core 152 r2854 e9a5903
Encoding settings                        : cabac=0 / ref=2 / deblock=1:1:1 / analyse=0x1:0x111 / me=hex / subme=7 / psy=1 / psy_rd=0.40:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=0 / 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=0 / weightp=0 / keyint=250 / keyint_min=23 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=crf / mbtree=1 / crf=21.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:0.60

Audio
ID                                       : 2
Format                                   : AAC
Format/Info                              : Advanced Audio Codec
Format profile                           : LC
Codec ID                                 : mp4a-40-2
Duration                                 : 23 min 59 s
Duration_LastFrame                       : -9 ms
Bit rate mode                            : Constant
Bit rate                                 : 64.4 kb/s
Channel(s)                               : 2 channels
Channel positions                        : Front: L R
Sampling rate                            : 44.1 kHz
Frame rate                               : 43.066 FPS (1024 SPF)
Compression mode                         : Lossy
Stream size                              : 11.1 MiB (19%)
Language                                 : Japanese
Default                                  : Yes
Alternate group                          : 1

えっ?もっと実用的なものがほしい?それでは、シェルコマンドを残しておきます。

これは、引数で得たファイルをエンコードして、実行ディレクトリに拡張子を ".m4v" に変更して保存するシェルスクリプトです。かなり危険なものとなっておりますので、自己責任でお願いします。

#/bin/bash

for P in "$@"; 
do
VAL1=`echo $P | awk -F/ '{print $NF}'`
VAL2=`echo $VAR1 | sed -e "s/\.[^\.]*$/\.m4v/g"`
echo -en '\e[34m'
echo -en $VAL2 
echo -e '\e[m'

#ffmpeg -y -i "${P}" -vcodec libx264 -profile:v baseline -level 2.1 -tune animation -s 400x240 -crf 22 -refs 2 -acodec aac -strict experimental -ac 2 -ab 64k -ar 44100 -f mp4 "${VAL2}"
ffmpeg -i "${P}" -vcodec libx264 -profile:v baseline -level 2.1 -s 400x240 -crf 21 -refs 1 -acodec aac -strict experimental -ac 2 -ab 64k -ar 44100 -preset veryslow -f mp4 "hoge-${VAL2}"

done



最新の画像もっと見る

コメントを投稿