web-dev-qa-db-ja.com

MPGをMP4にRemux /エンコード/変換します

MPGファイルのメタデータを編集する(つまりcreatedate)ことができないことを理解しているので、MPGを新しいファイル形式に「アップグレード」する別の方法を探しています(WindowsとiOSの両方で機能する形式が推奨されます)。

この目標を達成するにはどうすればよいですか? MPGビデオをMP4またはMOVに再多重化/エンコード/変換し、ファイルの再多重化/エンコード/変換にどの設定を使用する必要がありますか?どのアクションが最良の結果を生み出すか。元のMPGビデオにできるだけ近いですか?

これが私のMPGファイルの1つのmediainfo仕様です:

General
Complete name : E:\Users\Owner\Desktop\test\MOV03521.MPG
Format : MPEG-PS
File size : 25.1 MiB
Duration : 20s 124ms
Overall bit rate mode : Variable
Overall bit rate : 10.5 Mbps

Video
ID : 224 (0xE0)
Format : MPEG Video
Format version : Version 1
Format settings, BVOP : No
Format settings, Matrix : Default
Format settings, GOP : N=1
Duration : 20s 100ms
Bit rate mode : Variable
Bit rate : 10.2 Mbps
Width : 640 pixels
Height : 480 pixels
Display aspect ratio : 4:3
Frame rate : 30.000 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Compression mode : Lossy
Bits/(Pixel*Frame) : 1.105
Time code of first frame : 00:00:00:00
Time code source : Group of pictures header
GOP, Open/Closed : Closed
Stream size : 24.4 MiB (97%)

Audio
ID : 192 (0xC0)
Format : MPEG Audio
Format version : Version 1
Format profile : Layer 2
Duration : 20s 124ms
Bit rate mode : Constant
Bit rate : 64.0 Kbps
Channel(s) : 1 channel
Sampling rate : 32.0 KHz
Compression mode : Lossy
Stream size : 157 KiB (1%) 
4
zarko

作成日(他の多くのメタデータフィールドと同様)は、MP4/MOVおよびMKVコンテナ(およびその他のいくつか)に設定できるプロパティですが、MPEGプログラムストリームまたはトランスポートストリームには設定できません。実際、写真のEXIFのように、ビデオメタデータの標準はありません。そして、MPEGコンテナを設計したとき、おそらくこのアプリケーションについては(まだ)考えていませんでした。

MPEG-1は非常に古いという事実に注意する必要があります—彼らは私が生まれたときにそれを開発し始めました—そしてあなたはおそらくもっと良いでしょうビデオをH.264のようなより最近の圧縮効率の高いコーデックに変換します。 10 MBit/sのMPEG-1ビデオは、おそらく1 MBit/sのH.264と同じか、それよりも低く見えるでしょう。

したがって、本当の問題が、ある種のファイルマネージャーでビデオが正しい順序で表示される必要があり、ファイルマネージャーを変更したり、 メタデータプラットフォーム を使用したりできない場合は、再-ビデオをマルチプレクサまたは再エンコードします。

再多重化はビデオ/オーディオビットストリームに影響を与えないため、ファイルサイズと品質は損なわれません。 ffmpeg を使用すると、次のことを試すことができます。

ffmpeg -i input.mpeg -c copy output.mkv

これは機能する場合と機能しない場合があります。私が試したときはそうではありませんでしたが、 理論的にはMatroskaはMPEG-1ビデオをサポートしています 。ただし、MatroskaはWindowsまたはiOSではネイティブにサポートされていません。

したがって、MP4コンテナでビデオとオーディオをH.264/AACに再エンコードできます。

ffmpeg -i input.mpeg -c:v libx264 -preset slow -crf 18 -c:a aac -strict experimental -b:a 128k output.mp4

ここで、CRFオプションが品質を設定します。 18はとても良いことを意味します。 23がデフォルトです。低いほど良いことを意味するため、品質を維持したい場合は、18未満にすることもできます。CRFが±6の場合、ファイルサイズは約半分または2倍になります。 H.264エンコーディングガイド は非常に役立ちます。結果のファイルは入力ファイルよりも小さい場合がありますが、それでも同じように見栄えがすることに注意してください。これは、コーデックの方がはるかに効率的だからです。元の値と再エンコードされた値の違いが認識できなくなる値が見つかるまで、CRFを変更することをお勧めします。

MP4のH.264/AACは、(新しい)WindowsおよびiOSでサポートされています。古いバージョンのWindows(Windows 7 IIRCを含む)は、コーデックパックがインストールされていない限り再生されません。古いデバイスでのiOSの互換性のために、mayはオプションとして-profile:v baselineを設定する必要があります。

MKVまたはMP4に変換した後、作成日などのメタデータを設定できるようになります。

3
slhck

私はこれに exiftool をうまく使用しました。 MPGファイルbefore修正のメタデータは次のとおりです。

C:\>exiftool.exe -s test.mp4

ExifToolVersion                 : 10.01
FileName                        : test.mp4
Directory                       : .
FileSize                        : 14 MB
FileModifyDate                  : 2015:09:04 22:33:16+05:00
FileAccessDate                  : 2015:09:05 14:10:08+05:00
FileCreateDate                  : 2015:09:05 14:10:08+05:00
FilePermissions                 : rw-rw-rw-
FileType                        : MP4
FileTypeExtension               : mp4
MIMEType                        : video/mp4
MajorBrand                      : MP4  Base Media v1 [IS0 14496-12:2003]
MinorVersion                    : 0.2.0
CompatibleBrands                : isom, iso2, avc1, mp41
MovieHeaderVersion              : 0
CreateDate                      : 0000:00:00 00:00:00
ModifyDate                      : 0000:00:00 00:00:00
TimeScale                       : 1000
Duration                        : 0:01:22
-- snip --
TrackHeaderVersion              : 0
TrackCreateDate                 : 0000:00:00 00:00:00
TrackModifyDate                 : 0000:00:00 00:00:00
-- snip --
MediaHeaderVersion              : 0
MediaCreateDate                 : 0000:00:00 00:00:00
MediaModifyDate                 : 0000:00:00 00:00:00
-- snip --

これを使用してallの日付を変更しました:

C:\>exiftool.exe ^
-Quicktime:CreateDate="2007-01-02 03:04:05" ^
-Quicktime:ModifyDate="2007-01-02 03:04:05" ^
     -TrackCreateDate="2007-01-02 03:04:05" ^
     -TrackModifyDate="2007-01-02 03:04:05" ^
     -MediaCreateDate="2007-01-02 03:04:05" ^
     -MediaModifyDate="2007-01-02 03:04:05" ^
test.mp4

の修正後のメタデータは次のとおりです。

FileModifyDate                  : 2015:09:05 14:20:54+05:00
FileAccessDate                  : 2015:09:05 14:20:54+05:00
FileCreateDate                  : 2015:09:05 14:10:08+05:00
-- snip --
CreateDate                      : 2007:01:02 03:04:05
ModifyDate                      : 2007:01:02 03:04:05
-- snip --
TrackCreateDate                 : 2007:01:02 03:04:05
TrackModifyDate                 : 2007:01:02 03:04:05
-- snip --
MediaCreateDate                 : 2007:01:02 03:04:05
MediaModifyDate                 : 2007:01:02 03:04:05
-- snip --

まず、既知の優れたMPGファイルのメタデータを確認し、どの日付がどれであるかを書き留めておくことをお勧めします。実験する前にファイルをバックアップしてください(exiftoolはデフォルトでバックアップを作成します)。私のテストでは、元のファイルと更新されたファイルのサイズはまったく同じままです。

0
Salman A