
DLNA対応のテレビやメディアプレイヤーに動画を配信するとき、**「ファイル名」ではなく「MP4ファイル内部のタイトル情報(metadata title)」**が表示されてしまうケースがあります。
その結果、せっかく整理したファイル名が一覧に反映されず、プレイヤー側では謎のタイトルになってしまうことも…。
そこで今回は、ファイル名=タイトルに強制的に揃える方法を紹介します。
PowerShell+ffmpegを使えば、自動で一括修正できます。
なぜ表示されないのか?
- MP4ファイルには「ファイル名」とは別に「メタデータ(タイトル)」が埋め込まれています。
- DLNAや一部メディアサーバーは この“メタデータのタイトル”を優先して表示 するため、ファイル名が無視されることがあります。
- 対策としては、メタデータのタイトルをファイル名と一致させることが必要です。
使用するツール
- ffmpeg
→ 無再エンコードでメタデータを編集できる万能ツール - PowerShell
→ Windowsでのバッチ処理を簡単に記述可能
スクリプトの内容
以下のスクリプトを実行すると、指定フォルダ内のMP4をまとめて処理してくれます。
# ① 編集対象のフォルダパスを指定
$folderPath = "フォルダ"
# ② ffmpeg のパス(環境に合わせて設定)
$ffmpeg = "ffmpeg" # 例: "C:\tools\ffmpeg.exe"
# ③ MP4ファイルを処理
Get-ChildItem -Path $folderPath -Filter *.mp4 | ForEach-Object {
$inputPath = $_.FullName
$baseName = $_.BaseName # 拡張子なし → タイトルに使用
$outputPath = Join-Path $folderPath ("new_" + $_.Name)
# タイトルを設定した新ファイルを作成(再エンコードなし)
& $ffmpeg -i "`"$inputPath`"" -metadata title="`"$baseName`"" -codec copy "`"$outputPath`""
}
# ④ new_*.mp4 を検証&元ファイルと置き換え
Get-ChildItem -Path $folderPath -Filter "new_*.mp4" | ForEach-Object {
$newFile = $_.FullName
$originalName = $_.Name -replace "^new_", ""
$originalPath = Join-Path $folderPath $originalName
$title = $originalName -replace "\.mp4$", ""
Write-Host "▶ チェック中: $($_.Name)"
# エラーチェック
$errorLog = "$($env:TEMP)\ffmpeg_error.log"
if (Test-Path $errorLog) { Remove-Item $errorLog }
& $ffmpeg -v error -i "`"$newFile`"" -f null - 2> "$errorLog"
if ((Get-Content "$errorLog").Length -eq 0) {
# 問題なければ元ファイル削除 & new_ を本名に戻す
if (Test-Path $originalPath) { Remove-Item $originalPath -Force }
Rename-Item -Path $newFile -NewName $originalName
# 念押しでタイトルを再設定
$finalFile = Join-Path $folderPath $originalName
$tempFile = Join-Path $folderPath "temp_$originalName"
& $ffmpeg -i "`"$finalFile`"" -metadata title="`"$title`"" -codec copy "`"$tempFile`""
Move-Item -Force -Path $tempFile -Destination $finalFile
Write-Host "✅ 完了: $originalName"
} else {
Write-Host "❌ エラーあり → $($_.Name)"
}
}
スクリプトの流れ
- フォルダ内のMP4を取得
→ ファイル名をタイトルに設定したnew_*.mp4
を作成 - ffmpegでデコード検証
→ 破損していないか確認 - 元ファイルと入れ替え
→ new_を外してリネーム - 最終確認のため再度タイトルを設定
→ 冗長だが確実に整合が取れる
実行のポイント
- 日本語ファイル名も対応
PowerShellのクォートを工夫しているので、空白や日本語でもOK。 - ffmpegは必須
インストール後、パスを通すかフルパス指定してください。 - DLNAサーバ側の更新が必要な場合も
NASやminidlnaなどは、ライブラリの再スキャンを実行しないと反映されません。
まとめ
- DLNAでタイトルが崩れる原因は MP4内部のメタデータ。
- PowerShell+ffmpegを使えば、ファイル名=タイトルに一括修正できる。
- 安全のため、
new_ファイル → 検証 → 元ファイルと置換
という二段階方式を採用。
これでメディアプレイヤーでも、意図通りに動画タイトルを表示できるようになります!
リンク
リンク
コメント