ffmpegならこちらへ 3 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
公式サイト
http://ffmpeg.org/
エンコード、ストリーミング配信を高画質高音質で行えるffmprg。
OSに拘らず対応コーデックが多い。
対応コーデックが多く、多彩なオプションを使用可能。
コマンドラインから使用することができる。
ffmpegならこちらへ 2
http://potato.2ch.net/test/read.cgi/software/1420916868/ >>656
ありがとうございます。
試してみたのですが
文字が表示されないのですが・・・・
>最初の60秒を非表示
タイムライン編集で60秒たつとフィルタが有効になる
>分と秒が別フィルタになるので座標指定正しくしないとずれる
drawtext=fontsize=30:box=1:boxcolor=white@0.5:fontcolor=black:fontfile='C\://WINDOWS/Fonts/arial.ttf':text='%{eif\:trunc(t/60)\:d}m':enable='gte(t,60)',
drawtext=x=42:fontsize=30:box=1:boxcolor=white@0.5:fontcolor=black:fontfile='C\://WINDOWS/Fonts/arial.ttf':text='%{eif\:mod(t\,60)\:d}s'
コマンド例
ffmpeg -r 50 -i input -vf setpts=PTS*2,"drawtext=fontsize=30:box=1:boxcolor=white@0.5:fontcolor=black:fontfile='C\://WINDOWS/Fonts/arial.ttf':text='%{eif\:trunc(t/60)\:d}m':enable='gte(t,60)',
drawtext=x=42:fontsize=30:box=1:boxcolor=white@0.5:fontcolor=black:fontfile='C\://WINDOWS/Fonts/arial.ttf':text='%{eif\:mod(t\,60)\:d}s'",setpts=PTS/2 out.mp4 >>658
しょへええ、うまくいきました
ありがとうございます。
詳しいお方なので、もう一つ質問してもよろしいですか?
30fpsの動画を倍速再生したい場合
-iの前に
-r 60
のように、元の動画のfps2倍した数値を入れると
うまくいきました。
もし毎回30fpsと決まっていたら良いですが
そうでない場合、予めffprobeなどで動画のfpsを読み込んでから
その読み込んだfpsの二倍するようにするコードを書いています。
ただ、あまりエレガントではないのですが
-r PTS*2
のように、一つのコードだけで完結したいのですが
そのようなことは可能でしょうか?
>>660
ありがとうございます。
やはりそうでしたか・・・
ちなみにあと、
02m06s
のように数値を二桁表示にしたい場合、
>>658で教えていただいた通り、
enableで分岐して
数値の前にゼロを付けるしかないですか?
よろしくお願いいたします。 text='%{eif\:trunc(t/600)\:d}%{eif\:trunc(t/60)\:d}m%{eif\:mod(t\,60)\:d}s' >>662
ありがとうございます。
そのままのコードでは
00m2s
のようになってうまくいきませんでしたが、
自分で工夫することでうまくいきました。
しかし、やりたいことはこんな単純なことなのに
ここまで複雑な数式コードになるとは思いませんでした・・・
重ね重ねありがとうございます。
あと、ちなみに
drawtextで
https://cdn-images-1.medium.com/max/500/1*gG2v3ukvYEtI7uLx1-5pQQ.jpeg
この画像みたいに白い文字列の周りに黒い影を付けたいのですが
可能でしょうか?
https://ffmpeg.org/ffmpeg-filters.html#drawtext-1
オプションを見てみると
shadowcolorというものがあるので
shadowcolor=blackと指定してみたのですが
影が表示されないのですが
どのようにしたら良いですか?
shadowxやshadowyも使ってみたのですが
このオプションを使用すると文字列が表示されなくなるのですが・・・
一体どうすれば良いですか?
誰かlibvmafが有効になったffmpegのバイナリをアップしてくれませんか
>>515のビルドスクリプトを使っても何故かVMAF算出時にクラッシュするバイナリしか出来なくて困ってます shadowcolor はテキストの影の色なので完全に縁取り(影の大きさが違うから)は出来ない
ffplay -f lavfi -i color=888888,drawtext=fontsize=30:shadowcolor=black:shadowx=2:shadowy=3:fontcolor=white:fontfile='C\://WINDOWS/Fonts/arial.ttf':text='aiueo' >>666
ありがとうございます。
そうでしたか
提示してくださったコードは何のコードでしょうか?
私の環境だと
shadowx=2:shadowy=3
を使うと文字が表示されなくなるのですが・・・ 右に2ピクセル、下に3ピクセル、shadowcolorで指定した色を
text, textfile で指定したテキストの背景に影を付ける
ttp://imepic.jp/20180614/835370 >>664
縁取りはborderwとbordercolorでできる 音声ミックスについて教えてください。
以下の内容で、映像+PC音+マイクを合成しようとしているのですが、
PC音がなっていないときはマイクの入力が無視されるようです。
マイクもPC音も撮れるようにしたいのですが、どのような引数にすると撮ることができるのでしょうか。
【現在】
-rtbufsize 40MB -f dshow -i video="screen-capture-recorder":audio="virtual-audio-capturer"
-f dshow -i audio="マイクデバイス" -filter_complex amix -async 100 -pix_fmt yuv420p -tune zerolatency
-y -f mp4 -c:v libx264 -b:v 2500k -r 30 -c:a aac "C:\test.mp4"
※WMVにしても同じ現象でした。 同じく音声ミックスで誰かお助けを。。
調べまわったが解が出てこなかったです。。
Lch.wav Cch.wav Rch.wav という3つのモノラルファイルを1つの3chファイルにミックスしたいのです。
どなたかやり方わかる方いましたら教えて頂ければ助かります、、 Manipulating audio channels
https://trac.ffmpeg.org/wiki/AudioChannelManipulation
6 × mono → 5.1
Combine 6 mono inputs into one 5.1 (6 channel) output with the amerge audio filter:
ffmpeg -i front_left.wav -i front_right.wav -i front_center.wav -i lfe.wav -i back_left.wav -i back_right.wav \
-filter_complex "[0:a][1:a][2:a][3:a][4:a][5:a]amerge=inputs=6[aout]" -map "[aout]" output.wav
All inputs must have the same sample rate and format. If inputs do not have the same duration the output will stop with the shortest. エスパーするとこうかなあ
>ffmpeg -i Lch.wav -i Rch.wav -i Cch.wav -filter_complex "join=inputs=3:channel_layout=3.0" 3ch.wav DARU/CHANNEL-MASTERでch結合とか >>674
語彙力足りてなくて申し訳ないです。
要するのmono(1ch)ファイル3個をミックスしてLCR(3ch)の1個のファイルにしたいという意味です。
この時それぞれLのファイルはLch、CのファイルはCch、RのファイルはRchとしてミックスしたいという意味です。
>>675 >>676
おお!これでいけるかも、、
トライしてみます! できた。。。あなたが神か。
一週間くらい悩んでたので助かりました。
ありがとうございました! >>679
676ので左とか右とか属性つくの?
単に3つ混ぜただけだとうまく2.1ch的に再生できるのかな? channel_layout=3.0 と-iを並べる順番が大事
詳しくは ffmpeg -layouts を参照 6桁のファイル名がついたシーケンス画像から動画を生成したいんですが、入力画像の拡張子の種類がそれぞれシーケンスでpng/jpg/jpeg/gifの4パターンあります
それぞれの拡張子を記述したバッチでは正常に変換できます
全ての拡張子に対応したバッチにしたいので、入力ファイルを拡張子をワイルドカード[%06d.*]で表現してみましたが画像ファイルを読み込んでくれません
ffmpegで拡張子をワイルドカードで指定するのは無理ですか
ffmpeg -r 30 -i %06d.* -vcodec libx264 -pix_fmt yuv420p out.mp4 そんなことよりも、imagemagickとかで先に画像形式を統一させる方が早いんじゃねーかと思う ttps://ffmpeg.org/ffmpeg-formats.html#image2-1
> 3.10 image2
> The size, the pixel format, and the format of each image
> must be the same for all the files in the sequence.
複数の画像を動画にするには形式をそろえないとダメみたい >>684
情報ありがとうございます
>>683
graphicsmagickを入れてあるので試してみます 1920x1080のサイズの動画があったとして
FFMpegを使って、
動画の周りに10ピクセルの黒い枠線をつけて
1940x1100のサイズの動画を作成したいのですが
どのようにすれば良いですか? -vf fillborders=left=10:right=10:top=10:bottom=10:mode=fixed:color=pink Raspbianのaptにはffmegなかったのにいつのまにかaptからインストール出来るようになってる いろいろ試しているのですが、、まったく解決できず、、、再度の投稿となって申し訳ないのですがマイク入力のミックス対応する方法をどなたかご存知ないでしょうか。
※いったん、マイク入力を別の音声ファイルにして後で結合してみたのですが、PC音が無音のところでのマイク入力は聞こえない状態でした 同じコマンドで音声ファイル2種類の合成してみて比較するとか。
あるいはlinuxみたいちアーキテクチャ違うPCで同じコマンド使って比較してみるとか。
USBメモリとかDVDブートならすぐ試験環境作れるよ。 >>688
ありがとうございます。
うまくいきました >>688
すいません、できたと思ったのですが
1920x1080だったとしても
出力された動画も同じく1920x1080なので
黒く塗りつぶした部分の動画が隠れてしまうのですが・・・
予め解像度を1940x1100に上げるにはどうすれば良いですか? 試したわけじゃないけど
-s 1940x1100
で出来ないか? >>694
うまくいきました。
ちなみに、解像度が固定だったら良いですが
どんな解像度のファイルが来るか不明の場合
毎回、ffmpegかffprobeで解像度を調べる必要がありますが
元の解像度から+20するみたいな設定はできないでしょうか?
ffprobe -1 file.mp4 -show_streams -printformat json | jq .streams[].width
後半はうろ覚え
jsonで動画情報書き出して、それをパースして数字だけにしてシェルスクリプト で加算するように組むとか
ところで便乗質問だけど、-s オプションと-vf scale オプションの違いって何でしょうか。 というか余白付けるんならpad使うんじゃないの?
今はFFmpeg試せないからオプションは提示出来ないけど >>695
まだ見てるか分からんけどこれはどう?
ffmpeg -i "%~1" -vcodec utvideo -vf "pad=iw+20:ih+20:10:10" "%~dpn1_pad.avi" >>698
しょへえええ
パーフェクトでした
ありがとうございます。
アップデートのオプションってある?
youtube-dlの-UみたいにDLして更新ファイルの差し替えまでやってくれるやつ chocolateyでバージョン管理すればいいかと
choco upgrade ffmpegで一発 ffmpegは勝手にアップデートされると怖い。
互換性無視のオプションとかを仕込まれたことが何度あったことか。 >>700
"pad=iw+20:ih+20:10:10:pink"
もしくは"pad=iw+20:ih+20:10:10:adc193"のように16進数で指定
web用のページを使うと上手く色が作れるかな
https://www.peko-step.com/tool/tfcolor.html これ使いこなせたら無敵の人になれるのかな
音声抽出と動画カットくらいしか使った事ねーや 俺なんか編集はAviUtlでやって、エンコくらいでしかこのソフト使わんわ >>702
chocoって便利そうだね
ちょっと見てみる FFmpegを使った無劣化での動画のカットの方法を教えてください。
https://qiita.com/kitar/items/d293e3962ade087fd850
このページで解説されているように、
-ssを-iの後に書くと映像の存在しない真っ暗な時間が入ってしまいます。
-iの前に書くと、指定した時間とは少しずれたところでカットされてしまいます。
こちらのページにも解説されており、
http://santa.ldblog.jp/archives/41750596.html
-ssを-iの前に書いた上で
-iの後に-ss 0 を付ければ良いと書かれてあり試してみたのですが
映像の存在しない真っ暗な時間が入ってしまいます。
一体どうすれば良いのでしょうか? ffmpegのコマンドラインをすべて書く
元の動画の形式
カットした動画をどのプレーヤー(スプリッター、コーデック)で再生して確認しているかなど 上で貼ったURLそのままのコードを使っていますが。。。
ffmpeg -ss 00:10 -i D:\test.mkv -t 60 D:\test2.mkv
元の動画はOBSでエンコードしたH.264のMKVファイルです。
プレイヤーはWMP、Gom、MPCなどです。
動画のない箇所は、
MPだと、スキップされ、Gomだとフリーズした状態で、MPCは真っ暗になります。
ところで
http://santa.ldblog.jp/archives/41750596.html
にも書かれてあるようにFFMpegはキーフレーム単位でしか
無劣化カットすることができないのでしょうか?
MediaInfoで調べると
keyintは250になっています。
30FPSなので、8秒間隔でしか無劣化カットすることができない仕様になっていますか?
カットした部分だけ、再エンコードするようなことはできないでしょうか? -vcodecが抜けていました
ffmpeg -ss 4500 -i input.mp4 -t 60 -vcodec copy -acodec copy 1a.mp4 昔のことだからうろ覚えだけど確かにOBSのQSVで録画したファイルは挙動がおかしくて編集に不便した記憶がある
一回rawの.h264に分離してL-Smashでmp4に詰め替えて編集してたような >>716
-anオプションを付けて
動画のみのmkvファイルにしてみましたが
やはり8秒間隔でしかカットできないようです
raw のh264とは別の方法がありますか? >>717
スマートレンダリングはFFmpegじゃ出来ないんじゃないかな
PEGASYS社の製品を買ったらどうだろうか smart cutter ってmkvには対応していないのですよね?
Linux向けのバイナリをWSLで実行することで解決しました。
ニコラボ様ありがとうございます。 ffmpegで動画の色を赤みがかった色にするとか
青みがかった色にするのってどのオプションを使えば良いですか?
検索してもよく分からなかったので
どなたか教えてください。 >>728
そのurlに書いてあることくらいしか知らないから頑張って読み解いてもらうしかないんだけど
16個のパラメータは4個ずつRGBA順にそれぞれ対応する色をRGBA順の合成比率で指定するっていうことで
例えば赤みがかったようにするには
ffmpeg -y -i input -vf colorchannelmixer=1.5:0.5:0.5:0:0:1:0:0:0:0:1:0:0:0:0:1 output
な感じで先頭4個のR成分の設定で赤が強く出るようにするといった感じ
自分がわかるのはこんなところなで求める結果が得られるかどうかはわからないけれど
いろいろいじってお好みの調整をしてね >>729
ありがとうございます。
eq=gamma_r
で所望のことはできました
ちなみにこれって画面の中の一部だけの色を変えることってできないのでしょうか?
二つの動画を上と下で合体させるようなことってできますか? 詳しくないんだけどffmpegが廃れることってあるんですか?
今後使えなくなる可能性というか 廃れる可能性は下から数えた方が早いソフトだと思うが 長い目で見たら廃れる可能性はあるけど今時点で有力な後継があるわけでもないしな。
リスクがあるとすれば突然お家騒動的なコミュニティトラブルが発生して訳わからないままサポート消滅とかかな。
ただそうなったとしても誰か引き取るだろう。
突如有力な後継ソフトが出てきたとしても自分ならコマンドオプションはffmpegと互換性を持たせるわ。 libavが立ち上がった時はどうなるかと思ったけど、
何も変わらんかったね。 CBRの音声ファイル(PCM 24bit)をなるべく劣化を抑えてVBRにする方法ってありますか?
YouTubeの仕様で高音質のopusにするにはVBRじゃないといけないらしく色々試してみてもどうもうまくいかず... YouTubeにこの形式でアップロードしたら再エンコされないだとか高品質になるとかまことしやかに言われることあるけど裏付けあるのかね?
ちゃんとデータを示して証明してるとこ見たことないわ >YouTubeにこの形式でアップロードしたら再エンコされない
聞いたことない
>高品質になる
ttps://support.google.com/youtube/answer/1722171
これを守ってビットレートを余裕もって投稿するとしか 10年位前、ニコだかようつべだったかは忘れたけど、
確かに一定の形式を整えれば再エンコはされないという話はあって、
解説書も出版されてた記憶がある。
今はオリジナルをいろいろ再エンコしてるみたいだから、当てはまらないだろうけどね。 すみません書き方が悪かったです
YouTubde上でなるべく高音質にするためにはYouTube側で音声コーデックをopusにしてもらわないといけないのですが
↓に書いてあるとおりwav(PCM 24bit)でアップロードしてもopusにならないんです(動画コーデックがavc1音声コーデックがmp4aになります)
https://support.google.com/youtube/answer/6039860?hl=ja
https://blogs.yahoo.co.jp/nightwish_daisuki/63927709.html
このことからもしかしたらCBRなのが原因かもしれないのでなるべく劣化を抑えてVBRにしたいのです >>740
CBRだのVBRだのは全く関係ないから無駄なことはやめとけ。
Youtubeでは、
A形式.MP4(H.264+AAC) B形式.WebM(VP9+Opus)
の2つの動画形式があるのだけど、投稿してすぐ生成されるのはA形式のみ。
B形式が生成されるのは、
条件1.元映像が1440pよりも大きい場合(2160pなど)
条件2.何らかの条件を満たした場合
のいずれかの条件を満たした場合のみで、条件を満たしていない場合は、いつまでたってもB形式は生成されない。
じゃあ「条件2の詳細はどうなってんの?」というと、公式発表はされてないし、よくわからない。
YoutubeがWebM(VP9+Opus)を採用しているのは、配信ビットレートを抑えて回線コストを節約するため。
ただ、MP4に加えてWebMまで生成すると、今度はストレージコストが上がってしまうということにもなる。
条件2はこれらを踏まえてコストを最小化することを目的として考えられているだろうし、
WebMの生成状況なども踏まえて推測すると、
・その動画の再生数がある程度増えた場合
・過去に投稿した動画の再生数実績が多く、今度の動画も再生数が多くなると見込まれる場合
・ある程度長時間の動画である場合
など、様々な複合的な条件を考慮して決められているんじゃないかと思う。
また、これらの条件判定の閾値やバランスなども、随時最適化のために変更されているのではないかと思う。
そんなわけでYoutubeの投稿者にできるのは、>>738にある条件を守ってなるべく高画質・高音質で投稿することのみ。
あとはまあ・・・再生数を増やす努力をすることくらいかな・・・。
一応4Kで投稿すれば条件1を満たすからOpusも生成されるだろうけど、そのためにわざわざ4K投稿するのもねえ・・・。
そもそもぶっちゃけ多くの視聴者にとってはOpus128kbpsもAAC128kbpsも大して変わらんだろうし。
少なくとも推測を含めて俺の知るかぎりではこんなところ。あってるかどうかは知らん。 >>741に加えて
WebM(VP9+Opus)が生成される時、MP4(H.264+AAC) からなのか、アップしたものからなのかもわからん
アップしたものは、まぁストレージの無駄だから削除されてるだろうと予想する >>744
Youtubeは元動画(あるいは元動画の高画質コピー)をサーバに保存しておいて、それを元にしてエンコードしてるみたいだよ。
だから4Kサポートよりも前に4Kで投稿しておいた動画が、今は4Kで見れたりする。
あと、時々MP4やWebMをエンコードしなおすこともあるようで、それも元動画からやってると思う。 エンコードし直しで同じフォーマットコードに違う解像度当てられておかしなもの落ちてきたことがあったな >>745
無駄なことやってるなと思ってるのは俺だけなんか?
みんながロスレスで上げ始めたらどうなるんだろう
一般のyoutuberはロスレスなんて知らないか すぐ忘れてしまうから自分用メモ
tbr:ビデオストリームから推定されるフレームレート
tbn:コンテナのタイムベース
tbc:コーデックのタイムベース >>740 です
たくさん助言いただきありがとうございます
あれからYouTubeの推奨設定にして色々試していたんですが全く切り替わる様子がなく、なんとなく動画を公開したところVP9/opusに切り替わりました
もしかすると動画を非公開にしていたのが原因かもしれないです 去年誰か高校野球のストリーミング配信をサクッと取ってくるコマンド書いてなかったっけ。 あったわ。
ffmpeg -i https://edge00.kedge.iijcdn.jp/ch00s/dvr.m3u8 -movflags faststart -c copy -bsf:a aac_adtstoasc 三日目第一試合.mp4 音声部の仕様が去年と変わったのかな。
今ちょっと試せない。
bsf外してやってみるとどう? ■ このスレッドは過去ログ倉庫に格納されています