- 技術 💻
MTSをMP4に変換する方法|MTSファイルとは・開き方と画質の実測
結論
MTSファイルは、ビデオカメラが AVCHD 方式で記録した動画(H.264 の映像と AC-3 などの音声を MPEG-2 TS に入れたもの)です。MP4 にするときは、映像はそのままコピーし、音声だけ AAC にする方法が速く、画質も変わりません。横じまが気になるときだけ、インターレースを解除して再エンコードします。
この記事でわかること
- MTS・AVCHD・M2TS の関係と、192バイトのパケットの中身
- 再エンコードなしと再エンコードの時間・サイズ・画質(SSIM・PSNR)の実測
- 音が出ない・横じま・分割ファイル・エラーの原因と直し方
ビデオカメラから取り込んだ「00000.MTS」が開けない、スマホや Web に載せられない、というときに困るのは、ほとんどが音声の形式(AC-3)と入れ物の形式(MPEG-2 TS)です。映像の H.264 は MP4 でもそのまま使えます。
flowchart TD
M[00000.MTS<br>H.264 + AC-3] --> Q{横じまを<br>消したい?}
Q -->|いいえ| R[映像はコピー<br>音声だけ AAC]
Q -->|はい| E[インターレース解除<br>+ 再エンコード]
R --> P1[MP4 数秒で完了<br>画質は同じ]
E --> P2[MP4 実時間の約1.4倍<br>サイズは約3分の1]
よく調べられることの答えを先にまとめます。
| 知りたいこと | 答え | 詳しい節 |
|---|---|---|
| MTSファイルとは | AVCHD のビデオカメラが記録する動画。中身は MPEG-2 TS | MTSファイルとは |
| MTS ファイルの開き方 | AC-3 に対応した再生ソフト(VLC など)で開く | MTSファイルの開き方 |
| MTS MP4 変換(画質を落とさない) | 映像はコピー、音声は AAC。20秒で0.77秒、SSIM 1.000 | ffmpegでMTSをMP4に変換する |
| 変換したら音が出ない | AC-3 のまま MP4 にしている。AAC に変える | 音声AC-3をAACにする理由 |
| 横じま(櫛のようなギザギザ)が出る | インターレースの映像。bwdif などで解除して再エンコード | インターレースの解除 |
| 00000.MTS・00001.MTS に分かれた | 約2GBごとの自動分割。つなげてから変換する | 分割されたMTSを結合する |
| AVCHD と MP4 の違い | 映像は同じ H.264。違うのは入れ物と音声とフォルダー構成 | MTSファイルとは |
| 無料ソフトで変換したい | HandBrake(Windows・Mac・Linux)か FFmpeg | 無料ソフトとWindows・Macでの扱い |
確認環境:Ubuntu 24.04.5 LTS(2 vCPU)の上で、FFmpeg 6.1.1(6.1.1-3ubuntu5、libx264 core 164 r3108)を使いました。テスト用の MTS は外部の動画を使わず、FFmpeg の testsrc2(動く図形)に粒状のノイズを足した 59.94p の映像をインターレース(1080/60i、トップフィールド先行)にし、H.264 High(-preset veryfast・平均17Mbps)と AC-3 256kbps で、192バイトのパケットの MPEG-2 TS(M2TS 形式)として作った20秒の「00000.MTS」です。これを再エンコードなし・再エンコード(CRF 18・23・28、bwdif・yadif)で MP4 にして、処理時間・サイズ・SSIM・PSNR を測り、MP4 が再生できるか(映像と音声のデコード量)を Playwright 1.63.0 同梱の Chromium 153.0.8010.12 で、127.0.0.1 の自分のサーバーから開いて確かめました。分割ファイルはカメラの約2GBごとの分割を、20秒の MTS をバイト位置で2つに分けて再現しています。Windows・Mac・カメラ(ソニー)の扱いは Microsoft・Apple・ソニーの公式ヘルプ、AVCHD の規格は AVCHD の公式サイト、HandBrake・VLC・FFmpeg は各公式ドキュメントで確かめた範囲だけを書いています。Windows・Mac の画面は手元で動かしていません。図は mermaid 11.16.0 で描画を確かめています(確認日 2026年10月29日)。
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「MTSをMP4に変換する方法|MTSファイルとは・開き方と画質の実測」
MTSファイルとは(AVCHDの動画ファイル)
この節では、MTSファイルが何で、AVCHD・M2TS・MP4 とどう違うのかが分かります。
MTSファイルは、AVCHD(エーブイシーエイチディー)という規格のビデオカメラが記録する動画ファイルです。 AVCHD は2006年にソニーとパナソニックが発表した、ハイビジョンのビデオカメラ向けの記録の決まりで、AVCHD の公式サイトは、映像を MPEG-4 AVC/H.264、音声を Dolby Digital(AC-3)か Linear PCM、ファイルの形式を MPEG-2 Transport Stream と定めています。
| 項目 | AVCHD(1080/60i など) | AVCHD Progressive |
|---|---|---|
| 映像 | MPEG-4 AVC/H.264 | MPEG-4 AVC/H.264 |
| 映像信号 | 1080/60i・1080/50i・1080/24p・720/60p など | 1080/60p・1080/50p |
| 解像度 | 1920×1080・1440×1080・1280×720 など | 1920×1080・1440×1080 |
| 音声 | Dolby Digital(AC-3)64〜640kbps、または Linear PCM | (公式の表に記載なし) |
| 入れ物 | MPEG-2 Transport Stream | MPEG-2 Transport Stream |
| ビットレート | 24Mbps 以下(DVD は18Mbps 以下) | 28Mbps 以下 |
出典は AVCHD の公式サイトのフォーマットの表です(2026年10月29日時点)。
MTS と M2TS の違い
MTS と M2TS は、中身が同じ形式(192バイトのパケットの MPEG-2 TS)で、拡張子が違うだけです。 カメラの記録メディアの中では「.MTS」、Blu-ray やパソコンのソフトに取り込んだあとは「.m2ts」になることが多い、という違いです。Microsoft は Windows Media Player の対応形式のページで、.m2ts を「Blu-ray Disc Audio-Video (BDAV) MPEG-2 トランスポート ストリーム (M2TS) コンテナー ファイル形式で使用されるファイル名拡張子」と説明し、AVCHD でも使われるとしています。手元の FFmpeg でも、拡張子に関係なく形式は mpegts と判定されました。FFmpeg の MPEG-TS の出力の説明にも「Common extensions: ts,m2t,m2ts,mts.」と並んでいます。
MP4 との違い
MTS(AVCHD)
入れ物は MPEG-2 TS。放送と同じく、途中から読んでも再生できる作り
音声は AC-3 か Linear PCM
PRIVATE フォルダーの下に、管理用のファイルと一緒に保存される
MP4
入れ物は MPEG-4 Part 14。1つのファイルで完結する
音声は AAC が一般的
スマホ・ブラウザ・SNS・動画編集ソフトで扱いやすい
映像そのもの(H.264)は、MTS でも MP4 でも同じものを入れられます。 そのため、映像は作り直さずに入れ物だけを替える「再エンコードなしの変換(remux)」ができ、画質はまったく変わりません。これは、あとの節で SSIM 1.000000 として確かめます。
カメラの中のフォルダー構成
ソニーのテレビの取扱説明書は、AVCHD の動画ファイルの場所を /PRIVATE/AVCHD/BDMV/STREAM/00000.MTS と案内しています。STREAM フォルダーに動画の本体(.MTS)があり、同じ BDMV フォルダーの中に、再生の順番や撮影の情報を持つ管理用のファイルが入ります。
PRIVATE/
└── AVCHD/
└── BDMV/
├── STREAM/
│ ├── 00000.MTS ← 動画の本体
│ └── 00001.MTS
└── (管理用のファイル・フォルダー)
カメラのソフトや iMovie は、このフォルダー構成ごと読み込む前提で作られています。カードからパソコンへ控えを取るときは、STREAM の .MTS だけを抜き出さず、PRIVATE フォルダーごとコピーしておくと、あとでどのソフトでも読み込み直せます。
MTSファイルの中身をffprobeで読む(192バイトのMPEG-TS)
この節では、手元の MTS が何でできているかを ffprobe で確かめる方法と、表示の読み方が分かります。
変換の前に ffprobe で映像・音声の形式を見ておくと、どの変換が要るかが決まります。 テスト用に作った 00000.MTS の結果です。
$ ffprobe -hide_banner 00000.MTS
Input #0, mpegts, from '00000.MTS':
Duration: 00:00:20.00, start: 1.461400, bitrate: 18712 kb/s
Program 1
Metadata:
service_name : Service01
service_provider: FFmpeg
Stream #0:0[0x1011]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(top first), 1920x1080 [SAR 1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn
Stream #0:1[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 256 kb/s
| 表示 | 意味 | 変換で気にすること |
|---|---|---|
mpegts |
入れ物が MPEG-2 TS | MP4 に入れ替える |
start: 1.461400 |
時刻が0秒から始まっていない(TS では普通) | MP4 にすると0秒からになる |
h264 (High) |
映像は H.264 の High プロファイル | MP4 にそのまま入る |
top first |
インターレース(トップフィールド先行) | 横じまを消すなら解除が要る |
29.97 fps |
1秒に約30枚(1枚に2フィールド) | 60i は「29.97 fps・top first」と出る |
ac3 ... 256 kb/s |
音声は AC-3(Dolby Digital) | MP4 では AAC にする |
[SAR 1:1 DAR 16:9] |
画素は正方形、画面は16:9 | 1440×1080 なら SAR 4:3 になる |
「1080/60i」のカメラの映像は、ffprobe では 29.97 fps・top first と表示されます。1秒に約60枚の「フィールド(半分の行だけの絵)」を、2枚ずつ組み合わせて約30枚のフレームとして保存しているためです。必要な項目だけを見るときは次のように書きます。
$ ffprobe -v error -show_entries stream=codec_name,profile,width,height,field_order,avg_frame_rate,sample_rate,channels -of compact=p=0 00000.MTS
codec_name=h264|profile=High|width=1920|height=1080|field_order=tt|avg_frame_rate=30000/1001
codec_name=ac3|profile=unknown|sample_rate=48000|channels=2|avg_frame_rate=0/0
field_order=tt はトップフィールド先行のインターレース、progressive ならプログレッシブ(横じまが出ない映像)です。
192バイトのパケットを od で見る
MPEG-2 TS は188バイトのパケットが並んだ形式です。MTS(M2TS)は、その前に4バイトの時刻情報を付けた192バイトずつになっています。先頭を16進数で表示しました。
$ od -A d -t x1 -N 16 00000.MTS
0000000 0e bf 46 22 47 40 11 10 00 42 f0 25 00 01 c1 00
$ od -A d -t x1 -j 192 -N 8 00000.MTS
0000192 03 2c 2e 48 47 40 00 10
$ od -A d -t x1 -N 8 plain.ts # 同じ内容を普通の .ts で書き出したもの
0000000 47 40 11 10 00 42 f0 25
$ od -A d -t x1 -j 188 -N 4 plain.ts
0000188 47 40 00 10
TS パケットの始まりの印 47 が、MTS では5バイト目(0から数えて4)と196バイト目に、普通の .ts では0バイト目と188バイト目にあります。MTS の前の4バイト(0e bf 46 22)が、M2TS で追加される時刻情報です。テスト用の MTS は、FFmpeg の -mpegts_m2ts_mode 1 でこの形にしました。バイナリの読み方は、関連記事「バイナリエディタとは|使い方・おすすめとxxdで読む実例・戻し方」で扱っています。
MTSファイルの開き方(Windows・Mac・スマホ)
この節では、MTS ファイルを再生する方法を、各社の公式ヘルプで確かめた範囲で分かります。
MTS を開くには、MPEG-2 TS の入れ物と、H.264 の映像・AC-3 の音声の3つに対応したソフトが要ります。 どれか1つでも対応していないと「開けない」「映像だけ出て音が出ない」になります。
| 環境 | 公式の情報で分かること | 出典 |
|---|---|---|
| Windows Media Player 12 | 対応形式に .m2ts(BDAV MPEG-2 TS。AVCHD で使われる)が載っている。.mts という拡張子は個別には書かれていない | Microsoft サポート |
| Windows(全般) | インターネットで見つけた無料のコーデック パックを入れるときは注意が要る | Microsoft サポート(コーデックの FAQ) |
| Clipchamp | 受け付ける入れ物の一覧(MP4・MOV・WEBM・AVI・WMV・VOB・MKV など)に MTS・M2TS は載っていない | Microsoft サポート |
| Mac(QuickTime Player など) | 開けないときは macOS とアプリを更新し、Finder で command+I を押して「種類」を確かめ、その形式に対応したアプリを探す | Apple サポート |
| Mac(iMovie) | iMovie 対応のカメラの一覧に、フォーマットが AVCHD のカメラが多数載っている。「読み込む」ウインドウのサイドバーの「カメラ」から読み込む | Apple サポート |
| VLC(Windows・Mac・Android・iOS) | 入力形式に MPEG の TS、再生できる形式に H.264 と AC3(A/52)が載っている | VideoLAN |
Apple の QuickTime Player のユーザガイドには、開けるファイル形式の一覧は載っていません(2026年10月29日時点)。Mac で MTS が開けないときは、上の Apple の案内どおり、対応したアプリを使うか、MP4 に変換します。
Windows で .MTS をダブルクリックで開けるようにする
Microsoft の案内では、Windows 11・10 で拡張子ごとに既定のアプリを決めるには、「設定」の「アプリ」→「既定のアプリ」を開き、検索欄に拡張子(ここでは .mts)を入れて、表示された結果からアプリを選びます。.m2ts も同じように設定します。
カメラのメーカーのソフトで取り込む
ソニーの PlayMemories Home の案内(Windows)には、写真は取り込めるのに AVCHD などのビデオが取り込めないときは、機器認証を行うよう書かれています。カメラのソフトを使うと、管理用のファイルも読み込まれ、撮影日ごとの整理もできます。
ブラウザで動画を表示するときの仕組みは、関連記事「HTML video・audioタグの使い方|自動再生されない原因と対処」で扱っています。
MTSをMP4に変換する方法は2種類(再エンコードなしと再エンコード)
この節では、MTS を MP4 にする2つの方法の違いと、どちらを選ぶかの目安が分かります。
MTS から MP4 への変換は、「入れ物だけを替える(再エンコードなし)」か「映像を作り直す(再エンコード)」かのどちらかです。 変換ソフトの多くは、何も設定しないと再エンコードします。
再エンコードなし(remux)
映像の H.264 をそのまま MP4 に入れ替える
20秒の動画で0.20〜0.77秒。画質は SSIM 1.000000(同じ)
サイズはほぼ同じ(4.6% 減)。横じまは残る
再エンコード
映像をいったん絵に戻し、もう一度 H.264 で圧縮する
20秒の動画で17〜59秒(2 vCPU)。画質は少し下がる
サイズを小さくできる。インターレースの解除や解像度の変更もできる
手元の結果の要点です。
「とにかく MP4 で再生したい」「画質を落としたくない」なら再エンコードなし、「容量を減らしたい」「横じまを消したい」「スマホで送れる大きさにしたい」なら再エンコードです。
ffmpegでMTSをMP4に変換するコマンド(実行結果つき)
この節では、FFmpeg で MTS を MP4 にする代表的なコマンドと、それぞれの実行結果が分かります。
まず使うのは「映像はコピー、音声だけ AAC」のコマンドです。 FFmpeg のインストールと基本の書き方は、関連記事「ffmpegの使い方|MOV→MP4変換・圧縮・切り出しを実測で解説」で扱っています。
1. 映像はコピー、音声は AAC(おすすめ)
ffmpeg -i 00000.MTS -map 0:v -map 0:a -c:v copy -c:a aac -b:a 192k -movflags +faststart 00000.mp4
-c:v copy:映像は再エンコードせずにそのまま入れる。-c:a aac -b:a 192k:音声を AAC の 192kbps にする(AC-3 のままだと再生できない環境がある。次の節)。-map 0:v -map 0:a:映像と音声をすべて入れる。字幕などのデータの流れを入れないようにする。-movflags +faststart:MP4 の目次(moov)を先頭に置き、Web で読み込みながら再生できるようにする。
$ ffprobe -v error -show_entries format=format_name,duration:stream=codec_name,codec_tag_string,field_order,avg_frame_rate -of compact=p=0 B_vcopy_aac.mp4
codec_name=h264|codec_tag_string=avc1|field_order=tt|avg_frame_rate=30000/1001
codec_name=aac|codec_tag_string=mp4a|avg_frame_rate=0/0
format_name=mov,mp4,m4a,3gp,3g2,mj2|duration=20.000000
映像は avc1(H.264)のまま、field_order=tt(インターレース)も保たれ、音声は mp4a(AAC)になりました。20秒の動画で0.77秒、46,780,416バイトが44,489,290バイトになりました。
2. すべてコピー(音声も AC-3 のまま)
ffmpeg -i 00000.MTS -map 0 -c copy 00000.mp4
いちばん速い方法(0.20秒)ですが、音声が AC-3 のまま MP4 に入ります。実行すると次の警告が出ましたが、ファイルは作られました。
[mp4 @ 0x5607d72e4000] track 1: codec frame size is not set
この MP4 は、Chromium では映像だけ再生され、音声は1バイトもデコードされませんでした(次の節)。再生する相手が決まっていないなら、音声は AAC にしておきます。
3. インターレースを解除して再エンコード(容量を減らす)
ffmpeg -i 00000.MTS -vf bwdif=mode=send_frame -c:v libx264 -preset veryfast -crf 23 -c:a aac -b:a 192k -movflags +faststart 00000.mp4
-vf bwdif=mode=send_frame:インターレースを解除し、1フレームから1フレームを作る(29.97p)。60p にするならmode=send_field。-crf 23:画質の目標。数字が小さいほど高画質・大きいファイル。HandBrake の公式ドキュメントは、x264 の 1080p で RF 20〜24 を目安に挙げています。-preset veryfast:圧縮の手間。遅い preset ほど同じ画質で小さくなるが時間がかかる。
4. 複数の MTS をまとめて MP4 にする(一括変換)
独立した3本のクリップ(00002〜00004.MTS)を、bash のループで変換しました。
for f in *.MTS; do
ffmpeg -hide_banner -loglevel error -n -i "$f" -map 0:v -map 0:a \
-c:v copy -c:a aac -b:a 192k -movflags +faststart "${f%.MTS}.mp4" && echo "OK $f"
done
OK 00002.MTS
OK 00003.MTS
OK 00004.MTS
real 0m0.805s
-n は「同じ名前の MP4 があれば上書きしない」指定です。2回目に実行すると File '00002.mp4' already exists. Exiting. と出て、元の MP4 を守ります。${f%.MTS} は、ファイル名の末尾の .MTS を取り除く bash の書き方です。ループの書き方は、関連記事「シェルスクリプトのfor・whileループ|ファイルを1行ずつ読む書き方」で扱っています。分割された 00000.MTS・00001.MTS(1回の撮影が続いているもの)は、このループで別々に変換せず、先に結合します(後の節)。
変換方法ごとの時間・サイズ・画質の実測(SSIM・PSNR)
この節では、同じ MTS を8通りに変換したときの、処理時間・ファイルサイズ・画質の数値が分かります。
再エンコードなしは画質が元と完全に同じで、再エンコードは CRF の値でサイズと画質が決まります。 元の 00000.MTS(20秒・46.8MB・18.7Mbps)を変換し、FFmpeg の ssim・psnr フィルターで元と比べました。
| 変換の方法 | 処理時間 | サイズ(元比) | SSIM(All) | PSNR(平均) |
|---|---|---|---|---|
| すべてコピー(AC-3 のまま) | 0.20秒 | 44.6MB(95%) | 1.000000 | inf(同一) |
| 映像コピー+AAC | 0.77秒 | 44.5MB(95%) | 1.000000 | inf(同一) |
| 解除なし・CRF 23 | 36.09秒 | 19.6MB(42%) | 0.970035 | 40.75dB |
| bwdif・CRF 18 | 59.28秒 | 43.3MB(93%) | 0.984254 | 44.55dB |
| bwdif・CRF 23 | 28.68秒 | 16.5MB(35%) | 0.972886 | 41.47dB |
| bwdif・CRF 28 | 17.10秒 | 6.6MB(14%) | 0.964394 | 39.03dB |
| bwdif 60p・CRF 23 | 29.91秒 | 18.5MB(40%) | 0.968810 | 40.23dB |
| yadif・CRF 23 | 26.43秒 | 16.3MB(35%) | 0.975401 | 41.53dB |
測り方の注意です。bwdif・yadif の行は、元の MTS にも同じ解除フィルターをかけたものと比べ、圧縮で失われた分だけを測っています。テスト用の映像には粒状のノイズを入れているため、実際のカメラの映像より SSIM が低めに出ます。数字は行どうしの比較に使います。
ffmpeg -i out.mp4 -i 00000.MTS -lavfi \
"[0:v]setpts=PTS-STARTPTS[a];[1:v]bwdif=mode=send_frame,setpts=PTS-STARTPTS[b];[a][b]ssim" -f null -
SSIM Y:0.974568 (15.946118) U:0.969289 (15.127106) V:0.969756 (15.193585) All:0.972886 (15.668047)
1remux は画質が変わらない
SSIM 1.000000・PSNR inf(無限大)。映像のデータを1ビットも変えていない。サイズが5%減るのは、TS の192バイトごとの見出しなどが無くなるため。
2再エンコードは時間がかかる
-preset veryfast・2 vCPU で、20秒の動画に17〜59秒。1時間の動画なら、単純計算で CRF 23 は約1時間半。
3CRF 18 は小さくならない
元の 93% の大きさ。元が 17Mbps 程度の AVCHD では、高画質の設定で作り直しても、容量はあまり減らない。
「解除なし・CRF 23」は時間が最も長いのに、横じまがそのまま残りました。理由は「インターレースの解除」の節で数値で示します。
音声AC-3をAACにする理由(変換したMP4の音が出ない)
この節では、MTS の音声 AC-3 をそのまま MP4 に入れると何が起きるかと、AAC にする理由が分かります。
AC-3 の音声を入れた MP4 は、映像は出るのに音が出ない再生環境があります。 Microsoft も Windows Media Player の対応形式のページ(.m4v の説明)で、AC3(Dolby デジタル)を「MP4 コンテナーに標準化されていない」音声と書いています。
127.0.0.1 の自分のサーバーに置いた動画を、Chromium 153 の <video> で開き、2.5秒再生したあとのデコード量を調べました。
| 開いたファイル | 結果 | 映像のデコード量 | 音声のデコード量 |
|---|---|---|---|
| clip.MTS(元のまま) | 再生できない(エラー4) | 0バイト | 0バイト |
| MP4(H.264+AC-3) | 映像だけ再生 | 6,537,936バイト | 0バイト |
| MP4(H.264+AAC) | 映像と音声を再生 | 6,425,262バイト | 66,688バイト |
| MP4(解除+再エンコード+AAC) | 映像と音声を再生 | 2,195,472バイト | 66,688バイト |
MTS をそのまま開いたときのエラーの原文です。
NotSupportedError: Failed to load because no supported source was found.
video.error: 4 PipelineStatus::DEMUXER_ERROR_COULD_NOT_OPEN: FFmpegDemuxer: open context failed
canPlayType() の答えも、AC-3 だけが空でした。
video/mp4; codecs="avc1.640028" → probably
video/mp4; codecs="avc1.640028, mp4a.40.2" → probably (AAC)
video/mp4; codecs="avc1.640028, ac-3" → (空) (AC-3)
video/mp2t → (空) (MPEG-2 TS)
空の答えは「再生できない」という意味です。 手元の Chromium では、AC-3 の MP4 は音声の再生エラーにもならず、黙って映像だけが流れました。「変換は成功したのに音が出ない」と気づきにくいのはこのためです。手元で確かめたのは Playwright 同梱の Chromium だけで、Google Chrome・Safari・スマホの各アプリでの結果は確かめていません。AAC にしておけば、手元の Chromium では映像と音声の両方が再生されました。
Linear PCM の MTS は「-c copy」で MP4 にできない
AVCHD は音声に Linear PCM も認めています。PCM 音声(FFmpeg では pcm_bluray)の MTS を作り、すべてコピーで MP4 にすると、次のエラーで止まりました。
$ ffmpeg -i lpcm.MTS -c copy L1.mp4
[mp4 @ 0x561ef8022600] Could not find tag for codec pcm_bluray in stream #1, codec not currently supported in container
[out#0/mp4 @ 0x561ef7563440] Could not write header (incorrect codec parameters ?): Invalid argument
Error opening output file L1.mp4.
Error opening output files: Invalid argument
-c:v copy -c:a aac にすると、音声が AAC になって MP4 を作れました。音声は常に -c:a aac にしておくと、AC-3 でも PCM でも同じコマンドで変換できます。 5.1ch の音声を残したいときは、AC-3 のまま残すか(HandBrake の「HQ 1080p30 Surround」は AAC ステレオと Dolby Digital の両方を入れるプリセット)、AAC の5.1ch(-ac 6)にします。
インターレースの解除(横じまを消す・bwdif と yadif)
この節では、MTS を MP4 にしたあと動くものに横じまが出る理由と、インターレースを解除する方法が分かります。
1080/60i で撮った映像は、奇数行と偶数行が1/60秒ずれた絵を1枚に重ねています。 テレビは1行おきに表示するので問題ありませんが、パソコンやスマホで1枚の絵として表示すると、動いているものの輪郭に櫛のような横じまが出ます。FFmpeg の idet フィルターで、フレームごとにインターレースかどうかを判定しました(20秒・599フレーム)。
ffmpeg -i 00000.MTS -vf idet -an -f null - 2>&1 | grep "Multi frame"
| ファイル | field_order の表示 | idet の判定(599フレーム) |
|---|---|---|
| 元の 00000.MTS | tt(インターレース) | TFF 599・Progressive 0 |
| remux した MP4 | tt(インターレース) | TFF 599・Progressive 0 |
| 解除なしで再エンコード(CRF 23) | progressive | TFF 599・Progressive 0 |
| bwdif で解除して再エンコード | progressive | TFF 0・Progressive 599 |
解除せずに再エンコードすると、ファイルの印は「progressive」になるのに、絵には横じまが焼き付いたまま残ります。 再生ソフトはプログレッシブとして扱うので、自動の解除も働かなくなります。再エンコードするなら、解除のフィルターを必ず入れます。一方、remux した MP4 は「tt」の印が残るため、対応した再生ソフトは自分で解除しながら表示できます。
bwdif と yadif の違い
| 指定 | 出てくる映像 | 手元の結果(CRF 23) |
|---|---|---|
bwdif=mode=send_frame |
29.97p(1フレーム→1フレーム) | 28.68秒・16.5MB |
bwdif(既定は send_field) |
59.94p(1フィールド→1フレーム)。動きがなめらか | 29.91秒・18.5MB |
yadif=mode=send_frame |
29.97p | 26.43秒・16.3MB |
FFmpeg 6.1.1 の ffmpeg -h filter=bwdif では、mode の既定値は send_field(1フィールドごとに1フレーム)でした。何も指定しないと 60p になり、フレーム数が2倍になります。 HandBrake の公式ドキュメントは、bwdif を「yadif をもとに、w3fdif と3次補間を使う動き適応型の解除」と説明しています。どちらも横じまは消え、手元の数値では大きな差はありませんでした。スポーツや子どもの運動会など動きの速い映像は、60p にすると動きのなめらかさを残せます。
分割された00000.MTS・00001.MTSを結合する方法
この節では、1回の撮影が複数の MTS に分かれる理由と、つなぎ目を壊さずに1本の MP4 にする方法が分かります。
AVCHD のカメラは、1本の動画が約2GBに達すると、撮影を止めずに新しいファイル(00001.MTS)を作ります。 ソニーの α6400 のヘルプガイドは「1つの動画ファイルは約2GBで制限されます」「連続記録中のファイルサイズが約2GBになると、自動的に新しいファイルが作成されます」と書いています。平均17Mbps なら、約2GB は計算上15〜16分ほどです。
分割された2つのファイルは、1本のストリームの途中で切れているだけです。20秒の MTS を192バイトの区切りで半分に分け(23,390,208バイトずつ)、4つの方法で試しました。
| 方法 | 結果 | フレーム数・長さ |
|---|---|---|
| 2つ目だけを MP4 に変換 | 先頭が壊れる(下のエラー) | 301フレーム・10.208秒 |
cat でつなぐ |
元のファイルと1バイトも違わない(cmp で一致) | 599フレーム |
concat プロトコル(concat:A|B) |
エラーなし | 599フレーム・20.000秒 |
| concat デマルチプレクサー(リストファイル) | つなぎ目でデコードエラー | 599フレーム・20.123秒 |
2つ目のファイル(00001.MTS)だけを開くと、次のエラーが出ました。前のファイルにある H.264 の設定(PPS)を参照しているのに、その設定がこのファイルには無いためです。
[h264 @ 0x5640f8ed79c0] non-existing PPS 0 referenced
Last message repeated 1 times
[h264 @ 0x5640f8ed79c0] decode_slice_header error
[h264 @ 0x5640f8ed79c0] no frame!
つなぐときは、ファイルを番号順に「1本のバイト列」として読ませるのが確実です。 FFmpeg の concat プロトコルは、公式ドキュメントで「複数の資源を1つの資源のように順に読む(Physical concatenation protocol)」と説明されています。
ffmpeg -i "concat:00000.MTS|00001.MTS" -map 0:v -map 0:a -c:v copy -c:a aac -b:a 192k -movflags +faststart all.mp4
| は多くのシェルで特別な意味を持つため、全体を引用符で囲みます。ファイルを先に1つにまとめる方法もあります。Linux・Mac は cat、Windows のコマンドプロンプトは Microsoft Learn にある copy /b(バイナリとして結合)です。
cat 00000.MTS 00001.MTS > all.MTS # Linux・Mac
cmp all.MTS original.MTS && echo identical # 分ける前の MTS と比べた
identical
copy /b 00000.MTS+00001.MTS all.MTS
concat デマルチプレクサー(-f concat -i list.txt)は、ファイルごとに別の動画として読み、時刻をつなぎ直します。分割された MTS に使うと、つなぎ目で error while decoding MB 5 16, bytestream -8 が出て、長さが0.123秒延びました。concat デマルチプレクサーは、別々に撮った独立したクリップをつなぐときに使います。
分割ファイルの扱い
別々に変換すると、2本目の先頭が壊れる(手元では PPS のエラー)
カードからの取り込み
カメラのソフトや iMovie はフォルダー構成ごと読み込む前提
拡張子
名前を変えたファイルを ffprobe で見ると format_name=mpegts のまま
HandBrake の公式ドキュメントは、HandBrake が「複数のクリップを1つにまとめる」ことはしないと書き、AVCHD で1本のストリームが複数のファイルにまたがる場合は読み込みが不安定なことがある、としています。HandBrake で変換するときも、先に1本にまとめておきます。
1440×1080のMTSが横に伸びる・縮むとき
この節では、1440×1080 で記録された MTS の縦横比と、MP4 にしたときの扱いが分かります。
AVCHD には 1440×1080 の記録があり、横長の画素(SAR 4:3)で 16:9 の画面として表示します。 1440×1080・SAR 4:3 の MTS を作り、変換の前後を見ました。
00004.MTS: width=1440|height=1080|sample_aspect_ratio=4:3|display_aspect_ratio=16:9
00004.mp4: width=1440|height=1080|sample_aspect_ratio=4:3|display_aspect_ratio=16:9 (映像コピー)
00004_sq.mp4: width=1920|height=1080|sample_aspect_ratio=1:1|display_aspect_ratio=16:9 (1920×1080 に作り直し)
映像をコピーした MP4 にも SAR 4:3 の情報は残りました。ただし、この情報を読まないソフトやサービスでは、1440×1080 の正方形の画素として表示され、横が縮んで見えます。どこでも同じ見え方にしたいときは、次のように 1920×1080 の正方形の画素に作り直します。
ffmpeg -i 00004.MTS -vf "bwdif=mode=send_frame,scale=1920:1080,setsar=1" -c:v libx264 -preset veryfast -crf 20 -c:a aac -b:a 192k 00004_sq.mp4
インターレースの映像なら、解除(bwdif)を拡大(scale)より先に書きます。拡大してから解除すると、行の並びが崩れて解除がうまく働きません。
無料ソフトとWindows・Macでの扱い(HandBrake・VLC)
この節では、コマンドを使わずに MTS を MP4 にする無料ソフトと、公式ドキュメントで確かめた設定の目安が分かります。
画面で操作したいなら、HandBrake が Windows・Mac・Linux のどれでも使えます。 HandBrake の公式ドキュメントは、HandBrake を「Linux・Mac・Windows で使えるオープンソースの動画変換ソフト」と説明し、開ける形式に MTS・M2TS・MPEG-TS を挙げています。
| HandBrake のプリセット | 中身(公式ドキュメント) | 向いている場面 |
|---|---|---|
| Fast 1080p30 | MP4・H.264・AAC ステレオ。標準の画質・速い | まず MP4 にしたい |
| HQ 1080p30 Surround | MP4・H.264・AAC ステレオ+Dolby Digital(AC-3)。高画質・遅い | 5.1ch の音声を残したい |
| Creator 1080p60 | MP4・H.264・AAC ステレオ。高画質。動画サイト向け | 60p で残したい |
HandBrake は、公式ドキュメントで「動画変換(トランスコード)ソフト」と説明されているとおり、映像を作り直して MP4 にします。 映像を作り直さずに入れ物だけを替えて、画質をまったく変えずに MP4 にしたいときは、FFmpeg の -c:v copy を使います。HandBrake の公式ドキュメントによると、AVCHD の再生リストには完全には対応しておらず、STREAM フォルダーの中の個々のファイルなら開ける場合がある、とされています。
VLC は、公式サイトの機能の一覧で、入力に MPEG の TS、再生できる形式に H.264・AC3 を挙げています。Windows・Mac・Android・iOS 向けが配布されており、MTS を変換せずに見るだけなら VLC が手早い方法です。
PRIVATE フォルダーごと控えを取る
カードやカメラから、PRIVATE フォルダーごとパソコンへコピーする。元のファイルは変換が終わっても消さずに残す。
ffprobe で中身を見る
音声が ac3 か pcm か、field_order が tt(インターレース)か progressive か、解像度が 1440×1080 かを確かめる。
分割されていれば1本にする
00000.MTS・00001.MTS が1回の撮影なら、concat プロトコルか cat・copy /b でつなぐ。
映像コピー+AAC で MP4 にする
-c:v copy -c:a aac。容量を減らす・横じまを消すときだけ、bwdif を入れて再エンコードする。
見る相手の環境で確かめる
音が出るか、横じまが無いか、縦横比が正しいかを、送る前に1本だけ再生して確かめる。
MTS変換のよくあるエラーと直し方(原文つき)
この節では、MTS を変換するときに出るエラーや症状の原文と、原因・直し方が分かります。
| 出た文言・症状 | 原因 | 直し方 |
|---|---|---|
Could not find tag for codec pcm_bluray in stream #1, codec not currently supported in container |
Linear PCM の音声を MP4 にコピーしようとした | -c:a aac にする |
track 1: codec frame size is not set |
AC-3 を MP4 にコピーしたときの警告(ファイルは作られた) | 再生先が分からなければ AAC にする |
| MP4 にしたら映像だけで音が出ない | 音声が AC-3 のまま。再生側が AC-3 に対応していない | -c:v copy -c:a aac で作り直す |
non-existing PPS 0 referenced・no frame! |
分割された2本目以降を単独で開いた | 前のファイルとつないでから変換する |
error while decoding MB 5 16, bytestream -8 |
分割された MTS を concat デマルチプレクサーでつないだ | concat プロトコルか cat・copy /b を使う |
Error opening input: No such file or directory |
ファイル名・場所の誤り(大文字の .MTS と小文字の .mts は Linux では別の名前) | ls で正確な名前を確かめる |
Invalid data found when processing input |
0バイトのファイル、または動画ではないファイル | コピーが途中で止まっていないか、ファイルの大きさを見る |
File '00002.mp4' already exists. Overwrite? [y/N] |
同じ名前の出力がある | 上書きするなら -y、しないなら -n |
| 動くものに横じまが出る | インターレースの映像をそのまま表示・再エンコードした | -vf bwdif=mode=send_frame を入れて再エンコード |
| 映像が横に縮んで見える | 1440×1080・SAR 4:3 の情報を再生側が読んでいない | scale=1920:1080,setsar=1 で作り直す |
| ブラウザで MTS が開けない(エラー4) | ブラウザの <video> は MPEG-2 TS を直接再生しない(Chromium 153) |
MP4(H.264+AAC)にする |
入力が見つからないときの原文の全体です。
$ ffmpeg -i 00002.MTS -c copy x.mp4
[in#0 @ 0x55a7623b1fc0] Error opening input: No such file or directory
Error opening input file 00002.MTS.
Error opening input files: No such file or directory
$ ffprobe empty.MTS
empty.MTS: Invalid data found when processing input
MPEG-TS をブラウザで再生する仕組み(HLS)は、関連記事「m3u8とは|中身の見方・再生方法・MP4変換とエラーの直し方を実例で解説」で扱っています。
MTSをどの方法でMP4にするか(判断表)
この節では、目的ごとに、どの変換の方法とコマンドを選べばよいかが分かります。
次の順に判断すると、無駄な再エンコードをせずに済みます。
- 1分割されている → 先に1本にするconcat プロトコル・cat・copy /b
- 2見られればよい → 映像コピー+AAC数秒で終わり、画質は同じ
- 3横じまが気になる → bwdif で解除して再エンコードCRF 20〜23 が目安
- 4容量を減らしたい → CRF を上げるCRF 28 で元の14%(手元)
- 5縦横比がおかしい → 1920×1080・SAR 1:1 に作り直すscale=1920:1080,setsar=1
| 目的 | 方法 | 手元の目安(20秒) |
|---|---|---|
| 画質を落とさずに MP4 にしたい | -c:v copy -c:a aac |
0.77秒・95%・SSIM 1.000 |
| スマホ・SNS に送りたい | bwdif+CRF 23 | 28.7秒・35%・SSIM 0.973 |
| メールやチャットで送れる大きさにしたい | bwdif+CRF 28(解像度を下げるならさらに小さく) | 17.1秒・14%・SSIM 0.964 |
| なるべく高画質で作り直したい | bwdif+CRF 18 | 59.3秒・93%・SSIM 0.984 |
| 動きをなめらかに残したい | bwdif(send_field)で 60p | 29.9秒・40% |
| コマンドを使いたくない | HandBrake の Fast 1080p30 | (再エンコード。手元では動かしていない) |
| 変換せずに見るだけ | VLC など AC-3 に対応した再生ソフト | ― |
- 1元の MTS(PRIVATE フォルダー)を残した再エンコードは元に戻せない。変換後に問題が見つかったら、元から作り直す
- 2音声を AAC にしたAC-3 のままだと、手元の Chromium では音声のデコードが0バイトだった
- 3再エンコードするなら解除を入れた解除なしで作ると、印は progressive・絵は横じまのままになる
- 4分割ファイルを1本にした2本目以降を単独で変換すると先頭が壊れる
- 51本だけ再生して確かめた音・横じま・縦横比を、送る相手と同じ環境で見る
よくある質問
Q. MTSファイルとは何ですか? A. AVCHD 規格のビデオカメラが記録する動画ファイルです。映像は H.264、音声は AC-3(Dolby Digital)か Linear PCM で、MPEG-2 TS(192バイトのパケット)に入っています。カードの中では PRIVATE/AVCHD/BDMV/STREAM フォルダーにあります。
Q. MTS と MP4 の違いは何ですか? A. 映像は同じ H.264 を入れられます。違うのは入れ物(MPEG-2 TS と MP4)と、よく使われる音声(AC-3 と AAC)と、フォルダー構成です。MP4 のほうが、スマホ・ブラウザ・編集ソフトで扱いやすい形式です。
Q. MTS を MP4 に変換すると画質は落ちますか?
A. 映像をコピーする方法(-c:v copy)なら落ちません。手元では SSIM 1.000000・PSNR inf(同一)でした。HandBrake などで再エンコードすると少し落ちます(CRF 23 で SSIM 0.973)。
Q. 変換した MP4 で音が出ません。
A. 音声が AC-3 のまま MP4 に入っている可能性が高いです。ffprobe で ac3 と出たら、-c:v copy -c:a aac で作り直します。手元の Chromium では、AC-3 の MP4 は映像だけが再生されました。
Q. MTS ファイルの開き方は(Windows)? A. AC-3 に対応した再生ソフト(VLC など)で開きます。Microsoft の Windows Media Player 12 の対応形式のページには .m2ts が載っています。拡張子ごとの既定のアプリは「設定」→「アプリ」→「既定のアプリ」で、拡張子を検索して変えられます。
Q. Mac で MTS を開けません。 A. Apple は、まず macOS とアプリを更新し、Finder で command+I を押して「種類」を確かめ、その形式に対応したアプリを探すよう案内しています。編集もするなら、iMovie の「読み込む」ウインドウからカメラやカードを選んで読み込みます。MP4 に変換すると、ほかのアプリでも扱いやすくなります。
Q. 00000.MTS と 00001.MTS に分かれているのはなぜですか?
A. AVCHD のカメラは、1本が約2GBになると自動で新しいファイルを作るためです(ソニーのヘルプガイド)。1回の撮影が続いているので、concat:00000.MTS|00001.MTS などで1本にしてから変換します。
Q. M2TS と MTS は同じですか? A. 中身は同じ形式です。カメラの中では .MTS、Blu-ray やパソコンに取り込んだあとでは .m2ts になることが多く、FFmpeg ではどちらも mpegts と判定されます。変換の方法も同じです。
Q. 拡張子を .mp4 に変えるだけではいけませんか?
A. 中身は MPEG-2 TS のままです。名前を変えたファイルを ffprobe で見ると format_name=mpegts と出ました。MP4 として読むソフトでは開けないことがあるため、入れ物を作り直します(映像コピーなら数秒です)。
Q. 横じまを消すと画質は落ちますか? A. インターレースの解除は再エンコードを伴うため、少し落ちます。手元の bwdif+CRF 23 では SSIM 0.973 でした。横じまが気にならない用途なら、映像コピーで MP4 にし、解除は再生ソフトに任せる方法もあります。
Q. 変換にどのくらい時間がかかりますか? A. 映像コピーなら動画の長さに関係なく、ファイルの読み書きの時間だけです(20秒の動画で0.77秒)。再エンコードはパソコンの性能で大きく変わり、手元の 2 vCPU・-preset veryfast・CRF 23 では動画の長さの約1.4倍かかりました。
Q. オンラインの変換サイトを使ってもよいですか? A. 動画をサイトのサーバーへ送ることになります。家族や仕事の映像を送ってよいかは、サイトの規約とデータの扱いを読んでから決めます。FFmpeg や HandBrake なら、パソコンの中だけで変換できます。
まとめ
- MTS は AVCHD のビデオカメラの動画で、中身は H.264+AC-3(または Linear PCM)の MPEG-2 TS(192バイトのパケット)。M2TS と同じ形式。
- MP4 にするなら、まず
-c:v copy -c:a aac。20秒の動画で0.77秒、画質は SSIM 1.000000 で同じ。 - AC-3 のまま MP4 にすると、手元の Chromium では映像だけが再生され、音声のデコードは0バイトだった。Linear PCM はコピーではエラーになる。
- 横じま(インターレース)を消すなら bwdif などで解除して再エンコードする。解除せずに再エンコードすると、印は progressive・絵は横じまのままになる。
- 00000.MTS・00001.MTS は約2GBごとの分割。concat プロトコルか cat・copy /b で1本にしてから変換し、元の PRIVATE フォルダーは残しておく。
参考・出典
確認日はいずれも 2026年10月29日です。
- AVCHD「AVCHD Format」(フォーマットの表):https://www.avchd-info.org/format/index.html
- ソニー「ILCE-6400 ヘルプガイド 動画の記録可能時間」:https://helpguide.sony.net/ilc/1810/v1/ja/contents/TP0002255399.html
- ソニー「テレビ〈ブラビア〉取扱説明書(USB 機器の動画の場所)」:https://helpguide.sony.net/gbmig/14HE1091/v1/jpn/usb.html
- ソニー「PlayMemories Home 画像をWindowsパソコンに取り込む」:https://www.sony.jp/support/software/playmemories-home/guide/windows/import/usb.html
- Microsoft「Windows Media Player でサポートされているファイルの種類」:https://support.microsoft.com/ja-jp/windows/apps/windowsmediaplayer/file-types-supported-by-windows-media-player
- Microsoft「コーデックの FAQ」:https://support.microsoft.com/ja-jp/windows/apps/windowsmediaplayer/codecs-faq
- Microsoft「Windows で既定のアプリを変更する」:https://support.microsoft.com/ja-jp/windows/apps/change-default-apps-in-windows
- Microsoft「Video file formats supported by Clipchamp」:https://support.microsoft.com/en-au/topic/what-input-file-types-does-clipchamp-support-e33cc85b-6683-4c68-a7a7-196552005981
- Microsoft Learn「copy」(Windows コマンド):https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/copy
- Apple「Appleデバイスでメディアファイルが開かない場合や再生されない場合」:https://support.apple.com/ja-jp/102644
- Apple「macOS 用 iMovie 対応のカメラ」:https://support.apple.com/ja-jp/109514
- Apple「ファイルベースのカメラからMac上のiMovieに読み込む」:https://support.apple.com/ja-jp/guide/imovie/movbc953953e/mac
- Apple「Mac用QuickTime Playerユーザガイド ファイルを開く/再生する」:https://support.apple.com/ja-jp/guide/quicktime-player/qtp6cee0761b/mac
- HandBrake「About HandBrake」:https://handbrake.fr/docs/en/latest/introduction/about.html
- HandBrake「Supported source formats」:https://handbrake.fr/docs/en/latest/technical/source-formats.html
- HandBrake「Official presets」:https://handbrake.fr/docs/en/latest/technical/official-presets.html
- HandBrake「Adjusting quality」:https://handbrake.fr/docs/en/latest/workflow/adjust-quality.html
- HandBrake「Filters summary」:https://handbrake.fr/docs/en/latest/technical/filters-summary.html
- VideoLAN「VLC features」:https://www.videolan.org/vlc/features.html
- FFmpeg「FFmpeg Protocols Documentation」concat:https://ffmpeg.org/ffmpeg-protocols.html#concat
- FFmpeg「FFmpeg Filters Documentation」bwdif・yadif・idet・ssim・psnr:https://ffmpeg.org/ffmpeg-filters.html
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「MTSをMP4に変換する方法|MTSファイルとは・開き方と画質の実測」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。