F4Vファイルについて調べた

chakemiです。

先日、FlashMediaLiveEncoderで作成したファイルをカット編集したところ、リップシンクがズレるという事態にあい、その時調べた内容のメモ。

F4VはFlashVideoの一種で、Adobe社がFlash Player 9 update 3をリリースした時、映像コーデックにH.264、音声コーデックにAACをサポートするため、設計されました。 従来のFLVファイルフォーマットとは別に、ISO base media file formatをもとに拡張したフォーマットとなります。

詳細な仕様については、Adobe Developer Connectionからpdfを入手出来ます。

ISO base media file formatを拡張したフォーマットのため、ボックスツリー構造となっていて MP4BOXを使って内部の情報を確認することが出来ます。

こんな感じ。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[iso file] Box "stsd" has 224082 extra bytes
[iso file] Box "stts" has 8 extra bytes
[iso file] Box "stsc" has 224 extra bytes
[iso file] Box "stsz" has 8 extra bytes
[iso file] Box "co64" has 1246376 extra bytes
[iso file] Box "ctts" has 8 extra bytes
[iso file] Box "stss" has 706260 extra bytes
[iso file] Box "stsd" has 890 extra bytes
[iso file] Box "stts" has 8 extra bytes
[iso file] Box "stsc" has 8 extra bytes
[iso file] Box "stsz" has 8 extra bytes
[iso file] Box "co64" has 845120 extra bytes
* Movie Info *
        Timescale 1000 - Duration 01:38:46.023
        Fragmented File no - 2 track(s)
        File Brand f4v  - version 0
        Created: GMT Tue Mar 28 00:35:58 2017

File has no MPEG4 IOD/OD

Track # 1 Info - TrackID 1 - TimeScale 1000 - Duration 01:38:46.023
Media Info: Language "English" - Type "vide:avc1" - 177754 samples
Visual Track layout: x=0 y=0 width=972 height=482
MPEG-4 Config: Visual Stream - ObjectTypeIndication 0x21
AVC/H264 Video - Visual Size 972 x 482
        AVC Info: 1 SPS - 1 PPS - Profile Main @ Level 3.1
        NAL Unit length bits: 32
        Pixel Aspect Ratio 1:1 - Indicated track size 972 x 482
Self-synchronized

Track # 2 Info - TrackID 2 - TimeScale 1000 - Duration 01:38:46.010
Media Info: Language "English" - Type "soun:mp4a" - 127606 samples
MPEG-4 Config: Audio Stream - ObjectTypeIndication 0x40
MPEG-4 Audio AAC LC - 2 Channel(s) - SampleRate 22050 - SBR SampleRate 44100
Synchronized on stream 1

まだ、確証とれてないですが、[mdhd]ボックスのTimeScaleがエディターやエンコーダで処理した時に リップシンクずれを起こす原因となっているんじゃないと思うのですが、誰かお分かりになる方はいらっしゃいませんかね?

ちなみに、カット編集はMP4BOXでsplitしました。

1
mp4box -add ファイル名 -splitx StartTime(秒):EndTime(秒) -new ファイル名

処理も早くて、抽出するだけならこれ以上便利なものはないかも~。

Comments