「これはヤバかったな」という遅刻エピソード

こんにちは、ffmpegのアスペクト比変換について知っている人がいましたら教えてください。

サイト上に設置したアップローダから動画ファイルをアップしてもらって、
その動画ファイルをffmpegを使って.flvファイルに変換する、小さいyoutubeみたいなサイトを制作しています。
フォームからアップロードしてもらった動画ファイルをffmpegを使って変換しているのですが、
元の動画ファイル自体の画面サイズが小さいとffmpegのほうで出力時に勝手にリサイズされ、結果として妙な方向に引き伸ばされてしまいます。

これをリサイズせずに元のアスペクト比のまま拡大し、あまった部分には黒帯を入れたいのですがどうしたらいいでしょうか。

(携帯動画変換君のfixaspectコマンドについての説明ページ)
http://mobilehackerz.jp/archive/wiki/index.php?p …
このfixaspectコマンドが使用できればいいのですがどうも現在のバージョンのffmpegからはコマンド自体が無くなってしまったみたいで、入力してもエラーが出るだけです。

A 回答 (2件)

flvに変換する前に、元動画の画面サイズを取得して一定サイズ以下ならリサイズしないと言う処理を追加したらどうでしょうか?



動画情報データの取得サンプルのリンクを貼っておきます。
http://blog.bbtune.com/items/0000134.html

画像サイズの縦横の値だけを取得するには、上記リンクのサンプルに加えて
文字列操作が必要になりますね。


>あまった部分には黒帯
↓のPadオプションを見ればできるかと思います。
http://blog.livedoor.jp/tv_bok/archives/64977568 …


あなたが作成しているサイトがJavaで実装しているのかPHPで実装しているのかは分かりませんが、
・・・まぁexecでffmpegをコマンド実行していると思いますので、プログラムは関係なさそうですね。。
    • good
    • 0
この回答へのお礼

サイト制作ですが殆ど全てphpで所々htmlで作ってます。

なるほど、こんな風に動画の画面サイズを配列に格納する事ができるんですね。

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

お礼日時:2008/08/18 21:04

ffmpegというのは知らないんですが、flvを作成するなら


私は
http://www.gigafree.net/media/flashconv/rivaflve …
これをオススメします。

リサイズも出来るしパッと見でわかりやすいのでオススメです。
ぜひ使ってみてはいかがでしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

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

お礼日時:2008/08/18 20:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報