「⧅ffmpeg AVCHD形式のmtsに変換する」の版間の差分

提供:yonewiki
編集の要約なし
 
(同じ利用者による、間の5版が非表示)
5行目: 5行目:




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




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


 変換した*.mtsをVLC Playerなどで音ズレがないか確認しましょう。音ズレがある場合は以下のようなコマンドで調整ができます。音ズレだけの調整ならば時間がかからない処理になりますので、大きな動画でも何回もためすのは辛くないはずです。
*動画ファイルから音声だけを抜き出す
<syntaxhighlight lang="text">
>ffmpeg -i 動画ファイル -acodec copy -vn 音声出力ファイル名.wav
</syntaxhighlight>
*動画ファイルから動画だけを抜き出す
<syntaxhighlight lang="text">
>ffmpeg -i 動画ファイル -vcodec copy -an 動画出力ファイル名.wav
</syntaxhighlight>
*音声が遅れている場合は音声ファイルの最初の部分をカットする処理をする。
<syntaxhighlight lang="text">
>ffmpeg -ss 遅れている秒数 -i 元の遅れている音声ファイル.wav -c copy 出力音声ファイル名.wav
</syntaxhighlight>
*動画が遅れている場合は動画ファイルの最初の部分をカットする処理をする。
<syntaxhighlight lang="text">
>ffmpeg -ss 遅れている秒数 -i 元の遅れている動画ファイル -v copy 出力動画ファイル名
</syntaxhighlight>
 元の遅れている動画ファイル名と出力動画ファイル名は同じ拡張子であるべきです。
 そして元の動画ファイルと遅れ調整した音声ファイルあるいは元の音声ファイルと遅れ調整した動画ファイルとをくっつけます。
<syntaxhighlight lang="text">
>ffmpeg -i OutputVideoFit.m2ts -i OutputAudioFit.wav -vcodec copy -acodec ac3 -map 0:v -map 1:a OutputFitVideoAudio.mts
</syntaxhighlight>
 のようにするとくっつけた動画ファイルが作れます。-acodec copy や -acodec pcm_dvd だとうまく結合できませんでした。なぜダメなのかは考えます。コーデック pcm_dvd はプライベート データ ストリームとして多重化されており、読み取り時に認識されない可能性があります。というエラーは発生しているようです。
 


== '''multiAVCHD''' ==
== '''multiAVCHD''' ==
60行目: 102行目:
 [https://sourceforge.net/projects/avisynth2/ https://sourceforge.net/projects/avisynth2/]
 [https://sourceforge.net/projects/avisynth2/ https://sourceforge.net/projects/avisynth2/]
*k-lite_codec_pack_mega
*k-lite_codec_pack_mega
 [https://www.codecguide.com/download_k-lite_codec_pack_mega.htm]
 [https://www.codecguide.com/download_k-lite_codec_pack_mega.htm https://www.codecguide.com/download_k-lite_codec_pack_mega.htm]




67行目: 109行目:




*左上の[Add Video Files]を選択して、表示されるダイアログで取り込みたい動画を選択します。いろいろな動画形式に対応していますが、あらかじめ*.mtsファイルをVideoCodecにlibxh264、AudioCodecにAC3を採用している動画ファイルを選ぶのがいいとおもいます。自分の環境ではmultiAVCHDにTranscodeさせた動画は音ズレが発生して使い物にならなくなっていました。あとで、生成されたAVCHDファイル構造の中にある*.mtsファイルを差し替えた方がよさそう。
*左上の[Add Video Files]を選択して、表示されるダイアログで取り込みたい動画を選択します。いろいろな動画形式に対応していますが、あらかじめ*.mtsファイルをVideoCodecにlibxh264、AudioCodecにAC3を採用している動画ファイルを選ぶのがいいとおもいます。




80行目: 122行目:


 タイトルはTitle Names 欄で指定できますが日本語を打つと文字化けするので、あらかじめ日本語対応のテキストエディタで日本語タイトルを打ち込んだものをコピペするようにするとよいです。
 タイトルはTitle Names 欄で指定できますが日本語を打つと文字化けするので、あらかじめ日本語対応のテキストエディタで日本語タイトルを打ち込んだものをコピペするようにするとよいです。
 動画に対応する音声ファイルもここで指定します。動画と同じ長さの音声ファイルである必要があります。管理人のやった感じだと、ここでは元動画から抜き出した音声ファイルを別途指定した方がうまく動くような印象でした。ffmpegコマンドで以下のようにして元の動画から音声ファイルを抜き出すとよいでしょう。あらゆる動画からwavファイルとして抜き出すのが元動画から無劣化で抽出する方法になります。
<syntaxhighlight lang="text">
ffmpeg -i 動画ファイル名 -acodec copy -vn 出力する音声ファイル名.wav
</syntaxhighlight>
 Properties画面の中腹のAudioタブのリストから元からある音声を選択して[remove]ボタンを押すことで取り除くことができ、[Add]ボタンで上記のようにして抜き出した音声ファイルを選択して追加するとよいでしょう。
 Properties画面にある[Alter detected properties]ボタンを押した画面からもfpsを設定する項目があるので、元のfpsと同じ値を入力し、ScanOrderの項目でProgressiveを選択する指定もした方がよいでしょう。




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


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




 変換設定のある画面で、Crop/Zoom、Resize、Uncrop to、Change fps、Sharpenといった設定やBitrate、Bitrate suggestions(Ref.frames、B-frames、level)、Qualityの設定ができます。Transcodeしますが、結局使わない感じで使うので設定は特に気にせず[Apply]でいいでしょう。Applyすると設定された動画はリスト中で緑色の表示になります。
 変換設定のある画面で、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が確認できます。
 
 
<syntaxhighlight lang="text">
>ffprobe [調べたい動画ファイル名]
</syntaxhighlight>




105行目: 167行目:




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


[[⧅ffmpeg]]に戻る。
[[⧅ffmpeg]]に戻る。

2024年9月5日 (木) 13:19時点における最新版

⧅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が使いこなせる日が来たら記事にするかもしれません。


 変換した*.mtsをVLC Playerなどで音ズレがないか確認しましょう。音ズレがある場合は以下のようなコマンドで調整ができます。音ズレだけの調整ならば時間がかからない処理になりますので、大きな動画でも何回もためすのは辛くないはずです。


  • 動画ファイルから音声だけを抜き出す
>ffmpeg -i 動画ファイル -acodec copy -vn 音声出力ファイル名.wav


  • 動画ファイルから動画だけを抜き出す
>ffmpeg -i 動画ファイル -vcodec copy -an 動画出力ファイル名.wav


  • 音声が遅れている場合は音声ファイルの最初の部分をカットする処理をする。
>ffmpeg -ss 遅れている秒数 -i 元の遅れている音声ファイル.wav -c copy 出力音声ファイル名.wav


  • 動画が遅れている場合は動画ファイルの最初の部分をカットする処理をする。
>ffmpeg -ss 遅れている秒数 -i 元の遅れている動画ファイル -v copy 出力動画ファイル名


 元の遅れている動画ファイル名と出力動画ファイル名は同じ拡張子であるべきです。


 そして元の動画ファイルと遅れ調整した音声ファイルあるいは元の音声ファイルと遅れ調整した動画ファイルとをくっつけます。


>ffmpeg -i OutputVideoFit.m2ts -i OutputAudioFit.wav -vcodec copy -acodec ac3 -map 0:v -map 1:a OutputFitVideoAudio.mts


 のようにするとくっつけた動画ファイルが作れます。-acodec copy や -acodec pcm_dvd だとうまく結合できませんでした。なぜダメなのかは考えます。コーデック pcm_dvd はプライベート データ ストリームとして多重化されており、読み取り時に認識されない可能性があります。というエラーは発生しているようです。

 

multiAVCHD

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


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

  • Avisynth

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

  • k-lite_codec_pack_mega

 https://www.codecguide.com/download_k-lite_codec_pack_mega.htm


使い方

  • 起動します。


  • 左上の[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にある00000.mtsファイルを後から差し替えたりすることは出来ません。差し替えた時点でフォルダ構造が破綻したことになります。生成されたファイル構造からUSBメディアにprivateフォルダがトップになるようにコピーしてトップディレクトリに置くとAVCHDメディアとして認識してくれるようになります。

 

⧅ffmpegに戻る。