エンコードソフト ffmpeg のスレ
公式サイト http://ffmpeg.org/ どうもこれでエンコードしたら、ファイルサイズがでかくなるんだがorz >>543 メーラーの調子が悪いのかサーバーの問題なのか連絡が取れませんでした… でも助かりました、有難うございました ここ数日のgitはffaacが使い物にならない core吐いて死ぬレベル ソフトウェア板の方では答えてもらえなかったので質問させてください ffmpegを使って MP4等の動画ファイルにBGMを入れたいのですが可能でしょうか? >>546 ffmpegって編集ソフトじゃなくて変換ソフトなんで本来的にはちょっと違うんだが 無理やりやればできんこともない。 例えば、時間的長さが同じ動画ファイル movie.mp4 と 音声ファイルbgm.mp3があったら $ffmpeg -i movie.mp4 -i bgm.mp3 out.mp4 で、出力されたout.mp4ではmovie.mp4の動画に、bgm.mp3の音声が合成される。 (まぁここでビットレートとかは考えてないので他のオプションで調整は必要だが) X11grabならぬDirectXgrabができるようになればDxtoryもXsplitもなしで ffmpegひとつでPCゲームの配信ができるようになるんだが フォーラムに書き込んだらこれが実装される可能性がでてきたりするんだろうか フォーラム? MLとIRCしかないぞ あと開発者にはWindowsユーザーは一人もいないから、自分で書かないとまず無理よ 「DirectXgrab」を実装しようとしたらLFSできるくらいの知識がないと話にならなさそうだな 簡単ならとっくの昔に誰かがゲーム配信用ffmpeg+それ用のフロントエンドを作ってるだろうし GPUを使えば、エンコードが 圧倒的に速くなるわけだが、 ffmpegのGPU対応をどうなってるの? あんまりやる気が感じられないんだが。 優先度、最重要なのに cross platformがウリなんだから、そう簡単にできんだろう。 ■ エンコードジョブをキューに追加するコマンド(負荷80%以下で実行開始) $ at -q b -f encode-batch.sh NOW x264がようやくOpenCLに手を出し始めたが GPGPUってそこまで開発が難しいものなのだろうか ffmpegを使ってバッチにて変換を行っています。 一部の録画にて「720x480」を含むデータの変換でコケテしまいます。 何か良い回避方法はないものでしょうか??? -y -threads 2 -i "*****.ts" -vcodec libx264 -aspect 16:9 -s 720x480 -b 1152k -maxrate 1536k "*****.mp4" >>556 -f mp4 をつけてみる。 あとエラーメッセージをほぼ完全に晒さないとレスがつかないよ。 >>557 何を書けばいいかよく判らないけど、とりあえず。 PES packet size mismatch [mpeg2video @ 024F81E0] ac-tex damaged at 24 29 [mpeg2video @ 024F81E0] Warning MVs not available [mpeg2video @ 024F81E0] concealing 45 DC, 45 AC, 45 MV errors [aac @ 024F5D60] Input buffer exhausted before END element found Error while decoding stream #0:1: Error number -1 occurred frame= 204 fps=4.1 q=-1.0 Lsize= 29453kB time=6.81 bitrate=35446.7kb =10 drop=0 video:864kB audio:28252kB subtitle:0 global headers:0kB muxing overhead % 多分この辺りだと思うって所を抜粋してみました。 >>558 ファイルはできてると思うけど動画と音声のサイズが変なのと、ffmpeg のバージョンが古いように見える。 以下は約24分半のエンコード結果の例 frame=44021 fps= 8 q=-1.0 Lsize= 305418kB time=00:24:28.43 bitrate=1703.8kbits/s dup=13 drop=0 video:286587kB audio:17413kB global headers:0kB muxing overhead 0.466310% バージョン: ffmpeg version 0.10.2 Copyright (c) 2000-2012 the FFmpeg developers built on Mar 20 2012 04:07:59 with gcc 4.6.0 20110603 (Red Hat 4.6.0-10) >>558 最新版gitバージョンで再試験 ディストリビューション添付版なんてカビが生えてるバージョン使うんじゃないぞ 0.10系の最新版は0.10.4だ 0,11系も出てるし、git試してみてもいいんでない CUDA/OpenCLはGimp,Handbrake,VLCくらいしかOSSで対応してるのはないらしい それほどまでに難しい代物なのか。売り物の動画を扱うソフトは皆対応してるのに >>562 MPlayerでも今まで何度かパッチは送られてるんだけど、 コミッタが気に入らないから放置プレイ って何度もやってる VLCでのVAAPI対応はイマイチ デインタレース処理をVAAPIでやってくれないから片手落ち 配信は非力なlinuxでffserverで行い、エンコードは高性能なwindowsからFFMPEG_Launcherで行うということはできますか? 可能。 linux<->win間をTCPで繋げればよろし カメラから連続して出力された画像を、リアルタイムにffmpegで動画にしたいんですけど、 カメラが画像を出力する速度が明るさによって変動する(9〜30FPS)場合、ffmpeg側のオプションで変動FPSに対応することできますか? Win98(Pentium MMXなし)なマシンでH264の動画をデコードするために、このマシンで動作するffmpegをビルドするにはどうしたらいいかヒントを教えてください。 逆に質問 そのマシンであと何十年戦うつもりですか? MinGW-5.1.6(GCC-3.4.5)とmsys-1.0.10(sh.exeをbashのものと入れ替え)をインストール、ffmpeg-0.5のソースを展開。 msys上で ./configure --enable-w32threads --cpu=i586 --disable-mmx --disable-sse --enable-memalign-hack 後 各サブディレクトリでmakeしたあと親ディレクトリでmake、でできた。 あとWin98では、ffmpegでrawvideoにデコードしたaviファイル再生にはyuvcodecsが必要でした。 ffmpegであるflvファイルから、映像をrawvideoコーデックのaviファイルに、音声をwavファイルに同時に切り出したいんだけど、 ffmpeg -i hoge.flv -f avi -vcodec rawvideo hoge.avi hoge.wav とすると「音声付きの」aviファイルとwavファイルが出来てしまうし、-anオプションを使うとwavファイルに含まれるストリームがないといってエラーになってしまう。 なにかいい方法はないかな? ubuntu12.04を入れなおしてffmpeg最新版をgitからmake installかけて入れたのはいいけど、ffmpeg-phpって使えなくなったの? phpize->configureからのmakeで ffmpeg-php.c:94:5: warning: implicit declaration of function 'avcodec_init' [-Wimplicit-function-declaration] なんてエラーが出てくるし、ぐぐったら「ffmpeg-phpとかクソ古いしそんなの使わないでexec叩いて結果持ってこいよバーカ」みたいな記事しか見つからないんだが。 ffmpeg version 1.2.1 ×ts -> ts にシェイプする速度が残念なくらいにゆっくりになった。 ×mp4 640x360 25fps でのエンコードでセグメンテーション違反でたまに落ちる。 ◎mp4 へのエンコードは1〜2割速くなった。 >>553 ■ エンコードジョブをキューに追加するコマンド $ echo "encode-script.sh hogehoge.ts"|at -q b now ttp://ffmpeg.org/ffmpeg.html#Optionsを調べたのですがファイルの種類の変換はあったのですが、圧縮方法は見つけれませんでした。 hoge.mp4(300MB)ぐらいのファイルがあり、それを音声の質はなるべく落とさずにサイズを出来れば100~50MBぐらいに圧縮したいと思っています。 中の映像はパワーポイントのスライドなので多少質が下がっても読めれば問題ないのですが。 ffmpeg -i input.mp4 -vcodec msmpeg4v2 -acodec copy output.mp4 を見つけたのですが、音声の質などはどうなんでしょうか? >>576 そのコマンドだと音声は変わらない モノラルにするとか、ビットレート落とすとかしないと >>576 ffmpeg -i hoge.mp4 の結果を晒してくれ。 >>577 なるほど。ビットレードですか。調べてみます。 >>578 了解です。 ffmpeg version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, Copyright (c) 2000-2013 the Libav developers built on Apr 2 2013 17:00:59 with gcc 4.6.3 *** THIS PROGRAM IS DEPRECATED *** This program is only provided for compatibility and will be removed in a future release. Please use avconv instead. Seems stream 1 codec frame rate differs from container frame rate: 1200.00 (1200/1) -> 30.00 (30/1) Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '2013_02_20.mp4': Metadata: major_brand : mp42 minor_version : 1 compatible_brands: mp42avc1 creation_time : 2013-02-20 07:22:40 Duration: NY:AN:NY.AN, start: 0.000000, bitrate: 425 kb/s Stream #0.0(eng): Audio: aac, 32000 Hz, mono, s16, 63 kb/s Metadata: creation_time : 2013-02-20 07:22:40 Stream #0.1(eng): Video: h264 (Main), yuv420p, 1024x768, 360 kb/s, 3.02 fps, 30 tbr, 600 tbn, 1200 tbc Metadata: creation_time : 2013-02-20 07:22:40 At least one output file must be specified アスペクト比は、オリジナルのままなら適宜修正して下さい。 ffmpeg -i hoge.mp4 -f mp4 -vcodec libx264 -vsync 1 -map 0:1 -r 2 -aspect 16:9 -s 1024x576 -vb 256k -bufsize 5000k -bt 1024k -maxrate 3M -map 0:0,0:1 -acodec aac -strict experimental -ac 1 -ar 32000 -ab 32000 -y shaped-hoge.mp4 -vb 256k を -vb 43k に修正して下さい。 >>581 ありがとうございます。試してみます。 後で結果報告したいと思います。 582です。 圧縮された動画の結果は良好です。ありがとうございました。 >>584 遅くなってすみません。 出力されたファイルは約六分の一とかなり小さくなっています。 これで容量がなんとか確保出来そうです。ありがとうございます。 画質的にWindowsのAviUtlとかプラグイン山盛りのツールより 綺麗にだせるの? 質問です 前後録画のドライブレコーダーを買ったのですが 前後別々のmp4ファイルに録画されています これを前後の動画を同時に見れるように1本結合したいと思っています 前の動画が front.mp4 (640x480)で音声有り 後ろの動画が rear.mp4 (320x240)で音声無し として 940x540(16:9)にして、前は上下30pxずつ後ろは110pxずつ 黒帯をつけて、左側を前の動画、右側を後ろの動画にしようと思いました で、まず以下のように 2つの動画に変換しました ffmpeg -i front.mp4 -vf "pad=0:540:0:30" -acodc copy tmp1.mp4 ffmpeg -i rear.mp4 -vf "pad=0:540:0:110" -an tmp2.mp4 これを左側にtmp1、右側にtmp2と結合したいのですが やり方がわからないので教えてください もし、これらを一発でできるような方法があれば それを教えていただけると助かります ステレオ動画みたいに異なる動画が左右同時再生されているものを作りたいのかな そういう編集みたいなことは↑のaviutlなんかがやりやすいはずだけど ttps://trac.ffmpeg.org/wiki/vfxEncodingGuide#Monovs.Stereo この辺り関係ないかな? mapを使うとマルチトラックになるので 確かにステレオ動画にはなるけど 動画の結合とは異なる感じかな 自己解決できたくさいので報告です 左側映像はそのままで、右側映像を左を乗せれるように配置 ffmpeg -i rear.mp4 -vf "pad=960:540:640:150" -an tmp1.mp4 そこに左側映像を overlay ffmpeg -i tmp1.mp4 -i front.mp4 -filter_complex "overlay=0:30" out.mp4 これで行けました 何かもっとうまいやり方がありそうですが… 方法はそれでいいけど、エンコは一回にした方がいいでしょ 中間ファイルを無劣化にするのも一つのやり方だけど ここにコマンド一回でのやり方が色々載ってる http://ch.nicovideo.jp/nico-lab/blomaga/ar5633 あと、avisynthで映像を作って、ffmpegに食わせるって方法もあるよ >>593 ありがと 実はソコは見たんだけど意味がちんぷんかんぷんだった avisynthも理解できずに苦しんでます おはようございます! エンコード後のファイル名に、フレームレートの値を入れるには、 どのようなコマンドを記述したらよいですか? ○○ [29.97fps].mp4 みたいにしたいの。 >>596 自動判別して、一括リネームする方法があるの?? >>597 >>595 の文章にはファイル名を変更したいって事しか書かれて無いので rename コマンドか、mv コマンドで好きに変更しろって回答にしかならんだろ 自動判別とか、一括リネームなんてどこから沸いて出たわけ? 自動判別したいのであれば、例えば↓でとあるファイルのfpsはわかるよね ffmpeg -i nantoka.mp4 2>&1 | perl -nle 'print $1 if(/([\d\.]+) fps/);' 後は一括リネームするスクリプトでも組めばいいんじゃないかな >>598 ありがとうございますー 自分には勉強する必要がありそうなので、 出直してきます。 ffmpegでラジコを受信してffplayで音を出していますが、ピッチを変えるオプションが見つかりません。 mplayerで言うところの-speedのオプションに該当するものはないんでしょうか。 よろしくおねがいします。 くだ質で、undefined 拡張子を持つファイル(動画)について質問し ffmpeg に放り込めば元ファイルの拡張子がわかるんじゃないかと アイデアをもらったのですが どのようなオプションをつければ良いでしょうか >>607 ffmpeg -i ファイル名 mediainfoの方がわかりやすいと思うけど。 ここ、ffmpeg のスレだから、windows の人かも知れないけど、 linux 板だから、file コマンドの方が楽だよな。 $ file file-name or $ file --mime-type file-name とかのほうが、シンプルで ubuntuだとavconvがこれからメインになるそうですが皆さん使ってます? 質問するスレがないので困ってます。 コマンドの名前がかわるだけだと思ってたけど違うの? レスありがとうございます >>614 引数をそのまま流用しようとして実行するとエラーになることがあります。 フォークしたようなので、将来的には互換性がなくなると思います。 `いやなら ffmpeg を使いつづければいいんでしょ。 puppyでffmpegのアップデートするにはどうすればいいですか? 今のpreciseだと ffmpeg version 0.8.5-4:0.8.5-0ubuntu0.12.04.1ですが最新版にしたいです よくわからないけど、ubuntu static build 版をfedoraで使ってる。 速くていい感じです。 >>620 ソース取ってきてmakeすりゃいいんじゃない。 0.8.5とか化石もいいところ 今って2.1とかなのに 最近のだと簡単にmakeできるんだな 以前かなり苦労したと思ったけど公式の通りに処理したらできたわ ちょっと拍子抜けしたがやっぱり良い物は良いということか… >>624 必要なライブラリが揃ってれば比較的楽にできる。 ライブラリの構築から始めても難しくは無いんだけど、数が多いんで手間はある程度かかるからなぁ >>625 apt-get build-dep hogehoge aptなら必要パッケージはすぐ入る >>626 aptのリポジトリより新しいもの使いたいってことだろ。 ビルドツールの類なんかは古いバージョンが依存しているものでも変わらないかも知れないけど。 dlしたfile(flv)を再生(vlc、totem)するさい音声が乱れるのですが 対処する方法はありませんか >>629 さすがにそれだけではエスパーできないと思うけど・・・。 このスレで質問するって事は、ffmpeg使えるだろうから、 とりあえず、コンテナ変えて再生してみたら? #変換前の出力 ffmpeg -i in.flv Input #0, flv, from 'Videos.flv': Metadata: metadatacreator : Yet Another Metadata Injector for FLV - Version 1.2 hasKeyframes : true hasVideo : true hasAudio : true hasMetadata : true canSeekToEnd : false datasize : 1007515328 videosize : 902933307 audiosize : 103022777 lasttimestamp : 7079 lastkeyframetimestamp: 7078 lastkeyframelocation: 1007633459 Duration: 01:57:58.91, start: 0.000000, bitrate: 525 kb/s Stream #0.0: Video: flv, yuv420p, 480x360, 412 kb/s, 12 tbr, 1k tbn, 1k tbc Stream #0.1: Audio: aac, 44100 Hz, stereo, s16, 112 kb/s At least one output file must be specified #変換後の出力 ffmpeg -i out.mp4 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'out.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2mp41 encoder : Lavf53.21.1 Duration: 01:57:59.00, start: 0.000000, bitrate: 381 kb/s Stream #0.0(und): Video: mpeg4 (Simple Profile), yuv420p, 480x360 [PAR 1:1 DAR 4:3], 200 kb/s, 12 fps, 12 tbr, 12 tbn, 12 tbc Stream #0.1(und): Audio: aac, 44100 Hz, stereo, s16, 199 kb/s At least one output file must be specified #結果。改善無し、むしろ悪化でした。 変換中、"Error while decoding stream #0.1 [aac @ 0x81f5d40] channel element hoge.hoge is not allocated"っとエラーの連続でした さて、困った。元ファイルをネットでストリーミングしても何も問題が無いのに… スローモーション化する変換例をおしえてくれ。 ググったけど見つけられなかった。 >>633 ... -vf "setpts=1/0.75*PTS" -af "atempo=0.75" ... ffmepg 速度変更 でググったら、出てきたよ。 「ニコニコ・・・」さんを参考にしたけど 細かい制限とかはググった結果見てね。 >>634 ありがとうございます。 うちは MacOSX 環境下の ffmpeg version 2.1.3 (via MacPorts) なのですが、-vf オプションが効きません。 ググって、yuv ファイルに出力してから -r オプションでフレームレートを設定する方法を見つけ、こちらの 方法で無事スローモーション動画に変換することができました。 Raspberry Pi上でffmpegを使って1280x720、5fpsで連続撮影した1時間分のjpegファイルを 640x360にリサイズしてmjpegに変換したら、できあがった動画の画質がモザイクだらけの 悲惨な結果でした。 以下が指定したパラメータです。 ffmpeg -r 5 -i hoge_%08d.jpg -vcodec mjpeg -f avi -sameq -s 640x360 hoge.avi なるべく元のjpeg画質から劣化せず動画に変換するおすすめパラメータがあれば教えてください。 >>637 "-sameq" は古いオプションだから動かないのもあるかも "-q:v 0" か "-qscale[:v] 0" を使えば満足いくと思うよ >>638 ありがとうございます。 教えていただいたパラメータで期待する動画ができました。 qmin 10と qmax51です 動きのある部分がブロックになるので画質上げたいのですが min maxとも上げればいいのですか? 上に書いてました、ビットレート触らないとあまり変わらないみたいですね この設定ですが、ビットレートがないのです、どこお触れば画質が良くなるのでしょうか? coder=1 flags=+loop cmp=+chroma partitions=+parti8x8+parti4x4+partp8x8+partb8x8 me_method=umh subq=8 me_range=16 g=250 keyint_min=25 sc_threshold=40 i_qfactor=0.71 b_strategy=2 qcomp=0.6 qmin=10 qmax=51 qdiff=4 bf=4 refs=4 directpred=3 trellis=1 flags2=+bpyramid+wpred+mixed_refs+dct8x8+fastpskip 以前WindowsでMediaCoder使ってたときはソースがVFRの変換でかなり苦労した記憶があるんだけど FFmpeg(avconv)だと特別何もしなくてもあっさりCFRにできてることに気付いた これからも便利に使わせていただきます。ありがとう! read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる