エンコードソフト ffmpeg のスレ
公式サイト http://ffmpeg.org/ どうもこれでエンコードしたら、ファイルサイズがでかくなるんだがorz でも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 こういうメッセージの意味の説明があるページってどっかにないですか? 同じコマンド実行しているのに、成功したりしなかったり。 失敗したときは、もう一度実行しても失敗する確率が高いのに 3回目に成功する確率は高い。 不思議すぎ。 複数のJPEGからSWF作ったんだけど、これってJPEGは何でエンコードされてるの? ffmpegでゲームflashから画像抽出は出来ないんでしょうか? 動画なら抽出出来るのですが、ゲームだと出来ません ffmpeg -y -i me2.swf -f image2 -ss 00:00:01 -vframes 1 aa2.jpg ↓ [swf @ 0x18643d0]Compressed SWF format not supported 圧縮しているSWFを解凍 cd ffmpeg cd tools gcc -o cws2fws cws2fws.c -lz ./cws2fws me2.swf me42.swf ↓ 解凍したSWFで再挑戦 ffmpeg -vframes 1 -ss 1 -i me42.swf -f image2 aa2.jpg [swf @ 0x24173d0]max_analyze_duration reached [swf @ 0x24173d0]Estimating duration from bitrate, this may be inaccurate me42.swf: could not seek to position 1.000 Input #0, swf, from 'ume42.swf': Duration: 00:07:19.36, bitrate: 127 kb/s Stream #0.0: Audio: mp3, 44100 Hz, 2 channels, s16, 128 kb/s Output #0, image2, to 'aa2.jpg': Output file #0 does not contain any stream 解析は出来るようですが、画像出力が出来ません これはどうしたらよいでしょうか?圧縮した状態もしくは、解凍後のSWFから画像出力させる方法分かる方、 いらっしゃいましたらどうぞよろしくお願いします<m(__)m> あと、抽出した画像のサイズを例えば、300×300以内に納めるサムネイルって出来ますでしょうか? 縦長の画像でもそれに寸法を合わせてちゃんと縮小してくれるようにしたいのです。 合わせてどうぞよろしくお願いします<m(__)m> ffserverを使ってRTPで配信したとき、パケットロスを 再送によって回復してはくれないですよね? ffserver.conf に関するドキュメントでは以下のフォーマット # Format of the stream : you can choose among: # mpeg : MPEG-1 multiplexed video and audio # mpegvideo : only MPEG-1 video # mp2 : MPEG-2 audio (use AudioCodec to select layer 2 and 3 codec) # ogg : Ogg format (Vorbis audio codec) # rm : RealNetworks-compatible stream. Multiplexed audio and video. # ra : RealNetworks-compatible stream. Audio only. # mpjpeg : Multipart JPEG (works with Netscape without any plugin) # jpeg : Generate a single JPEG image. # asf : ASF compatible streaming (Windows Media Player format). # swf : Macromedia Flash compatible stream # avi : AVI format (MPEG-4 video, MPEG audio sound) が使えることになっているのですが、これらのフォーマットは データの途中がロストしてもまたデータが届くようになれば 回復できる、ということなのでしょうか? それができないとシークすらできない変フォーマットじゃん。 >>286 ffserverでは試したことはないが、 RTP (UDP)の仕組みでいうと確かに再送などで回復をしてくれたりすることはない。 その代わりに、どのメディアフォーマットであってもフレームの始まりは 途中からでも見つけられるような構造になっているので、データが途切れたときは フレームの開始位置まで読み捨てて、そこから再度表示し直す。 また、ストリーミングでは完全フレーム(単体で完結するフレーム)だけでなく 差分フレーム(前のフレームから変化した場所だけを送るもの)で転送する仕組みが あるが、この場合は一般に完全フレームが届くまで読み捨てることになる。 (実装やプロトコルによっては差分だけでも表示してしまうものもあるが、 この場合は真っ黒な画面から部分的にうごめいて見えたり、おかしな表示に なったりする) cfrのソースをx264でmp4出力したものをffmpegでmp4にmuxし直すと 最大fpsがソースのfpsの2倍 最小fpsがソースのfpsのまま のvfrになってしまうんですがどうすればいいでしょうか? あまり弊害はないとは思うのですが、cfrのままにしたいです 使用しているx264はr1391(x264.nlビルド)、ffmpegはgit-svn-r21221(自ビルド)です あの…何か根本的に勘違いでもしてるのでしょうか…?orz そうだとしたらご指摘していただけるとありがたいです それともIRCで聞いた方がいいのでしょうか?(英語が残念なもので… Stream #0.0: Video: rawvideo, yuv420p, 1920x1080, 745750 kb/s, 29.97 tbr, 1000k tbn, 29.97 tbc このtbr,tbn,tbcてどういう意味? >>291-292 仕方がないので翻訳してやったぞ。 --- ffmpegでは3種類の異なるタイムスタンプがある。表示されている値は逆数で、 それぞれ1/tbr, 1/tbn, 1/tbcが実際のタイムベースになる。 tbnはコンテナ側に書かれたストリームのタイムベース。 tbcは特定のコーデックだけに存在するコーデック側のタイムベース。 tbrはビデオストリームから類推された値で、これが実際にビデオを表示する際に 使用されるレートになる。ただしインターレース化されたストリームのように、 画面の半分ずつ書き換えるタイプの場合は2倍の値が書かれている場合がある。 >>293 ありがとう!参考にさせていただきます! ∠(゚◇゚) 地デジキャプチャしようとしてるんだけど ffmpeg で640x480以上サイズあげると緑色になってしまうんだけどなんで? 現状 Centos5とCentos4 >>295 地デジの解像度って640x480だし。 >>296 1440x1080とか1920x1080ではなくて? int sws_scale(struct SwsContext *context, uint8_t* srcSlice[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t* dst[], int dstStride[]); ffmpegのバージョンは0.5 そもそも -f video4linux2 で画面が表示されないんだよね 黒でも緑でもない灰色画面になる カーネルあげたら何か更新されてるのかなと思って 2.6.18->2.6.30に更新したけど変化なしで相変わらず-f video4linux2が使えない CentOSだからってわけなのかな? とりあえず今Fedora12でやってみる これで駄目なら引き伸ばして高繊細化のプログラム作るしかないような気がする 5.1chのオーディオを別形式に変換するとチャンネルアサインが狂うorz なんでアサイン変換してくれないんだよ面倒すぎるわ read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる