レベル情報が間違っている 1000 以上のビデオがあるため、一部のデバイスで再生できません。これらは、mp4 コンテナー内の aac オーディオを含む H.264 ベースラインです。それらを修正したいが、再エンコードは避けたい。これが可能であり、より高速になると仮定するのは正しいですか? ストリーム内の level_idc ビットを特定するにはどうすればよいですか? すべてのストリームで同じ場所に配置されますか? これはストリーム内の 1 か所だけであると予想していますが、この仮定は正しいですか? 更新:これを行うと主張するWindows実行可能リンクに出くわしました。UNIXでこのコマンドラインを実行できるようにしたいので、スクリプトを作成できます。
その他の更新: 以下の Roman の回答によると。MP4 構文を掘り下げたところ、プロファイルとレベルの情報が のavcC
アトムの一部であることがわかりましたstsd
。レベルが になっているのがわかった1E
ので、 に修正しました1F
。前:61 76 63 43 01 42 C0 1E FF E1 00 19 67 42 C0 1E
D9
後:61 76 63 43 01 42 C0 1F FF E1 00 19 67 42 C0 1E
D9
これにより、MediaInfo は次のように変更されました。
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : Baseline@L3.0
Format settings, CABAC : No
Format settings, ReFrames : 3 frames
Muxing mode : Container profile=Baseline@3.1
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 1mn 4s
Bit rate : 3 000 Kbps
Width : 1 280 pixels
Height : 720 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 30.000 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.109
Stream size : 22.7 MiB (92%)
Writing library : x264 core 120 r2151 a3f4407
Encoding settings : cabac=0 / ref=3 / deblock=1:0:0 / analyse=0x1:0x111 / me=hex / subme=7 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=0 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=12 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=0 / weightp=0 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=abr / mbtree=1 / bitrate=3000 / ratetol=1.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00
レベル付きの多重化モード パラメータが導入されましたが、残念ながら3.1
、このストリームはデバイスでも再生されませんでした。Format Profile
Is this possible without re-encoding? に示されているレベルを修正するにはどうすればよいですか?