⧅ffmpeg AVCHD形式のmtsに変換する

提供:yonewiki
2024年9月5日 (木) 01:16時点におけるYo-net (トーク | 投稿記録)による版 (→‎使い方)

⧅ffmpegに戻る。

概要

 AVCHDはMP4と同じコーデック(Codec)で、H264を採用しています。ffmpegの-c:vまたは-vcodecのオプションでlibx264を指定することが多く、-c:aまたは-acodecオプションではac3を指定するのが普通です。


 AVCHDの拡張子は*.mp4ではなく、*.mtsあるいは*.m2tsが使われます。*.mtsや*.m2tsだけでAVCHDであると認識して動画を再生するのはPCならではの動作でVLC Media Playerなどでは直接再生が出来ます。ほとんどの民生機器(ビデオカメラ、動画撮影機能付きデジタルカメラ、ムービープレイヤー)ではAVCHD形式でオーサリングされた状態のファイル・ディレクトリ構造でもっとAVCHD形式であることを認識し、オーサリングされた構造から様々な機能な機能を提供します(字幕、タイトル、チャプター)。


 つまりAVCHDオーサリングツールがなければ正式なAVCHD形式にはできないということを意味していますが、まずは動画形式を変換する必要の無い*.mts形式の動画ファイルを作っておくことはAVCHD形式のBlu-rayやDVD、USBメモリ、SD-Cardを生成するための第1歩になります。


 https://archived.regza.com/regza/bd_dvd/cs/info/avchd/index.htmlにあるように様々なAVCHDの方式の違いによって読み込める動画が異なるという機器による差異もあるので、一筋縄にはいかないということがありそうですが、標準的なAVCHDが作れれば、その差に関係なく読み込ませることが可能であるかもしれません。やってみないとわかりません。自分でレコーダが対応しているAVCHD USBディスクを作るのが管理人の目的でもありました。


 なんらかの動画ファイルがあるとして、*.mts形式を生成するには以下のようなffmpegコマンドを使います。例えばDVDメディアから*.vobファイルを抽出し、これをAVCHD形式に変換するには以下のようなコマンドを使います。


>ffmpeg -ss 90 -to 00:11:00 -i "InputMain.vob" -c:v libx264 -acodec ac3 -b:v 8000k -r 29.97 -deinterlace "OutputMain.mts"


 のようにすることで変換ができます。それぞれのオプションの意味は以下のとおりです。


-ss : 動画の開始時間[秒]


-to : 動画の終了時間[hh:mm:ss]


-i : 入力動画ファイル名


-c:v または -vcodec : コーデック名を指定します。主にlibx264を指定します。


-c:a または -acodec : オーディオコーデック名を指定します。主にac3を指定します。mp4の場合はaacでしたね。


-b:v : ビデオビットレートを指定します。例では8000kbpsを指定しています。DVDではこれぐらいの高ビットレートで記録されています。画質を落とさないようにするにはffprobeコマンドで入力動画の動画情報を確認して同じようなビットレートを指定するとよいでしょう。


-r : フレームレートを指定します。例ではNTSC規格でよく使われている29.97fpsを指定しています。


-deinterlace : インターレースにしない設定です。プログレッシブ走査というものを採用しようとするものです。インターレースは走査をフレーム毎に奇数だけ偶数だけを行うもので縞模様が気になることが発生する方式です。画質に拘らないときに使うモノです。


 変換した*.mtsファイルだけではあまりやくにたたないので、オーサリングツールを使うことになるでしょう。管理人もまだ使いこなせていませんがmultiAVCHDというオーサリングツールが無料で優秀っぽいです。multiAVCHDが使いこなせる日が来たら記事にするかもしれません。


multiAVCHD

 AVCHDオーサリングの無料版です。入手先はhttps://www.videohelp.com/software/multiAVCHDです。


 AVCHD単独だけでは動作しません。以下の二つのフリーソフトウェアもインストールが必要です。

  • Avisynth

 https://sourceforge.net/projects/avisynth2/

  • k-lite_codec_pack_mega

 [1]


使い方

  • 起動します。


  • 左上の[Add Video Files]を選択して、表示されるダイアログで取り込みたい動画を選択します。いろいろな動画形式に対応していますが、あらかじめ*.mtsファイルをVideoCodecにlibxh264、AudioCodecにAC3を採用している動画ファイルを選ぶのがいいとおもいます。


 メディアタブに読み込んだファイルがリストボックスの中に表示され選択できるようになります。


  • メディアタブから読み込んだファイルを選択し、右側にあるボタン群の中からPropertiesを選択します。


  • Propertiesダイアログが表示されます。ここでタイトルを指定することができます。


 タイトルはTitle Names 欄で指定できますが日本語を打つと文字化けするので、あらかじめ日本語対応のテキストエディタで日本語タイトルを打ち込んだものをコピペするようにするとよいです。


 動画に対応する音声ファイルもここで指定します。動画と同じ長さの音声ファイルである必要があります。管理人のやった感じだと、ここでは元動画から抜き出した音声ファイルを別途指定した方がうまく動くような印象でした。ffmpegコマンドで以下のようにして元の動画から音声ファイルを抜き出すとよいでしょう。あらゆる動画からwavファイルとして抜き出すのが元動画から無劣化で抽出する方法になります。


ffmpeg -i 動画ファイル名 -acodec copy -vn 出力する音声ファイル名.wav


 Properties画面の中腹のAudioタブのリストから元からある音声を選択して[remove]ボタンを押すことで取り除くことができ、[Add]ボタンで上記のようにして抜き出した音声ファイルを選択して追加するとよいでしょう。


 Properties画面にある[Alter detected properties]ボタンを押した画面からもfpsを設定する項目があるので、元のfpsと同じ値を入力し、ScanOrderの項目でProgressiveを選択する指定もした方がよいでしょう。


  • 最低限の構成のオーサリングをするにはそれ以外の設定はしなくていいと思いますので、ここではほとんどの作業を省略します。メニュー画面やサムネイルなどを構築したい人はもっとmultiAVCHDの使い方について掘り下げて学習するとよいでしょう。


 OKボタンを押して閉じます。中腹の右側にOKボタンがあります。変な構成のダイアログボックスです。Transcode/Preview/OK/Cancelと上から並んでいます。


  • メインウィンドウからTranscodeボタンを押します。読み込んだすべての動画の変換処理の手前の処理をするためのダイアログが開きます。PropertiesからもTranscodeしていくことができるようです。Propertiesダイアログが開いてその中でTranscode設定の画面が立ち上がります。


 変換設定のある画面で、Crop/Zoom、Resize、Uncrop to、Change fps、Sharpenといった設定やBitrate、Bitrate suggestions(Ref.frames、B-frames、level)、Qualityの設定ができます。Transcodeしますが、結局使わない感じで使うので設定は特に気にせず[Apply]でいいでしょう。Applyすると設定された動画はリスト中で緑色の表示になります。Change fpsに元のfpsと同じ数値を設定するべきでしょう。元がDVDの動画なら29.97fpsが多いですね。ffmpegをインストールしていれば、ffprobeコマンドで元の動画のfpsが確認できます。


>ffprobe [調べたい動画ファイル名]


  • 出力先フォルダを選択します。メインウィンドウの左下あたりのDistinatio Path欄の横の[...]となっているボタンから出力先フォルダを選びます。任意のフォルダの中にprivateというフォルダをつくって、そのフォルダを選択すると良いと思います。選択したフォルダにAVCHDというフォルダを作るという設定が自動で処理されます。


 つまり、任意のフォルダ\private\AVCHDというフォルダが出力先として登録されます。


  • メインウィンドウの[start]ボタンを押すと変換とオーソライズが開始します。


 表示されたダイアログで、AVCHD for Solid Media[TV/Commander NTSC/60Hz]ボタンを押して生成します。


生成処理がおわったら、出力先フォルダの中身を確認します。任意のフォルダ\private\AVCHDというフォルダではなく、AVCHD-20241101 230000みたいなフォルダに生成されていた場合はAVCHDの中身を消すか退避するかして、AVCHD-20241101 230000をリネームしてAVCHDという名前になるようにします。任意のフォルダ\private\AVCHD\BDMV\STREAMにある*.mtsファイルを後から差し替えたりすることは出来ません。差し替えた時点でフォルダ構造が破綻したことになります。生成されたファイル構造からUSBメディアにprivateフォルダがトップになるようにコピーしてトップディレクトリに置くとAVCHDメディアとして認識してくれるようになります。

 

⧅ffmpegに戻る。