5

iPhone 3GS で FFmpeg をロードした h264 ビデオをいじっています。問題は、「ポートレート」方向で録画されたビデオに変換マトリックスが適用されているため、反時計回りに 90 度回転して表示されることです。

これまでのところ、「tkhd」アトムの変換行列を変更する必要があるだけです。問題は、このデータへのアクセスまたは変更に問題があることです。以下の FFmpeg 実装をチェックアウトしました。

static int mov_read_tkhd(MOVContext *c, ByteIOContext *pb, MOVAtom atom)

avformat でマトリックスにアクセスする方法を明確に示していますが、同じ関数を使用してヘッダー バイトにアクセスしようとすると、有理値が得られません。マトリックスを正常にプルできたとしても、それを置き換える方法がわかりませんか? FFmpegには、トラックヘッダーを取得して追加する機能がありますが、置換する機能はないようです?

どんな助けでも大歓迎です。

ありがとう、マット。

4

4 に答える 4

13

vフィルターオプションを機能させることができない人のために、いくつかの検索の後、私は自分のビルドに機能する代替オプションを見つけました:

ffmpeg -i in.avi -vf "transpose=1" out.avi

これにより、ビデオが時計回りに90度反転します。これが私のように苦労しているubuntuのすべての人に役立つことを願っています!! :)

于 2010-11-24T19:05:53.140 に答える
4

FFMPEG git master ブランチでパッチを受け入れたところです。これは、iPhone の向きを調整し、その後送信される .mov ファイルに適用される変換に役立つはずです。FFMPEG はメタデータで送り返すようになりました:

'rotate'=90、180、または 270 は、真の回転を得るために画像を時計回りに回転させる必要がある角度に応じて異なります。

于 2012-01-24T21:31:22.983 に答える
2

ムービーは、ハードウェア カメラの向きで直接記録されます。回転させても、カメラは同じ向きで記録し、ファイルへの書き込みも同じです。

ビデオの向きを決定するのは変換マトリックスです

行列は、iPhone の向きに応じて設定されます。これが、ビデオを回転する必要があるかどうかを決定するものです。その回転は 90 度かもしれませんし、180 度かもしれません。電話の向きによって異なります。

マトリックスとは何か、それが画像にどのように関係するかを理解したら、ビデオの向きを決定できます。

于 2011-09-07T21:59:23.110 に答える
2

iPhone 3GS で録画された縦向きのビデオは、横向きでは奇妙に回転し、quicktime のみが正しく再生されます。VLC などのプレーヤーは、縦向きモードのビデオがそのようにエンコードされているため、横向きで再生されます! おそらく、Apple は、quicktime が向きを適切に識別して設定できるように、少し設定しているのでしょう。

ffmpeg の -vfilters オプションを使用して、ビデオを回転させることができます。バージョン r21242 で利用できます。ffmpeg のバージョンにパッチを適用する必要があります。

--enable-vfilters を使用してビルドを構成する

次のオプションを使用できます。

ffmpeg -vfilters "rotate=90" -i input.mp4 output.mp4

入力ムービーを回転します。

于 2010-02-24T14:36:39.923 に答える