ffmpegならこちらへ 7

■ このスレッドは過去ログ倉庫に格納されています
1名無しさん@お腹いっぱい。
垢版 |
2022/08/05(金) 21:05:41.29ID:EVyx8BnW0
公式サイト
http://ffmpeg.org/

エンコード、ストリーミング配信を高画質高音質で行えるffmpeg。
OSに拘らず対応コーデックが多い。
対応コーデックが多く、多彩なオプションを使用可能。
コマンドラインから使用することができる。

前スレ
ffmpegならこちらへ 6
https://egg.5ch.net/test/read.cgi/software/1629006665/
116
垢版 |
2022/08/21(日) 01:00:23.72ID:P4aR419b0
>>10
ご丁寧にありがとうございます!
無事に希望通りの動作をさせることができました
本当に感謝です
2022/08/27(土) 18:23:58.05ID:yOrj2hKt0
動画ファイルを -vcodec copy -acodec copy で複製するとき
mp4だとハッシュ値が常に変わらないのに対してwebmだと毎回変わるんですが
この挙動の差はなんでしょうか?
2022/08/27(土) 23:25:52.65ID:wUASBNkx0
>>12
mkv(webmはmkvのサブセット)は原則として一意なIDが埋め込まれる
さらに、各トラックにも同様に一意なIDが識別に必須なものとして埋め込まれる
だから原則として同じハッシュにはならないよ
2022/08/28(日) 05:47:16.33ID:LsNSts+Y0
>>13
ありがとうございます
2022/09/05(月) 22:15:41.79ID:yxZyrrSm0
ffmpegで動画からpng形式で抽出した画像と、
ffmpeg以外(DavinciやMPC-BE[madVR])から抽出した画像で
明るさが若干違うのだけど、原因や対処方法ご存知の人います?
多分transferやガンマ指定の問題だと思うのだけど

テスト動画
 https://www.home-movie.biz/mov/hts-samp001.mp4

ffmpegで抜き出した場合
 ffmpeg -i hts-samp001.mp4 -vf trim=start_frame=0:end_frame=1,setpts=PTS-STARTPTS -vframes 1000 "hts-samp001.png"
 http://iup.2ch-library.com/r/022169577515874711257.png

 madVR等で抜き出した場合
 http://iup.2ch-library.com/i/i022169588515874811258.png
2022/09/05(月) 22:25:14.61ID:7SG5p0gd0
レンダラを何だと…
2022/09/05(月) 23:28:27.53ID:yxZyrrSm0
DavinciやAviUtlで抜き出してもそうなるからレンダラの問題じゃなさそうです
2022/09/05(月) 23:33:48.70ID:yxZyrrSm0
Davinci・AviUtl・MadVRだと明るさは一緒で
ffmpegだけ少し暗い感じです
2022/09/07(水) 15:22:52.72ID:ixjAENMd0
もしてかしてRGBとYUVの色範囲の違いじゃね
aviutlとかはYUVソースをPC表示するためにRGB(0-255)に変換していて
ffmpegの場合はそういう処理をせずにYUV(16-235)の色階調そのまま
とか?
2022/09/07(水) 16:06:12.59ID:YqXJkldq0
俺も以前に連番PNG化したときにそんな感じのことあったな
レンジ合わせれば普通に見える
2022/09/07(水) 18:10:20.10ID:WJTyjeNI0
色空間とかごちゃごちゃしててホンマ嫌い
2022/09/07(水) 19:50:29.60ID:sZs7Whts0
>>19>>20
-vf scaleのin_rangeでlimitedとfullを変えてpng出力すると
”若干”でなくだいぶ変わるのでそういうことでもなさそうです
(out_rangeは指定しても変化なし)
2022/09/07(水) 22:10:56.63ID:oqUFzRrR0
auto_scalerがbt709 Color MatrixでYUV→RGB
そしてlimitedレンジからfullにしたのが
「ffmpegで抜き出した場合」の画像
システムガンマがBT.1886になるようにYUVのYにフィルターがかかってるのが
「madVR等で抜き出した場合」の画像
2022/09/08(木) 01:00:36.35ID:9jCtJ95i0
>>23
ありがとうございます。納得しました
頂いた情報を元に軽く調べてみましたが
ffmpeg側で合わせる方法は見当たらないようですね
25名無しさん@お腹いっぱい。
垢版 |
2022/09/08(木) 23:29:11.76ID:q2Cnh+vc0
出来ると思うんだけど、画像へのリンクが切れてるんだよね。
>>23が正しいかどうかもわからない。
とりあえず、colorspaceフィルタでは無理だと思う。
2022/09/09(金) 02:44:29.30ID:Mdzz68+w0
動画は残ってるから再現できたぜ
2022/09/09(金) 08:25:44.52ID:pDtqG98a0
sRGBディスプレイで閲覧するとしてzscaleでtransferinをbt709、transferをiec61966-2-1にして輝度をフィルタリングすればいい
colorspaceはたしかリニア輝度にするときシーンライトにしてしまうはず。
2022/09/09(金) 08:40:11.74ID:pDtqG98a0
シーンライトはscene referredだ
2022/09/13(火) 03:41:41.45ID:5EB7q0pX0
transferの検索結果にカメラとかテレビとかの専門サイトがたくさんでてくるなあ
職業カメラマンはこんな複雑なことわかってないといけねえのか…大変だ
2022/09/13(火) 19:20:16.89ID:AtCX4aUG0
framerate30の動画を1変更したいんだけど他はそのままの条件で行きたいけど-r 1にしてもできる動画サイズが元のより大きくなってしまう。
どうしたら劣化させずにframerateだけ小さくして、ファイルサイズも小さくできますか?
2022/09/13(火) 20:46:53.33ID:KKrJu2dD0
新しめコーデック HEVC, AV1を使う
-crf を少しずつ上げる、-b:v を直接指定する
2022/09/15(木) 06:19:04.60ID:grPpNRTb0
デコードせずにはフレームレートを変換できないような動画であると仮定すると、解決策はビットレートを直接指定すること。
強制的にビットレートを下げるには-b:vを使ってね。
2022/09/15(木) 20:32:35.58ID:sdCnxl5G0
>>31,32
ありがとうございます。勉強してきます。
2022/09/22(木) 23:55:57.04ID:bvZ5x9B80
m4aのタグ編集したいんだけどpipe:0としてstdinで渡すとmp4系列は機能しないんだね・・・
2022/10/06(木) 14:39:53.64ID:yozy4LzK0
ffmpegでtiffファイルからyuvファイルを作りたいのです。

フレームレートを固定したままビットレートのみ、変更したいです。
元の動画のフレームレートが59.94なので以下のコマンドで実行しましたが、うまく行きません。
どうすればよいのでしょうか。

【コマンド】
ffmpeg -video_size 3840x2160 -r 59.94 -i a05_4K00%03d.tiff -vframes 30 -pix_fmt yuv420p -r 59.94 a05.yuv
36名無しさん@お腹いっぱい。
垢版 |
2022/10/06(木) 15:33:57.58ID:e2X/rTrv0
続けて質問申し訳ありません。A.mp4(1分) B.mp3(2分) を結合させるとき…

ffmpeg -i A.mp4 -i B.mp3 -vcodec copy -acodec copy C.mp4

を実行すると、当然C.mp4(2分)が作成されるわけですが、A.mp4(1分)に合わせたC.mp4(1分)を作成する場合どのようにコマンドをすれば良いですか?
※A.mp4の時間は(30秒-2分)で毎ファイル異なります。

アドバイスよろしくお願いしますm(_ _)m
37名無しさん@お腹いっぱい。
垢版 |
2022/10/06(木) 18:19:09.19ID:e2X/rTrv0
自己解決

-shortest
2022/10/07(金) 10:31:39.04ID:HYHyp6R60
scale_cudaのinterp_algo=lanczosってなんかバグってる
bicubicの方がいい
39名無しさん@お腹いっぱい。
垢版 |
2022/10/10(月) 22:54:55.68ID:Bj8jCW/K0
MacOS使ってるんだけどlibfdk-aacってビルドした後にバイナリの実行ファイルは生成されない?
ビルドが成功したのかもわからんから不安

とりあえず
libフォルダ内
→libfdk-aac.aとlibfdk-aac.la

includeフォルダ内
→aacdecoder_lib.h等の.hファイルが6つ

生成されるのは確認できた
2022/11/04(金) 22:06:13.38ID:U/7bjjk/0
yt-dlpが早いのはffmpegの-c copyと同じコピー使ってるからかな?
でも、ようつべは開発者ツールのネットワークで検索して出てきた元webm&webaをffmpeg -i url output.mp4したら弾かれたから何かそういう技術あんのかな?
2022/11/04(金) 22:07:22.81ID:U/7bjjk/0
あ、ちなみにちゃんとrange=0-数にしてffmpeg入力しても弾かれたから
2022/11/07(月) 18:45:11.78ID:v7t8S9HG0
bgra (実際は透明部分無し)のrawvideo(24GB)をyuv420p10leのAV1に変換したく、ただHEVCやVP9など他のものも試したいと考えてます
ファイルサイズがかなり大きいのでRGB to YUVだけ終わらせた中間ファイルを残しておきたいのですが、映像コーデックをffv1で残しておけば色空間の変換以外で劣化は起きない認識で良いのでしょうか?
2022/11/09(水) 23:57:36.66ID:Mpacpztv0
あってるよ
yuv420p10leでrawvideoとffv1間の変換は可逆
2022/11/10(木) 07:45:45.95ID:tDwXq83r0
ありがとうございます!
2022/11/10(木) 09:25:39.89ID:+pIcgAqo0
フォーマットのこと全然判らんな
あれはどういう必要があって複雑なことになってるんだ
2022/11/10(木) 17:15:19.37ID:qd/x3luN0
省資源、コンポジット、アライメントの都合だね
フォーマットってのはつまりVRAMに値をどう配置するかって話だけど
得意不得意あるからフォーマットがたくさんある
MSXの画面モードはRGBやYUV(のようなもの),パックドやプレーナー、コンポジット(のようなもの)全部入りで面白いよ
2022/11/12(土) 06:16:55.21ID:bxoLcHPa0
規制が強くなったのか、専ブラでないと書き込めない
2022/11/14(月) 09:34:18.60ID:I/iilzDo0
エンコーダの性能をしらべるために動画の中で動きの激しい箇所のみをエンコードしたいのですが、
動画の中で動きが激しい場所を調べられるオプションはありますか?
2022/11/14(月) 20:29:29.55ID:pQS1kwvb0
vmafmotionフィルタか, sitiフィルタのsi
2022/11/14(月) 20:30:21.07ID:pQS1kwvb0
siじゃなくてtiのほうだった
2022/11/14(月) 21:19:20.02ID:6Q32qEHB0
エントロピーフィルタを使うシーンかとおもいや、あれはフレーム間調べないんだ
2022/11/14(月) 22:06:10.05ID:I/iilzDo0
>>49,>>51
ありがとうございます!
調べて、考えてみます。
53名無しさん@お腹いっぱい。
垢版 |
2022/11/17(木) 02:50:10.22ID:q1Kg69KW0
単純にh.264をhevcへ変換するだけの簡単な仕事、AMD 3020eで試したら散々な目に遭った

GPUでエンコードするとブロックノイズまみれ、CPUでエンコードするとCore i5-4670の1/10程度の速度

Windowsのstatic版の最新安定版で試してみたのだが、gentooインストールバトルして最適化したらCPUエンコード速度が改善する余地あるのだろうか、それとも所詮はZenアーキテクチャの限界でハードウェア的に無理??
2022/11/17(木) 02:59:35.69ID:q1Kg69KW0
ブロックノイズはボックスブラー試してみまふ
2022/11/17(木) 08:06:58.06ID:V7wTzgUr0
その為に買ったGPUだし、GPU以外は選択肢に無いな
5653
垢版 |
2022/11/17(木) 12:15:33.62ID:q1Kg69KW0
hpの14sシリーズ最安値機を2万円台で買ったのを試しただけなので、、、

Core i5-4670機が稼働する限りはCPUエンコード、壊れたら中古で第6世代あたりの廉価デスクトップi5とか第8Core i3とか…

passmarkやcpu-monkey的にはfinal PentiumのG7400でもマルチスレッド性能は4670より上ですね
2022/11/17(木) 15:14:01.15ID:ut8ZrMWT0
誰も聞いてないのに貧乏語りするの気持ち悪いな

ガラクタいくつも並べて無駄な時間かける暇あるなら、働いてまともなPC組めば?
12400とかで安くマシなの組めるだろ
2022/11/17(木) 18:08:47.53ID:uM8UlpNl0
いきなり情報量ゼロの罵倒を始める方が闇が深いな

カルシウム足りてるか?
12世代の反りを嫌う人が居るのは理解して居るか?

同じZenならRyzen 7 1000シリーズ中古があるじゃないか
2022/11/17(木) 18:19:51.42ID:d/HUjigR0
格安ボロ買って散々な目にあっただのとw自己否定したいだけ?
2022/11/17(木) 19:07:20.04ID:FdCZVBHw0
2万円台ノートとほぼ同価格の12400挙げるのはアホ
2022/11/17(木) 20:07:44.07ID:npXDYmd70
エンコで時間使う人間が12400程度の金も出さないとか、人生いろいろケチりで損してそうだな
中古買う奴が反り気にするとかどんなブーメランだよ
2022/11/17(木) 20:17:11.89ID:xRoM3nbV0
古いPCで何かすることは否定しないけど
大して参考になる情報でもない、脈絡もなくいきなり自分語りしだす方がおっさん臭くてキツいね
63名無しさん@お腹いっぱい。
垢版 |
2022/11/17(木) 20:56:34.37ID:Ghwc++Ue0
誰もffmpegの話をしていない
64名無しさん@お腹いっぱい。
垢版 |
2022/11/18(金) 05:09:18.42ID:wimZPxMW0
どう見ても3020eでのエンコはネタつくりだべ
Celeron N4000とかでやるのと大差ない
65名無しさん@お腹いっぱい。
垢版 |
2022/11/18(金) 09:08:39.50ID:eGW4OO8R0
真面目に考えて損した
2022/11/18(金) 14:18:46.16ID:+OcAjUTr0
Linux関連の板でもないのに「Gentooインストールバトル」とかキモすぎる

そもそもここffmpeg自体のフィルターやオプション、最近のコーデックが話題であってHEVCとかいまさらなんだわ
ましてやHEVCに世代合わせるかのようにボロPCしか例に出さんし

悪いこといわんからまともなエンコしたきゃ、ここ2年くらいのCPUか1650S以上のグラボ使っとけ
5600Xや11400, 12400あたりの安CPUでもHEVCなら足りる
2022/11/18(金) 14:59:27.40ID:f8D9mpxf0
CPUはここ10年のなら何でもいい
肝心なのはGPU
2022/11/18(金) 15:29:45.24ID:Govgu8G50
RocketかAlderのiGPUありなら新しいQSVあるしCPUエンコ狙えなくもないし一石二鳥だな
69名無しさん@お腹いっぱい。
垢版 |
2022/11/18(金) 20:41:38.12ID:wimZPxMW0
遅すぎる原因、分かりました

これまでの環境でgit for Windowsのシェルで実行していたのを、同じ感覚でWSLで実行したためでした

興味深い情報の提供、感謝いたします
2022/11/18(金) 22:49:58.50ID:a2MJgMIX0
>>52 sitiフィルタの使い方を調べて動画のスコアを調べようとしたのですが、「そんなフィルターはない!」と怒られてしまいます。
何か追加でインストールが必要なのでしょうか?
それとも、入力したのがyuvファイルだったのがダメだったのでしょうか?

何か、分かる方がいらっしゃいましたら、おしえて頂けると幸いです
2022/11/19(土) 07:00:56.99ID:wohxqVmy0
バージョンが古いのでは?5.1以降が必要
https://github.com/FFmpeg/FFmpeg/blob/fced45fd9528e93fd71e792f3ddd9eb4667c2d31/Changelog#L31
2022/11/27(日) 15:11:29.53ID:hpt+1WbU0
mp4動画にチャプター情報つけてるんだけど
そのちゃごとにタイムコードを付加するというのは無理なのかな?
2022/11/28(月) 01:02:52.94ID:VB5HSDAy0
>>72
このスレの大半は無視と罵倒とマウンティングで出来ています
x264 / hevc /VP8の話題は原則禁止です

mp4とだけ書くのも禁止です
ffmpeg -i foo.mp4などと実行してVideo部分のcodecを確認してから質問してください
2022/12/03(土) 08:16:01.13ID:pWoUq+ys0
>>72
Yes, it is possible to add a timecode to each chapter in an mp4 container.

To do this, you can use the -timecode option in FFmpeg. This option allows you to specify a timecode for each chapter in the mp4 container.

Here is an example command that you can use to add timecodes to each chapter in an mp4 container:

ffmpeg -i input.mp4 -map 0 -c copy -metadata:s:t:0 timecode="00:00:00:00" -timecode_frame_start 0 output.mp4
In this command, the -timecode option is used to specify a timecode for each chapter in the mp4 container. The timecode is specified in the format HH:MM:SS:FF, where HH represents the hours, MM represents the minutes, SS represents the seconds, and FF represents the frames.

In this example, the timecode for each chapter is set to 00:00:00:00, which represents the start of the video. You can adjust this timecode as needed to specify different timecodes for each chapter.

After running this command, the output mp4 container will include timecodes for each chapter, which you can use to navigate the video at specific points in time.
2022/12/03(土) 12:22:30.07ID:jcglrjSt0
ところで、mp4(m4a含む)でチャプターを付ける時
一番お気楽な方法ってなんなんだろう
定番では Drax、
個人的にわかりやすいのは mkvtoolnixでMKV出力→ffmpegでコンテナ変換だと思うけど、
前者はD'nDができないし、後者はVBRフラグが引き継がれない(ffmpegのいわば仕様)
2022/12/03(土) 15:24:42.85ID:tD70AyOp0
気楽の定義がわからんけど、CUIのツールを組み合わせて
テキストベースでpythonとか使いながらやるのが一番楽な筈
2022/12/03(土) 15:51:26.07ID:ZLRdDl1d0
最近のffmpeg(snapshot2022-12-02)って、昔と比べてエンコード速度が速くなっている代わり
にVAAPI(Linuxです)使用時でもCPUを積極的に使用するように仕様が変わったんですか?

昔と言っても(2022-02-02)のsnapshotなんですが、Core i7 7700Kのマシンで、h264_vaapiで地上波m2ts
の変換で、6倍速ぐらいの速度でCPU周波数はIntel P-stateのpowersaveで1.1GHzぐらいで、task managerの使用率も1%ぐらいだったんですが、
2022-12-02版だと13倍速でる代わりに同じくpowersaveで3.2GHzぐらい食って、task managerの使用率も8%ぐらいでした。
何か変更でもアナウンスされてましたっけ?
7875
垢版 |
2022/12/03(土) 16:48:01.56ID:jcglrjSt0
>>76
要するに、他のメタデータを考えることなく、
チャプタの時間を指定するだけ(チャプタ名は数字順)で済むような方法という想定だったんだけど、
ググってみたら、pythonのヘルパースクリプトがあるみたいだね
pythonは使えるので、参考にして自分で書いちゃったほうが楽なのかな

mpvプレーヤーには、該当箇所でキーを押してmkvチャプタ(mkvmergeで使われるxml形式)を出力するというプラグインがあるんだけど、
同様にffmpeg用(FFMETADATA)ファイルを出力するようなものがあるといいと思った
やはり、映像や音声を確認しながらその場でチャプタを指定できると便利だ
2022/12/03(土) 17:14:50.24ID:tD70AyOp0
普段は再生にmpc-hcを使ってて、
ctrl-Gが指定時間にジャンプする機能だけど、
その時に現在の時間が表示されてるので、編集するつもりでctrl-A ctrl-Cでコピーしてくると
04:03.891
こんなフォーマットでクリップボードに入る
大抵はこれで足りる
2022/12/03(土) 18:02:27.62ID:jcglrjSt0
>>79
そのあたりは、mpvのプラグインスクリプトのほうが楽かな
copyTime.luaっていうのがあって、これだと "Ctrl + C" だけで同じhh:mm:ss.fff形式のものが拾える
音声で厳密に出したいときはAudacityで波形を見ながらやることもある
2022/12/03(土) 19:25:59.40ID:qgv9YMGz0
>>74
ありがとう
2022/12/04(日) 19:12:20.70ID:fIgRbBjn0
>>81
ごめん、いろいろ悪ふざけが過ぎた
ただ、一応俺の目であってるか確認したけど、このレス自体はChatGPTに答えさせたやつなんだ
8353
垢版 |
2022/12/05(月) 12:19:39.60ID:E/pfDvK+0
>>53
ブロックノイズまみれになる原因が分かりました。

CPUエンコードと異なり -maxrateが効かないのを知らずに -b:v 指定だけが有効になってしまい、品質が派手に落ちたのが原因でした。

-qmaxで適切な値、例えば『少しくらいの劣化許容』なら -qmax 25 などと指定すれば、おおむね期待通りの結果が得られました。

質問と罵倒だけで無価値なログが残るのを避けるため報告します。
参考:
https://nico-lab.net/installing_amd-vce_with_ffmpeg/#i-2
2022/12/05(月) 12:51:05.65ID:uQn9iJkq0
vspipe -c y4m "test7.vpy" - |\
ffmpeg -y -i - -pix_fmt nv12 -c:v h264_amf -quality quality -rc vbr_peak -qmin 20 -qmax 26 -g 120 -maxrate 8M -b:v 2.5M "x264.mkv"

これで使ってる、まあエンコードはしないけどね

-c:v hevc_amf -quality quality -min_qp_i 20 -max_qp_i 28 -min_qp_p 20 -max_qp_p 28 -header_insertion_mode idr -g 120 -rc vbr_peak -bf 1 -vbaq false -maxrate 8M -b:v 1.5M
2023/01/03(火) 04:54:43.41ID:zIiXdB410
FFmpegで指定できる伝達特性をまとめていて気がついたのですが。
zscaleフィルターsmpte240mのガンマと逆ガンマ補正の計算式が逆に実装されているのではないでしょうか?
実際にFFmpegを使用して映像にフィルタを適用し、試したわけではありません。
2023/01/03(火) 05:18:30.99ID:zIiXdB410
ソースコードで言えば、この部分がおそらく間違っているのだろうと思いました。プログラムが読めないので確信はないのですが。
https://github.com/sekrit-twc/zimg/blob/b413cea0a39ee14db2bbb82d5a0805a9337e7a39/src/zimg/colorspace/gamma.cpp#L128-L150
2023/01/03(火) 08:44:49.99ID:Ttl3j4JF0
SMPTE_240M_ALPHA = 1.1115
SMPTE_240M_BETA = 0.0228

光(L)、信号(V)とすると、
smpte_240m_oetf(float V)はこんな処理
1. Vが0以下ならV = 0とみなしてL = 0 (終わり)
2. Vが0.0912 (※4xBETA) より小さいなら
L = V ÷ 4 (終わり)
3. Vがそれ以上なら
L = { ( V + 0.1115 ) ÷ 1.1115 } の (1 ÷ 0.45)乗

smpte_240m_inverse_oetf(float L)はこんな処理
1. Lが0以下ならL = 0とみなしてV = 0 (終わり)
2. Lが0.0228より小さいなら
V = L x 4 (終わり)
3. Lがそれ以上なら
V = 1.1115 x ( Lの0.45乗 ) - 0.1115
2023/01/03(火) 08:48:27.99ID:Ttl3j4JF0
https://www.jstage.jst.go.jp/article/itej1978/45/11/45_11_1342/_pdf

このPDF見ながらソース読んでみたけど、処理自体は正しく書かれてるように思える
あとはこれを使ってる場所が正しくLとVを使ってるかどうかじゃないかなあ
Lを使うべきところでVを使ってるとか、その逆とか
2023/01/05(木) 00:25:07.91ID:7mKKIxKi0
返信ありがとうございます。私もそのPDFを読んでみました。
>このPDF見ながらソース読んでみたけど、処理自体は正しく書かれてるように思える
>あとはこれを使ってる場所が正しくLとVを使ってるかどうかじゃないかなあ
>Lを使うべきところでVを使ってるとか、その逆とか
はい、そう思います。
同じソースコードの330行目を見ると、OETFの引数にVを、EOTFの引数にLを入力していませんか。
もしそうなら、LとVを逆に扱っていないでしょうか?
2023/01/05(木) 00:46:28.28ID:7mKKIxKi0
>>89は予想です。
func.to_linearやfunc.to_gammaって書いてあるのを見て思っただけで、全体の処理の流れを理解していません。
>>87のプログラムの説明助かりました!
2023/01/05(木) 10:37:14.14ID:QEuK8P+m0
>>90
330付近は300から始まるブロックだけど、select_transfer_functionって名前の通りでその処理(リニア化、ガンマ化)をするためにどの計算方法を使うかを選んでいる

リニア化はシーン参照(入力参照)なら上カーブになる240m_inverse、そうじゃない(出力参照)なら下カーブになるRec.1886eotfで正解じゃない?
勘違いしてるかな
いや、出力参照でRec.1886を使ってるのが正しいのかと言われると断言できないけど
2023/01/05(木) 20:49:46.37ID:7mKKIxKi0
リニア化は人間の視覚特性に合わせて暗部の圧縮をするので下カーブになると思います。
ただ、どうして出力参照でRec.1886 EOTFを適用するんでしょう。
PDFの記述と食い違いがあります。(今気づきましたが、1991年の記事なんですね)
Rec.1886はCRTの模倣なので、再生時の逆ガンマ補正がもしCRTだけ(パススルー)だったら理にかなっています。
ネットで調べてもよくわからないです。
とりあえずいまは式をMarkdownへ書き起こす作業をしています。
2023/01/05(木) 22:32:23.12ID:7mKKIxKi0
https://www.desmos.com/calculator/6pe790alex
smpte_240m_inverse_oetfとrec_1886_eotfをプロットしてみました。
https://imgur.com/m4LvLc6
この画像のようにシーン参照のTFと出力参照のTFを組み合わせるのが一般的?なんですかね。
zscaleのRec.709の実装が正しいとすると
シーン参照のTFと出力参照のTFはsmpte_240m_inverse_oetfとrec_1886_eotfだと思います。
うーん。
2023/01/05(木) 22:39:04.19ID:7mKKIxKi0
書き起こした式です。
https://hackmd.io/@ZxGphnYi-5Xv/S1O0xX49j
2023/01/05(木) 23:36:35.76ID:7mKKIxKi0
こちらの画像がより正確かもしれません。
https://imgur.com/4dAy77Y
Scene-referredについて追記した版です。
https://hackmd.io/@ZxGphnYi-5Xv/SJGAX845j
Rec.709も加えました
https://www.geogebra.org/m/cnudez4f
2023/01/05(木) 23:49:13.62ID:7mKKIxKi0
BT470_MとREC_470_BGとLOG_100とLOG_316の式がH.273と違いますね
2023/01/05(木) 23:59:42.83ID:7mKKIxKi0
すみません>>96解決しました。
BT470_MとREC_470_BGは、OETFとinverse OETF、func.to_linearとfunc.to_gammaがそれぞれ逆ですが、結果的に処理は正しく
LOG_100とLOG_316は、式の区間が調整されてますが、計算結果は変わらないようです。
2023/01/08(日) 17:49:44.77ID:dgAHe8aX0
FFmpegのzscaleでST240に変換しようとしましたがエラーが出て処理が進みません
コマンドです。
ffmpeg -y -i testimage.jpg -filter_complex "zscale=rangein=full:primariesin=709:transferin=709:matrixin=470bg:range=full:primaries=709:transfer=7:matrix=470bg" -f image2 -qmin 1 -q 1 -update 1 240m.jpg
7がST240のはずですが…
https://hackmd.io/vaTZN7iBTI-26yxQVd72TQ?view#Rec-ITU-R-BT709-66
2023/01/08(日) 17:51:08.97ID:dgAHe8aX0
テストで使った画像です。
https://imgur.com/a/NV9r62c
2023/01/08(日) 22:59:52.19ID:dgAHe8aX0
smpte240mをFFmpegのzscaleでテストするという目的はまだ達成できていませんが、試行錯誤の結果を報告します。
>>98でFFmpeg5.1を使っていました。
FFmpeg5.1とmasterの間で、FFmpeg/libavfilter/vf_zscale.cが変更されているようです。
コミットメッセージによると、smpte240m transferオプションの追加を含む変更とのことなので、2023年1月4日の最新ビルドで同じコマンドを試してみました。
しかし、>>98と同じ結果、つまりFFmpeg5.1と同じエラーが発生しました。
以下はそのエラーの出力です。
2023/01/08(日) 23:02:48.73ID:dgAHe8aX0
ffmpeg version 2023-01-04-git-4a80db5fc2-full_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 12.1.0 (Rev2, Built by MSYS2 project)
(文字数制限のためconfigurationを中略)
libavutil 57. 43.100 / 57. 43.100
libavcodec 59. 56.100 / 59. 56.100
libavformat 59. 34.102 / 59. 34.102
libavdevice 59. 8.101 / 59. 8.101
libavfilter 8. 53.100 / 8. 53.100
libswscale 6. 8.112 / 6. 8.112
libswresample 4. 9.100 / 4. 9.100
libpostproc 56. 7.100 / 56. 7.100
Input #0, image2, from 'testimage.jpg':
Duration: 00:00:00.04, start: 0.000000, bitrate: 21988 kb/s
Stream #0:0: Video: mjpeg (Progressive), yuvj444p(pc, bt470bg/unknown/unknown), 320x240 [SAR 72:72 DAR 4:3], 25 fps, 25 tbr, 25 tbn
Stream mapping:
Stream #0:0 (mjpeg) -> zscale:default
zscale:default -> Stream #0:0 (mjpeg)
Press [q] to stop, [?] for help
Assertion failed: (!path.empty()) && ("empty path"), file ../src/zimg/colorspace/colorspace.cpp, line 33
Assertion failed: (!path.empty()) && ("empty path"), file ../src/zimg/colorspace/colorspace.cpp, line 33
Assertion failed: (!path.empty()) && ("empty path"), file ../src/zimg/colorspace/colorspace.cpp, line 33
2023/01/08(日) 23:09:47.05ID:dgAHe8aX0
zscaleが対応していない伝達特性reserved、bt1361、smpte428とは異なり、FFmpegは数秒間停止した後に終了するような動作をします。
709 1
bt709 1
bt470m 4
bt470bg 5
smpte170m 6
601 6
linear 8
linear 8
log100 9
log316 10
iec61966-2-4 11
iec61966-2-1 13
2020_10 14
bt2020-10 14
bt2020-12 15
2020_12 15
smpte2084 16
arib-std-b67 18
では変換に成功しました。
2023/01/13(金) 22:40:17.47ID:TRrhIozd0
書けた!
2023/01/14(土) 19:01:38.04ID:hBwrxSa70
規制解除願う
2023/01/18(水) 20:05:37.97ID:imvRxbLL0
規制された?
2023/01/21(土) 18:03:30.03ID:ctgFreAT0
あなたはこのスレッドにはもう書けません。
2023/01/22(日) 12:25:10.23ID:A/H5B6HI0
マジか
2023/01/22(日) 18:23:44.45ID:XUyiU5Rj0
TEST
2023/01/22(日) 19:42:04.14ID:vglLNyZU0
てすてす
2023/01/25(水) 02:34:56.04ID:YfHvOxpR0
あなたはこのスレッドにはもう書けません。
■ このスレッドは過去ログ倉庫に格納されています
大学生アイラと影の怪物と戦うリョウが、深夜3時3分の静止した世界で交錯する超常スリラーの概要

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