• ベストアンサー

ffmpegのアスペクト(縦横)比変換について、、困ってます

こんにちは、ffmpegのアスペクト比変換について知っている人がいましたら教えてください。 サイト上に設置したアップローダから動画ファイルをアップしてもらって、 その動画ファイルをffmpegを使って.flvファイルに変換する、小さいyoutubeみたいなサイトを制作しています。 フォームからアップロードしてもらった動画ファイルをffmpegを使って変換しているのですが、 元の動画ファイル自体の画面サイズが小さいとffmpegのほうで出力時に勝手にリサイズされ、結果として妙な方向に引き伸ばされてしまいます。 これをリサイズせずに元のアスペクト比のまま拡大し、あまった部分には黒帯を入れたいのですがどうしたらいいでしょうか。 (携帯動画変換君のfixaspectコマンドについての説明ページ) http://mobilehackerz.jp/archive/wiki/index.php?plugin=attach&pcmd=open&file=fixaspect.png&refer=FFMPEG%2F%A5%D3%A5%C7%A5%AA このfixaspectコマンドが使用できればいいのですがどうも現在のバージョンのffmpegからはコマンド自体が無くなってしまったみたいで、入力してもエラーが出るだけです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

flvに変換する前に、元動画の画面サイズを取得して一定サイズ以下ならリサイズしないと言う処理を追加したらどうでしょうか? 動画情報データの取得サンプルのリンクを貼っておきます。 http://blog.bbtune.com/items/0000134.html 画像サイズの縦横の値だけを取得するには、上記リンクのサンプルに加えて 文字列操作が必要になりますね。 >あまった部分には黒帯 ↓のPadオプションを見ればできるかと思います。 http://blog.livedoor.jp/tv_bok/archives/64977568.html あなたが作成しているサイトがJavaで実装しているのかPHPで実装しているのかは分かりませんが、 ・・・まぁexecでffmpegをコマンド実行していると思いますので、プログラムは関係なさそうですね。。

t_getsuei
質問者

お礼

サイト制作ですが殆ど全てphpで所々htmlで作ってます。 なるほど、こんな風に動画の画面サイズを配列に格納する事ができるんですね。 phpの所でやるべきかもしれませんが、 1.これ以下ならリサイズしたくない数字を変数に格納 $test1 = "176×144" 2.アップロードされた動画からexec関数でffmpegの標準出力を配列へ取得 3.配列から文字列関数や正規表現を利用して画面サイズのデータを取り出す 4.if文を使って2で取り出したデータが1の変数より小さい場合にffmpegのコマンドでリサイズ処理を実行 というような感じにできそうです。 実際には1番目で、単純に変数に格納するだけではなかなか上手く動いてくれなさそうですが動画の正確な画面サイズをphpに渡す事ができればいろいろできそうです。 ありがとうございました。

その他の回答 (1)

回答No.1

ffmpegというのは知らないんですが、flvを作成するなら 私は http://www.gigafree.net/media/flashconv/rivaflvencoder.html これをオススメします。 リサイズも出来るしパッと見でわかりやすいのでオススメです。 ぜひ使ってみてはいかがでしょうか。

t_getsuei
質問者

お礼

回答ありがとうございます。 さっそくリンク先を見てみたのですが、これはどうもリナックス上での動作はサポートしていないみたいです。 なにしろffmpegを使ったサイトを作ろうと思っているのでサーバOSはリナックス(centos)になっていて、ちょっと現時点では使用できないもののようです。

関連するQ&A