エンコードソフト ffmpeg のスレ
公式サイト
http://ffmpeg.org/
どうもこれでエンコードしたら、ファイルサイズがでかくなるんだがorz >>177
その動きからするとttyを直接叩いてるんだろうな
だったらscreenでも使うしかないんじゃね? >>178
日本語でOK?
申し訳ないが何を言ってるのかさっぱりわからん >>179
日本語勉強して出直してくることをお勧めする ttyとscreenを知らないので意味不明になっているだけでは。
>>177
うちの環境では正常に動作して、ログもとれる。
〜の部分に問題はないか? FFmpegをコンパイルしようとしたら
undefined reference to `x264_encoder_open_77'
こんなエラーが出るんだけど、もしかしてx264のバージョン0.77って
対応してない? >>182
x264は更新が激しい(内容の変化)ケースが多いから最新の奴を入れるとffmpegやmplayerやvlc等が
make出来なくなるケースがあったです。
大抵は少し経つとffmpegやmplayer等のソースが対応するパターンが多いけど。
x264が更新されたら(特にrev76が77に変わったときなど)最低でもx264と同じ時期か少し
後の(x264が出た時より数日あととか)ソースを持ってきて入れるようにしてます。
まあchengelogとかgitで見れば良いのだろうけど、自分は見ても知識無いので^^;
とりあえずx264のrevが上がったら数日待ってからx264を更新して数日後ffmpegのソースはその時点の
最新を使用するようにしてます。
revが同じで1271とかそういう4桁のバージョンが変わっただけなら結構平気なんだけど・・・ ふと見かけないオプション見つけたので質問です
-sws_flags lanczosオプションってリサイズのオプションですよね
具体的に通常のリサイズとは処理が何か違うんでしょうか? 例えば、映像より音声の方が短いようなもを
ミックスして、ffmpegで1つの動画にします(mpg形式)。
そのような動画を2つを cat で結合します。
こうして作った動画ファイルは
元々、音声の長さが短かったため、
1つめの映像が終わる前に2つ目の音声が再生されてしまいます。
このようなことが起こらないために
うまいやり方はありますか?
-vsync とか -async とか -timestamp とか
そのへんのオプションが使えそうな気がするのですが、
マニュアルの記述があまりに貧相なので使い方が
わかりません。
>>186
ffmpegのsocで結合機能が作られてるけど、まだ本線にマージされてないねぇ。 PSPやiPhone互換のH.264を出力するffmpegかmencoderの設定教えてください! >>184
確かデフォルトはbicubicだけど、
lanczosはbicubicに比べてよりシャープな画像が得られる
エッジが強調されすぎるので不自然に感じる人も多いけど
俺はボケ気味の元画像を縮小してクッキリさせたい時に使ってる >>188
Avidemuxの自動設定を使え
なぜかGtk版は自動設定が動かなかったりするからQt版おすすめ >>190
おおぅ、こんなのがあったんですね。ありがとうございます。 変換君で ttp://blog.k-tai-douga.com/ffmpeg のrev.20220を使っており、
h264のbaseline profileを使いたいのですが、
Error while opening encoder for output stream #0.0 - maybe incorrect parameters such as bit_rate,width or height
というエラーが出て変換できません。
-vcodec libx264 -vpre C:\ffpresets\libx264-baseline.ffpreset -s 176x144 -r 10.0 -b 128k -f 3gp
上記設定では無理なのでしょうか?
エラーの出ない設定などあればご教示下さい。
>>193
変換君の事はよく解らない。もしかしたらその変換君のビルドに使用したx264は本当に最新のやつじゃないかな。
とうのは最近のx264の更新がやたら激しくて、つい最近までしばらく0.76だったx264が0.77になってる。
この小数点のバージョンがあがった時はえてして大きな変更加えられてるらしく、今までのコマンドとか
変更になったりするらしい。
で、結果から言うと自分のffmpegはx264を0.77に上げたときあたりから-vpreのオプションが受け付けられなく
なるケースが出てきた。ググったら他にもそんな人が出てて対策はbaselineじゃなくてdefault使ってくれとか
書いてる人も居たかな。
ともかく今の状態だと動かないプロファイルはbaseline、mainは駄目だったね。default、normalなんかは
動いた。けどbaseline、mainに比べて質は上がるけどエンコ速度は遅くなるだろうね。
libx264-baseline.ffpresetの「baseline」の部分を「default」や「normal」に書き換えてやれば
とりあえず動くと思うよ。もしくは変換君のバージョンを以前の物に下げるかかな。 >>194
レスありがとうございます。
defaultやfastなんちゃらとかは試して、出来るということは知っていたのですが、
baselineで変換したいのです。
というのも、携帯で見たいがためです。
defaultで変換した場合、真空波動研で見るとhigh profileとなっています。
自分の勘違いかもしれませんが、high profileだと携帯では再生出来なかった気がするので、
なんとかbaseline profileにしたかった次第です。
とりあえずは、以前のバージョンのffmpegなど試してみようかと思います。 Ubuntu 9.04を使用しています。
Playstation EyeというWebCamの映像を、ffserverを使用して配信したいのですが、以下のエラーがでてしまいうまく配信することができません。
考えられる原因等わかる方いましたらよろしくお願いします。
[video4linux2 @ 0x957bac0][3]Capabilities: 5000001
[video4linux2 @ 0x957bac0]The V4L2 driver changed the video from 320x240 to 640x480
[video4linux2 @ 0x957bac0]ioctl(VIDIOC_DQBUF): Input/output error
Input #0, video4linux2, from '/dev/video0':
Duration: N/A, bitrate: -2147483 kb/s
Stream #0.0: Video: rawvideo, yuyv422, 640x480, -2147483 kb/s, 1000k tbr, 1000k tbn, 1000k tbc
Output #0, ffm, to 'http://localhost:8090/feed1.ffm':
Stream #0.0: Audio: mp2, 44100 Hz, mono, s16, 32 kb/s
Stream #0.1: Video: mpeg1video, yuv420p, 160x128, q=3-31, 64 kb/s, 1000k tbn, 3 tbc
Stream #0.2: Audio: mp2, 22050 Hz, mono, s16, 64 kb/s
Stream #0.3: Video: 0x0000, yuv420p, 352x240, q=3-31, 256 kb/s, 1000k tbn, 15 tbc
Could not find input stream matching output stream #0.0
Tue Oct 20 14:05:15 2009 127.0.0.1 - - [GET] "/feed1.ffm HTTP/1.1" 200 4149
Tue Oct 20 14:05:15 2009 127.0.0.1 - - [POST] "/feed1.ffm HTTP/1.1" 200 0 追記: ffmpegのバージョン・Configuration設定
FFmpeg version 0.5-svn17737+3:0.svn20090303-1ubuntu6, Copyright (c) 2000-2009 Fabrice Bellard, et al.
configuration: --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --extra-version=svn17737+3:0.svn20090303-1ubuntu6 --prefix=/usr --enable-avfilter --enable-avfilter-lavf
--enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads
--disable-stripping --disable-vhook --enable-libdc1394 --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-armvfp --disable-neon --disable-altivec --disable-vis --enable-shared --disable-static
>>200
たいていのマカは正体を見破られたら去ってゆく
黙って去る事もあれば
君みたいに捨て台詞を残すこともある でもMACってシェアを伸ばしてるみたいね。iPODとかiPhoneを使用した人達がPCもあんな感じなのが良い
って感じでMACを選ぶ人が最近多発中とか。
Microsoftを辞めて行ったWINDOWSの開発担当者の台詞(まだVistaの開発途中の事だけど、ほとんど出来上がって
た頃だったと思った)の「俺ならVistaを使わないでMACを使う」とか言った言葉を思い出してしまったw 紛らわしい言動は慎むべきだ
日本は「頃す」と書いただけで逮捕される警察国家なのだから いえ、FFMPEGスレでなんでMAC叩かなきゃいけないのがよく解らん。
MACといえFFMPEGユーザーなのだから、使ってる人には発言権あるでしょうに。
なのにMACのみ排除しようとする行為自体が紛らわしいと思いません? >>201
Ubuntuの本スレで
「俺は最後まで徹底的にマカと戦う」
「私に賛同している人は大勢居る」
って言ってた人? 懐かしいなぁ。元気してたか?
>>204
思いっきり
0.5-svn17737+3:0.svn20090303-1ubuntu6
って書いてあるしねぇ。 >>190
Qt版のほうが出来がいいのか・・・と思って使ってみたけど
アイコンが小さくて押し間違えるのでGtk+版に戻してしまった。
くだらない理由ですまん >>210
くだらない。
GCC使って同じソースからコンパイルして、しかもカーネルもMacはUnixベース。
こんな事言ってるからLinuxがいつまで経っても発展しない。多分Linux使ってる人もほとんどが
ちょっと難しいWINDOWSを使ってる位の感覚しかないんだろ。
せっかくのグローバルな意味合いをLinux使いは自分達で殺してる。 >>212
マカはLinuxへのアンチ活動を止めろ! >>213
Mac欲しいけど買えねえんだよ。金が無くて。
仕方なくLinux使ってんだ $ uname -a
Linux ******* 2.6.31.4-m4 #1 SMP Fri Oct 16 00:34:27 JST 2009 x86_64 GNU/Linux そりゃLinux板でMacMac言ってたら叩かれるだろ。
Linux以外でffmpeg使っててこのスレにいるなら
ffmpegについてのみ言及すりゃ良いんじゃねーの?
あとLinuxの方がWindowsより簡単だろ。 > そりゃLinux板でMacMac言ってたら叩かれるだろ。
なんで? >>217
Macについて語りたければ然るべき板に行けよ。
Windowsだって同様。
Linux板で政治は語らないだろ? > Linux板で政治は語らないだろ?
政治がどうかしたの? タダのバカかよ・・・
相手した俺も馬鹿だったわ・・・ >>214
わかりました
Linuxアンチ活動をするとApple社からリベートが出るんですね。
>>218
マカは人類と敵対する存在なので極めて政治的軍事的な話題だな 今日も平和だな。
みんな平和について語り合おうぜ。 >>224
禁断のリンゴなんでしょ。アップルのマークは。
初めて卓上のPCを作ったときに、自分達はトンでもないものを開発してしまった。
いつか人間がPCに管理される日が来るかもしれない、我々は今禁断の果実をかじったってあのマークに
なったとか聞いた。 英語で正しい発音の「Apple」は「アポー」って言うんだよ。
はい、皆さんご一緒に
アポー! 近い将来に誤作動を起こして核戦争の引き金を引くのは間違いなくMac qsquishって-qmin -qmax付近になるとq値の変化を緩やかにするとありますが
結局上限下限はどうなってるんでしょうか?
緩やかにしつつ振り切りそうならクリップして処理なのかそれとも有る程度のオーバーは許容してるのかが分りません
品質の急激な変化を防ぐためのオプションと言う事にはなっていますがもし最終的に上限下限をクリップしているなら
そのシーン以前の品質が結局不要にビットを割いたりあるいは若干ビット不足で処理される事になりませんか? アルファチャンネルつきのFLV(VP6A)を、アルファチャンネルを保持したままAVIに変換したいと思い、
ffmpeg -i sample_alpha_VP6.flv -pix_fmt bgra -vcodec rawvideo bgra_raw.avi
といった感じで変換してみたのですが、映像が崩壊してしまいます。
VP6Aのデコードには対応しているはずなので、何か方法はあると思うのですが、
この場合、どういうオプションを指定すればよいのでしょう・・・?
アルファチャンネルつきのFLVサンプルはこちらにあります。
ttp://www.flashbackj.com/sorenson/flash/images/sample_alpha_VP6.zip ちょっとすれ違いかもしれないけど、
AMD(ATI)のGPUを使ったエンコーダ AVIVO media conveter って、
Linuxでは使えないのでしょうか?
(wineとか駆使しても)
Xドライバは出てるので、なんとか使えると嬉しいのですが。 ffmpeg を使って、Webのサービスで、
動画の変換をするようなシステムを作ろうとしています。
今は動画変換の要求があるたびに、
ffmpeg の実行ファイルを起動していますが、
何度もプロセスを起動するので、そのコストが無駄です。
ffmpeg をサービス化(デーモン化)して、
プロセスを常時待機させて、
要求があるたびに変換を行うことはできませんか?
>>232
動画変換で、ffmpeg起動コストが高いとは到底思えない。
>>232
apache module化するのが良い予感 (ライセンス的にも問題茄子)
作ったら教えてね 動画変換という何十分、何時間もかかる処理で、
1秒未満の起動コストを削減しても
意味無いだろwww EC2 の大きめのインスタンス何個か借りればよくね >>237
俺もそう思う。
それより1度しか使わないストリームデータのキャッシュチューンした方が絶対良い。 >>237
HTTPの中でShellを動かさなくて良いのがメリット。 >>240
ごめん、やっぱり大きなメリットとは思えない。 Apacheモジュール化して普及したら、
共有鯖でシェル叩く権限無くても動画エンコードできるようになるな。 はぁ? シェルたたく権限なくても
sendmailコマンド実行できるんだがw
世の中のメール送信できるCGIは
半分ぐらいはsendmailコマンド呼び出しだろ。
sendmailコマンド実行できるなら
ffmpegコマンドも実行できる。
シェル(bash)呼び出しなんか関係ない。
>>244
世の中のメール送信できるCGIの半分(?)でしか使えないんだろ?
ダメじゃん。 >>247
なるほど、だからみんな黙ってるんだな。 >>244
具体的にはどうしてんの?popen3?
>>249
常識だからググレカス
ffmpeg起動するのに、
シェルたたく権限なんか関係ない。
それだけだ。 >>250
ワラタ。
popenもsystemもシェル経由でしかコマンドが呼べないんだが。
自分でご丁寧にfork & execしてもいいけど、それができるスクリプト言語は希少。
君が表層のみで話してるのはよく分かった。
>>251
スクリプト言語を使っておきながら、シェルの起動コストを議論するほうがわからん。
/bin/sh なんて、常にメモリキャッシュにはいってるし、
何のコストを気にしてるのかさっぱり。 なんとなくわかる。
アクセスがあるたびにapacheを起動するのはたいへんだから
apacheはずっと動いているでしょ。
だからffmpegも起動するのがたいへんだと思っちゃったんじゃないかな?
実際には常駐して、複数のタスクを行なう構造のapacheと
起動後、一つのタスクを行なって終了するffmpegを
同列に考えるのが最初の間違いってことになる。
仮にffmpegのロード時間をケチるとして
常駐型のエンコーダーを開発するとしたら、コストは大きいなぁ。
apacheモジュールにしても、問題は大差無いかな。
やるべきことは、ffmpegのソースをよく調べて
その用途に必要なコードを切り捨てて
最小の時間でロードできるようなバイナリーを作ることじゃない?
エンコーダーライブラリも静的リンクしたほうが速いのかな?
起動するさいに必要なメモリうんぬんなんて気にしてないんだって。
apacheのモジュールを起動するのはapacheのプロセスのみ。それがつぶれて終わり。
ffmpegをオーバフローさせるようなコードが紛れているかもしれないときに、system()なんて
危険なことをhttpの中でやりたいとは思わないだろ? >>257
いや、俺もそう思う。
>>255 は、モジュール化する意義がまるであべこべだし、
system 使わなくてももっと良い呼び出し方はあるしな。
ま、モジュール作ったらベンチマークしてみろ。 >>255
モジュールにしたところでバッファオーバーフローの脆弱性は組み入れられる。
何そのモジュール神話。 そういうプロセッサ時間を大量に消費する糞重い仕事は、
本気でdistributed job queueみたいなのでやるのがいいんじゃないのかな
要はちゃんとキューイング+分散化汁ってことな
それに比べればffmpeg叩くかlibavformat/libavcodec直接叩くかは些事です >>260
数時間もhttpセッション開きっぱなしがデフォルトってのは愚かだと思うよな。
非同期で処理させんと。 aacが利用できなくなった
ffmpeg -formats で確認すると
D A aac ってなってる
あと、libfaadってのが見つかった
これも
D A libfaad でencodeできない
>>262
faacはnon-free認定された
faadはデコーダ
各種ディストリの含まれるffmpegやmencoderからfaacサポートが外されてる 俺は自分でコンパイルすることにした。
パフォーマンスは落ちるのだろうが、
ライブラリの依存関係面倒だから仮想マシン一つをffmpeg用にした。
>>264
そっちの方が遙かに面倒だろ。
ffmpeg使いは変態が多いな。 >>265
たった一つの野良ビルドの性で再インストールを余儀なくされるときもあるわけでな。 >>267
それも踏まえて、仮想マシンなりコンテナなりで環境を隔離した方が結果的に安くつく。 >>266
まぁ、好きにしてくれ。ただ、
> 再インストールを余儀なくされるときもある
それはない。
フリーなAACエンコーダの実装って無いのかな?
特許問題についてはどうしようもないけど 試行錯誤していると再インストールしたくなる状況にはなるなw
ffmpegでコーデック関連で問題が出る。いろんなファイル扱っていると必ずおきる
ある動画はうまくいくが、ある動画はだめとかね。
正常にエンコードできるバージョンや組み合わせを試行錯誤して探さなきゃならない。
そういう場合に、ffmpegだけをアップグレードしたくなる。
だがffmpegを消すと関連コーデックも一緒に消える。
関連コーデックが消えるとVLCやmplayer(mencoder)も消さなきゃいけなくなる。
非公式のリポジトリやソースから無理やり入れるとバージョンが違うなど言われる。
GUIでの動画再生プレイヤーにも影響が出る。リポジトリから入れられなかったり。
結果的に、何個もあるコーデックからプレイヤーまで全部ソースからコンパイルするはめになる。
そんな状態だと、OSのバージョンアップで依存関係で問題が出る。
HDD故障などでOSから再インスコする必要になったら今までの手順全部やり直し。
メモを残しているがすごく大変な作業。仮想マシンならエンコード用に安定させた環境をOSごと保存しておける。
前の環境をとっておくから、ffmpeg等の新バージョンが出たときの実験も楽。最新ソースコードも安心して利用できる。
ホストOSはディストリ配布の安定した環境をそのまま使える。
デスクトップ環境があってLinuxで動画再生とかしたいのなら
エンコードは専用マシン(仮想マシン)を用意したほうがいい。 普段 Linux 使いじゃないんですけど、システムが標準提供している libz, libbz2, libpthread 等の
ライブラリ以外は全部スタティックリンクにするとか、ライブラリをビルドするときに --prefix を
変えてインストールしてそこのパスを -I だの -L だので指定するとかで、依存関係の問題を
回避することはできないんでしょうか? >>270
ffmpeg自体に実験的なaacエンコーダが実装されてる(>>68)。
開発も遅いながら進んでるので、興味あるならML覗くと良いよ。 >>272
今時依存関係で問題抱えてるのなんて低能だけだ [NULL @ 0x3f550]Invalid and inefficient vfw-avi packed B frames detected
[NULL @ 0x17cfc50]error, non monotone timestamps 100 >= 100
[avi @ 0x3e3d0]max_analyze_duration reached
こういうメッセージの意味の説明があるページってどっかにないですか?