ffmpegならこちらへ 5

■ このスレッドは過去ログ倉庫に格納されています
2020/08/13(木) 19:43:45.34ID:j48XP1pP0
公式サイト
http://ffmpeg.org/

エンコード、ストリーミング配信を高画質高音質で行えるffmpeg。
OSに拘らず対応コーデックが多い。
対応コーデックが多く、多彩なオプションを使用可能。
コマンドラインから使用することができる。
ffmpegならこちらへ 4
https://egg.5ch.net/test/read.cgi/software/1555776689/
2020/08/13(木) 19:45:25.62ID:j48XP1pP0
ffmpegで使うコマンドは、オプションとフィルターが存在する。
これらが一つの行に混在して使われるため、両方に目を通さなければならない。
日本語の記事が無いものもあるので、機械翻訳を使うなどをして、ある程度自力で英語を読み取らなければならない場合もある。

ffmpegで使用できるOptions https://ffmpeg.org/ffmpeg.html#Options
ffmpegで使用できるfilters https://ffmpeg.org/ffmpeg-filters.html
ffmpeg Documentation (フルバージョン) https://www.ffmpeg.org/ffmpeg-all.html


散らばっている古い記事の中には、現在のffmpegのバージョンでは廃止されたオプションも存在する。
それらのオプションは実行しようとしてもエラーが返されるだけで、単純にエラーの原因の一つになるので
古い記事をコピペなどで流用する場合は、既に廃止されたオプションが含まれていないかどうかを注意する必要がある。
2020/08/13(木) 19:46:49.76ID:j48XP1pP0
ちょっと突っ込んだ使い方などの情報(各種ガイド、FAQ)
https://trac.ffmpeg.org/wiki


FFmpeg ドキュメント(日本語訳)
古いし、avconvの説明も混じっているが、新しいものを使わなければ今でも有用
http://fixedpoint.jp/ffmpeg/ffmpeg.html

日本語による基本的な使い方の解説
http://tech.ckme.co.jp/ffmpeg.shtml

日本語による新しいフィルタなどの情報
http://nico-lab.net/category/ffmpeg/


x264とffmpegのオプション対応の解説
https://sites.google.com/site/linuxencoding/x264-ffmpeg-mapping
2020/08/18(火) 21:05:33.91ID:IGfzcdOm0
すみませんよろしくお願いします。

ストリーミングの動画を保存したのですが、先頭からは問題なく再生できるのですが、
途中から再生することができません。

ffmpegで再エンコードをするとシークできる動画ができますが、
再エンコードのため、サイズが大きくなったり、画質が劣化したりします。

なので、再エンコードをせずに、シークができるファイルにするにはどのようにしたらよいですか?

IフレームとPフレームの動画があったとして、

IPPPPPPPPPPPPPPPPPPPPPPP.....................
の動画を
IP......P IP......P IP......P IP......P IP......P IP......P IP......P

みたいに、途中のPフレームの30フレーム目だけをにIフレームにエンコードするような方法ってありませんかね?
5名無しさん@お腹いっぱい。
垢版 |
2020/08/18(火) 22:11:24.87ID:BrccbIBr0
FFmpegを使って、動画上に帯や文字列を描画したいのですが、


1024x576以下の解像度だと正常な色を再現できるのですが、
それを超える解像度だと、緑色が薄くなってしまう現象が起きてしまいます。

例えば、
-vf "drawbox=x=iw-262:y=ih-44:w=226:h=26:color=Lime@1.0:t=fill"
のようなコードで帯を描画してみると分かりますが、

1024x576以下の解像度だと帯の色は00FF00になるのに
それ以上の解像度だと、00D700の色になってしまいます。

これってどうすれば大きな解像度でも原色を再現することができますか?
65
垢版 |
2020/08/18(火) 22:14:21.43ID:BrccbIBr0
すいません、全コードを書きます


"ffmpeg.exe" -y -i "D:\test.wmv" -vf "drawbox=x=iw-262:y=ih-44:w=226:h=26:color=Lime@1.0:t=fill" -vcodec libx264 -preset ultrafast -crf 20 -acodec copy "D:\test2.mkv"

よろしくお願いいたします。
2020/08/19(水) 02:24:09.10ID:YxNjOKji0
帯の色だけ変?映像全体が変?映像全体の原色だけが変?例えば文字にその色を使っても変になる?
色関係で解像度が関係してると言えばBT709だかBT601だかしか思い付かんですわ
8名無しさん@お腹いっぱい。
垢版 |
2020/08/19(水) 06:24:10.90ID:gHnC66hr0
>>7
帯の部分だけがおかしくなります。

もう少し詳しく説明しますと
After Effects CS5.5を使った場合も、H.264形式で出力すると
1024x576以下の解像度だと緑色が薄くなった動画になってしまいます。
しかし、このおかしな色の動画をFFmpegを使って、
1024x576以下の解像度の動画に再エンコードすると正常な色が復元できます。

一方で、
After Effectsを使った場合も、Quick Time(H.264)形式で出力すると
1024x576以上の解像度でも正常な色を再現できます。
この正常な色の動画にFFmpegを使って、
帯を付けると帯の部分だけ色がおかしくなります。

ちなみに、After Effects以外で出力した動画(例えば、ビデオカメラ動画)でも試していますが、
帯の部分の色だけがおかしくなります。

一体、何が原因でしょうか??
9名無しさん@お腹いっぱい。
垢版 |
2020/08/19(水) 07:59:11.82ID:gHnC66hr0
いろいろと解像度を変えて出力したファイルをアップしました。
https://24.gigafile.nu/0826-da342c7d1f5626f80ffc90dfb031e97d5
パスワード:1234

MOVファイルがAfter Effectsを使って、書き出したファイルで
MKVファイルがそれをFFmpegを使って再エンコードしたファイルとなっています。

01-正常な色の動画(838x576).mov
04-正常な色の動画(1148x580).mov
を見てもらうと分かりますが、綺麗な緑色が再現できています。
一方で、
02-異常な色の動画(840x576).mov
03-異常な色の動画(1026x576).mov

だと緑色がくすんで見えます。


更に、右下の帯を見ますと、

01-正常な色の動画(838x576)
02-異常な色の動画(840x576)
は綺麗な緑色がでていますが、
03-異常な色の動画(1026x576).mkv
04-正常な色の動画(1148x580).mkv
だとくすんでしまっていることが分かります。

特に、
04-正常な色の動画(1148x580).mkv
だと、AEで出力した緑は綺麗なのに、FFmpegで出力した緑は汚くなっています。

これは一体何が原因で起こるのでしょうか?
10名無しさん@お腹いっぱい。
垢版 |
2020/08/19(水) 10:32:15.09ID:xtrvNOjO0
パスワード無しでダウンロード出来て
パスワード無しで開けた
11名無しさん@お腹いっぱい。
垢版 |
2020/08/19(水) 10:36:38.63ID:xtrvNOjO0
02 の二つ(mov mkv)

04 の二つ(mov mkv)
がどれも綺麗に見えた
01 の二つ(mov mkv)
03 の二つ(mov mkv)
は失敗している様に見えた(全背景の右端に余計な緑の線が出てるのと全体的に色がにじんでる)
12名無しさん@お腹いっぱい。
垢版 |
2020/08/19(水) 11:53:16.44ID:gHnC66hr0
>>11
全背景の右端に余計な緑の線が出てるのと全体的に色がにじんでる
ってこちらで見えているのとは見え方が違うのですが
できればスクリーンショットをアップしていただけないでしょうか?

あと、何の条件が違うか分かりますか?
その異常なファイルを正常なファイルにするにはどの設定を変えれば良いですか?
2020/08/19(水) 16:26:01.42ID:TH0iE1Ol0
>>4
例えば入力1番目のファイルの1番目の映像なら
-force_key_frames:0:v:0 expr:"gte(n,n_forced*30)"
14名無しさん@お腹いっぱい。
垢版 |
2020/08/19(水) 16:40:55.94ID:Teah6dvI0
久々にmedia-autobuild_suite-masterを使ったら、またエラーがっ!
このツール糞すぎだろ・・・
15名無しさん@お腹いっぱい。
垢版 |
2020/08/19(水) 16:55:34.29ID:Teah6dvI0
ログ見たら、cargo-cがLikely errorコケやがってる・・・
--- stderr
fatal: not a git repository (or any of the parent directories): .git
2020/08/19(水) 17:05:08.69ID:TH0iE1Ol0
>>5
After Effectの解像度別の挙動に整合性が見られない(大きさ順に採番したとき1,4と2.3で分かれた)からそのmovコンテナに入ってる情報は信用できなそう

推測だけど動画に色の情報、特にcolor rangeが入ってない(ffmpegで入力の情報 → color rangeがunknown)か間違ってると思う
で、ffmpegはデコードは問題ない(color rangeに依存しないから)し、フィルタなんかの効果もこれに準ずるけど書き込み時は解像度で判別されて大きい画像数だとfull range / pcになる
ここが大事で、limited rangeの値そのままfull rangeの値とされると各チャンネルの明度は落ちる

例えば04はlimited / tvとしてデコード(ただし値は超過)してffmpegのフィルタではlimitedな値を出し、出力はfull range / pcとして出力
素材の値はfullだけどフィルタの分はlimitedなのをfull / pcで出力するから色に違いが出る

02, 03はAfter Effectの時点でlimited / tvの値
01, 04はAfter Effectの時点でfull / pcの値
01, 02は、解像度の小ささによってffmpegは既定では自動でlimited / tvで出力するから再生時は超過値は全部切り捨てられて問題なし
03, 04は、解像度の大きさによってffmpegは既定では自動でfull / pcで出力するから、再生時は、素材にfullの値が含まれない03はどちらもlimitedの値、素材にfullの値が含まれる04は素材の分だけfullの明るい値に
17名無しさん@お腹いっぱい。
垢版 |
2020/08/19(水) 17:21:30.43ID:gHnC66hr0
>>16
ありがとうございます。
color rangeのことは調べてみて、理解できました。
しかし、この原理に基づくと緑だけでなく赤や青も薄くなるものではないのでしょうか??

あと、
04の動画に正常な色の帯を描画しながら
再エンコードしたい場合にはどのようにすれば良いのですか?

"scale=in_range=full:out_range=tv"

を入れてみたのですが、
結果は変わりませんでした。

"scale=in_range=tv:out_range=tv"
なども試してみましたが、やはり駄目でした。
帯の前と後、両方試してみましたが、どちらも駄目でした。
どういうコードならうまくいきますか?
2020/08/19(水) 18:29:43.52ID:TH0iE1Ol0
>>17
ここ見て
他にも可能性多すぎて検証したくない
https://nico-lab.net/setting_in_out_color_with_ffmpeg/
19名無しさん@お腹いっぱい。
垢版 |
2020/08/19(水) 19:10:20.94ID:gHnC66hr0
>>18
color rangeが原因ではないということですか?

どういう手順で調べていけば良いかだけでも
教えていただけないでしょうか?
20名無しさん@お腹いっぱい。
垢版 |
2020/08/19(水) 20:05:28.58ID:gHnC66hr0
>>18


こうすれば、RGB形式で読み込んでRGB形式で出力することになるので
色空間の問題はなくなるかと思ったのですが、
これでもやはりffmpeg上で出力した帯の色が薄くなってしまいます。

となると、color rangeが原因ではないということでしょうか?
全く、原因が分からないのですが、何か分かりますでしょうか?
21名無しさん@お腹いっぱい。
垢版 |
2020/08/19(水) 20:06:01.03ID:gHnC66hr0
なぜかコードが貼り付けられませんでした

"D:\ffmpeg.exe" -y -i "D:\test.mov"
-vf "format=gbrp,drawbox=x=iw-262:y=ih-44:w=226:h=26:color=#00FF00@1.0:t=fill" -vcodec libx264rgb -preset ultrafast
-crf 20 -acodec copy -pix_fmt bgr24 "D:\test2.mkv"
2020/08/19(水) 20:49:04.28ID:TH0iE1Ol0
>>19
結論だけ先に書くと、まずは素材とフィルタで色がずれないように試行錯誤
次に再生機が受け取る色情報の指定だけを変えてみて色が正しくなるか見て、駄目なら上流に向かって揃えてく

これまでの放送電波〜デジタルの動画の表現の変遷によって、既定では多くのソフトは動画のサイズで色の表現とその情報の扱いを分けてる
これはcolor rangeに限らなくて原色の関係もそう
大抵はBT.601(NTSCアナログ放送とかで使われてた)=NTSC(日本・米国)の場合SMPTE 170MとBT.709(HDTV、ここ最近までの標準)とBT.2020(新しくて4KとかHDRの動画向け)で切り替わる

最初は帯の成分が緑しか無かったから、RGB全体的に明度落ちてると判断してcolor rangeの齟齬だけかと思ったけど、レス反応見たところ赤や青の変化は無いか気にならない程度らしくて
他の原色・color transfer characteristics・色空間も怪しい
2020/08/19(水) 20:54:44.02ID:TH0iE1Ol0
>>20
それは画素形式(pixel format、データの表現・格納の型)であって当然色の表現の差異は埋められない
元の値・意味が違うのに格納の仕方ではどうにもならない
24名無しさん@お腹いっぱい。
垢版 |
2020/08/19(水) 21:02:05.00ID:gHnC66hr0
>>22

う〜〜ん、何をどうしたら良いのか全く分かりません。
ちなみに赤や青の原色でも試していて、
大体、
G = R*0.098-G*0.847+B*0.0588

のような式に従って、緑色だけが赤と青と緑の関数となって
異なる値になることが分かっています。
そのため、color rangeが原因ではないと思います。

どうすれば良いかご提示いただけないでしょうか?
25名無しさん@お腹いっぱい。
垢版 |
2020/08/19(水) 21:04:27.75ID:gHnC66hr0
もう少し詳しく書くと
赤 (255,0,0) → (255,25,0) +25
緑 (0,255,0) → (0,216,0) -39
青 (0,0,255) → (0,15,255) +15

となります。
2020/08/19(水) 21:13:08.27ID:TH0iE1Ol0
>>24
うんだから他の可能性って言ってたやつ
>>18 に色々あるの弄ってみないと何とも
27名無しさん@お腹いっぱい。
垢版 |
2020/08/19(水) 21:24:24.47ID:gHnC66hr0
>>26

こちらにはどうしたら良いか検討もつかないのですが
必要な情報があれば、いくらでも提供しますので、
できれば、そちらで確かめていただけないでしょうか?
2020/08/19(水) 21:41:15.48ID:TH0iE1Ol0
>>27
おー言うねぇ
ただ今はちゃんとした環境なくて、ffmpegもAndroidで疑似Linux動作させてその中で動かしてる感じなんだよね
ffplayが使えれば良いんだけどグラフィックの表示させるとこで詰まってて……

しつこいようだけど >>18 のを入力オプションと出力オプションに指定して試行錯誤するって方法しか確かなこと言えない、ごめんね
2020/08/19(水) 22:09:01.60ID:Teah6dvI0
>>14-15は虫っすか?
2020/08/19(水) 22:23:58.60ID:17sfGOz30
>29
zipダウンロードするか
git clone https://github.com/m-ab-s/media-autobuild_suite
してまっさらな環境からやり直しては?
2020/08/19(水) 23:18:52.76ID:RHE7FKSY0
>>13
ありがとうございます。
そのオプションは結局全体を再エンコードするみたいですね
出来れば別のやり方がないでしょうか?
2020/08/19(水) 23:44:15.91ID:2VkAcbsp0
ここで聞く話じゃないかもしれんだけどさ
x264ってライセンスにGPL版と後から用意された商用版があるじゃん?
オープンソースやライセンスに詳しくないんだけど
あれってものすごいかる〜い修正(そんなのが実際にあったのかは知らない)を一回だけpull requestしてmergeされたみたいな末端の作者にもライセンス変えていいよって許諾をもらったって事?
それともかる〜〜い修正ならメインの作者チームの意見が通るみたいな感じなの?
2020/08/19(水) 23:54:25.71ID:TH0iE1Ol0
>>31
うーん元々1本にエンコードされてるものを、再エンコードせず一部1枚画のフレームに変える方法なんて聞いたことないしできないんじゃないかな
2020/08/20(木) 00:33:53.05ID:IhrQ3E4c0
>>32
普通はプルリク時に、そなへんの承諾を事前にもらっておく
2020/08/20(木) 00:47:02.00ID:IEw+2rgI0
>>33
ありがとうございます。

私が勘違いしていて、結局ファイルが破損?インデックスが破損?していたみたいで、以下のコマンドでシークできるようになりました。
コマンドの内容は分かってないですが、再エンコード無しで上手くいっているようです。
ご迷惑をお掛けしました。

-- repair.bat --
ffmpeg -i %1 -c copy -f hls -hls_time 2 -hls_playlist_type vod -hls_segment_filename "video%%5d.ts" video.m3u8
ffmpeg -i video.m3u8 -movflags faststart -c copy -bsf:a aac_adtstoasc "S:\STREAM\%~n1.mp4"
2020/08/20(木) 01:12:21.21ID:E4fwP3Jm0
>>35
HLSのストリームだったのね、良かった
2020/08/20(木) 12:02:13.82ID:h1jP+ec20
>>1
乙です!
38前スレへのレス
垢版 |
2020/08/20(木) 14:07:22.82ID:GAPJtLxP0
https://egg.5ch.net/test/read.cgi/software/1555776689/993

がんばってそういうのを教えてくれる人のいい人を探してくれ。
たとえばレストランを始めたいと思ってる人が人気レストランに行ってそこの料理人に
この料理の作り方を一から教えて欲しい、それと秘伝のレシピも包み隠さず全部教えてとか、
税理士にあなたに依頼したら高くつくからこれからは自分で確定申告したいから納税制度の
成り立ちから教えてほしいと言って教えてくれる人もきっとどこかにいるさ。
だからそのくらいの要求をきいてくれる人もきっといるよ。
https://egg.5ch.net/test/read.cgi/software/1555776689/994

ワイが言ってるのは、苦難の連続だから、だからサルでもできるように
“ffmpegやライブラリのバージョンも指定して” やり方をまとめようってこと。


https://egg.5ch.net/test/read.cgi/software/1555776689/995

ちょっとなに言ってんのかわかんないですねw
39名無しさん@お腹いっぱい。
垢版 |
2020/08/20(木) 14:09:22.14ID:GAPJtLxP0
https://egg.5ch.net/test/read.cgi/software/1555776689/996

h265は使ったことないから知らんけどh264は当然マルチスレッドになってるもんと思ってた。
こういうのって一度ベストな設定を見つけたらあとは毎回コピペするだけだから詳細忘れ
ちゃうんだよねw 前のがマルチコア使ってたら今回のもx264のバージョン同じだから
マルチコア使ってると思うよ。

[h264 2パスエンコード]
ffmpeg -y -i 入力ファイル -c:v libx264 -b:v 1180k -preset placebo -tune film -pass 1 -c:a copy -f mp4 /dev/null &&

ffmpeg -i 入力ファイル -c:v libx264 -b:v 1180k -preset placebo -tune film -pass 2 -c:a copy 出力ファイル

[vp9 2パスエンコード]
ffmpeg -y -i 入力ファイル -c:v libvpx-vp9 -threads 4 -tile-columns 2 -frame-parallel 1 -quality good -speed 1 -b:v 2460k -vf yadif=1:-1:0,fps=29.97 -pass 1 -c:a copy -f webm /dev/null &&

ffmpeg -i 入力ファイル -c:v libvpx-vp9 -threads 4 -tile-columns 2 -frame-parallel 1 -quality good -speed 0 -b:v 2460k -vf yadif=1:-1:0,fps=29.97 -pass 2 -c:a copy 出力ファイル

逆に聞きたいんだけど-tune filmや-tile-columnsや-frame-parallelってなんなん? 忘れたわw
yadif=1:-1:0,fps=29.97ってのはIP変換ね。必要ないなら外して。
vp9はスレッド数指定してるね。
2020/08/20(木) 14:21:13.93ID:jP20gblw0
>>39 処理時間で気が付かね?
41名無しさん@お腹いっぱい。
垢版 |
2020/08/20(木) 14:27:13.98ID:GAPJtLxP0
>>40
処理時間って相対的なものだからな。なにと比較するの?
vp9はh264より当然時間かかるし(設定にもよるが)、比較対象にはならんわな。
2020/08/20(木) 14:36:33.40ID:jP20gblw0
>>41 いやパラメーターをいじくって高品位化と同時に高速化もいろいろ試さないかなと・・・
手持ちのソース量によるとは思うけどバッチで処理するときに1割でも早くなればかなり差がつくだろ?
43名無しさん@お腹いっぱい。
垢版 |
2020/08/20(木) 14:53:12.66ID:GAPJtLxP0
>高速化もいろいろ試さないかなと・・・
>>42

いろいろ試すところなんてない。品質と速度はトレードオフ。
違いがでるのはおまいが言うようにマルチスレッド処理するかしないかぐらいだろ。
品質を一定に保って速度上げたきゃマシンのスペックを上げるしかない。

まあ、VP9よりh264のがかなり早いからマルチコア使ってんじゃねーかな。
2020/08/20(木) 15:14:08.57ID:pJQn2KkM0
NVENC使おうぜ
45名無しさん@お腹いっぱい。
垢版 |
2020/08/21(金) 14:46:51.82ID:pEVeU9Ae0
動画エンコしてると熱で強制シャットダウンが多発。
暇を見つけて、CPUの温度を見ながら最大処理能力を変更するプログラム作ったんだけど、
使ってみたい人いるかな? 

スレチだったらすまん。
2020/08/21(金) 15:15:21.29ID:Bzc0M5J10
私の個人的な意見だけど

最大処理能力でも排熱が上手くいくようにファンを増設したり、配置換えをしたりするのが筋で
ソフトウェアで解決っていうのはそれこそCPUパワーの無駄だし
ソフトウェアが上手く動かなかったときにハードウェアが壊れる危険性があるからやめた方がいいと思う
同じソフトウェアでもファン制御とは訳が違うと思う
2020/08/21(金) 15:17:13.19ID:NYBmefEV0
>>45
ソフトの前にハードウェアの点検と見直しを推奨します
 CPUクーラーがちゃんと付いていない(物理的に)
 CPUクーラーやケースファンが機能していない(埃とかで)
 CPUのオーバークロック等の設定が無理過ぎる(BIOS)
2020/08/21(金) 16:43:14.79ID:Rp+VGTe40
なんやこいつら
ケチつけるだけの無能かよ
せっかく自慢してるんだから、おべっか使ってソフトをアップさせたらええのに
49名無しさん@お腹いっぱい。
垢版 |
2020/08/21(金) 16:44:08.45ID:sQP6nbJB0
>>46,47
アドバイスありがと。
ここの住人はデスクトップPCでハイエンドなエンコードマシンを作る人たちがターゲットかな。
エンコ中に余計なソフトは入れたくないわね。

自分のは古いノートPCなので、今更ハードに手を入れたくないのでソフトを作って延命処置です。
対策ソフト走らせてからは90度は超えなくなり、エンコ中にシャットダウンもなくなったので若干遅くなっても
快適です。

お邪魔しました
2020/08/21(金) 16:50:34.62ID:czuGiC700
古いノートPCならなおさら一度開けて埃を取ったほうが良いよ
通気性が悪くなって熱が逃げなくなってるから
■ このスレッドは過去ログ倉庫に格納されています
16歳の水野カイトが封印の刀を見つけ、時間が裂けて黒い風と亡霊の侍が現れ、霊の時雨と契約して呪われた刀の継承者となる場面

ニューススポーツなんでも実況