2012-02-28 14 views
0

FFmpegを使用してAndroidデバイスでビデオファイルのサイズを変更しようとしています。備考:私はバイナリとしてFFmpegを使用することはできません - 私の場合は、共有ライブラリとして使用する必要があります(FFmpeg C APIのみがアクセス可能です)。FFmpeg C APIを使用してビデオのサイズを変更

10 OPEN video_stream FROM video.mp4 
20 READ packet FROM video_stream INTO frame 
30 IF frame NOT COMPLETE GOTO 20 
40 RESIZE frame 
50 WRITE frame TO converted_video.mp4 
60 GOTO 20 

が、私は、フレームのサイズを変更するためにsws_scale機能を使用する必要があります。私は、ビデオのサイズ変更に関するあらゆるドキュメントを見つけられませんでした

は、しかし、それは次のようされるアルゴリズムのように見えますか? FFmpeg C APIを使ってビデオファイルのサイズを変更する方法がありますか?

+0

もしあなたが望むのであれば、execでffmpeg実行可能ファイルを使うことができます。 –

+0

私はバイナリとしてFFmpegを使用できません - 私の場合は、共有ライブラリとして使用する必要があります(FFmpeg C APIのみアクセス可能)。 –

+0

お元気ですか?いくつかのコードを過ぎることはできますか? – shem

答えて

1

最新のFFmpegバージョンではsws_scale()がこれを行う方法です。 SwsContextを準備するなどの余計な手順がありますが、それを使用するのは難しくありません。参考にしたサイトのチュートリアルなどの例があります。

古いバージョンでも、少し使いやすく、しばらくの間ライブラリに残っていましたが、通常のヘッダーではありませんでした。古いバージョン)。私は最新のバージョンで試していませんが、チャンスがあればこれはまだ動作します。しかし、おそらくsws_scale()を使用する方がより安全です。

FFmpegライブラリの外側でスケーリングを処理することもできますが、この場合はそれ以上の問題が発生する可能性があります。ライブラリのDoxygenドキュメンテーションは、AVPicture構造体を直接操作したり、他の形式との間で画像を転送したりするのに十分な構造を説明しています。主な難しさは、使用するカラー/ピクセルフォーマットを扱うか、変換することができることです。他のフォーマットに変換する必要がある場合は、サイズ変更でなくても少なくともそれ以上はsws_scale()を使用する必要があります。

関連する問題