探検


ffmpegならこちらへ 6

■ このスレッドは過去ログ倉庫に格納されています
2021/08/15(日) 14:51:05.12ID:5lnIQtJ80
公式サイト
http://ffmpeg.org/

エンコード、ストリーミング配信を高画質高音質で行えるffmpeg。
OSに拘らず対応コーデックが多い。
対応コーデックが多く、多彩なオプションを使用可能。
コマンドラインから使用することができる。
ffmpegならこちらへ 5
https://egg.5ch.net/test/read.cgi/software/1597315425/
2022/02/03(木) 23:55:43.37ID:Fn6rI1qT0
ハードウェアエンコードは圧縮率が悪い
2022/02/03(木) 23:57:36.51ID:PsPO+Yq00
しかも画質が悪い

持ってない民は何故かそう信じておるのじゃ
2022/02/04(金) 00:00:35.32ID:r6E04wIY0
HWエンコードよりSWエンコードの方が高画質だし
基本的に専用機だと思って使えば多少の遅さは問題にならない

あと今の相場だとComet/RocketLakeのi5は最小構成なら5万に収まるし下手すりゃグラボ1枚より安いというね
一応QSVも使えるし
2022/02/04(金) 08:25:46.62ID:B12T1v8H0
ハードウェアエンコの画質が悪いのは事実だぞ
2022/02/04(金) 08:36:23.39ID:K2dVQUIc0
悪いと思うならビットレートを盛れ
2022/02/04(金) 08:42:40.74ID:r6E04wIY0
画質を維持して容量を落とすためにSWで再エンコ掛けてるんだが
2022/02/04(金) 08:53:31.44ID:v81bCmqe0
録画はHWでロスレス、編集後はSWで画質稼いでるな
2022/02/04(金) 08:53:46.91ID:v81bCmqe0
そうすると画質悪くならんし
2022/02/04(金) 09:03:17.65ID:Mi05yDmk0
h.264のロスレス使ってるのか?
凄い編集に使いにくそうだな
2022/02/04(金) 09:10:03.61ID:v81bCmqe0
4Kじゃないし、大した編集じゃないからね
264なら容量以外は重いとかもないよ
容量も他のロスレスより圧縮率よかったし
2022/02/04(金) 09:10:08.74ID:vBWz597p0
録画はtsそのままだな
2022/02/04(金) 09:30:28.29ID:4PDzozl50
VPN用にラズパイつけっぱなしにしてるからアイドルさせておくのもと思ってHWエンコ鯖的に使ってたことある。
確かにあんまり画質良くない。
デコードだけSWにすると少し改善したけど両方SWでやった方が仕上がり良かった。
ただしFHDだと処理速度が0.1xとかって出るw
2bでの話だから今の4とかだと全然違うかもね。
NVIDIAのエッジコンピューティング用に良い感じのGPU積んでるSBCだとどうかな。
2022/02/04(金) 09:31:56.36ID:r6E04wIY0
ロスレスではないけど1080p60fpsをNVEnc(H.264)100Mbpsで録画した後
H.265で10Mbps辺りをターゲットにSWで再エンコ掛けてる
AV1はまだまだ実用には厳しい感じ
2022/02/04(金) 09:43:30.48ID:Mi05yDmk0
AV1のエンコードはSVT-AV1を使え
最近のアップデートでメモリ使用量が減り高速化もされてとても使いやすくなったぞ
もうx265を使う理由がないくらい
2022/02/04(金) 09:53:24.02ID:r6E04wIY0
今週SVT-AV1ビルドしてみたけど厳しかった
2022/02/04(金) 09:55:01.31ID:vBWz597p0
静止画はうまくやってるけど、
動画でどこをサボっても人間にバレないかのノウハウがまだ甘いんだよな
2022/02/04(金) 11:43:33.33ID:+7WnstwI0
>>391
プログラムとかスクリプト関係で「調べれば使える」は全然問題ないよ
これらは暗記物じゃなくて、「使い方や仕様の調べ方の理解」が大事

本職のエンジニアでも検索エンジン掛けまくりがデフォだよ
2022/02/04(金) 12:30:14.48ID:vBWz597p0
昔のプログラム言語は仕様を全部暗記して書けたけど、
今はもうエディタがヒントを出してくれて、それに頼って書くのが普通
そのお陰で文章のように読めるコードになるけど、とても覚えられない
確かあんな機能があった、だけ記憶してれば十分
2022/02/04(金) 13:24:59.58ID:+k7kTiXW0
>>414
エロでも高ビットレートの低フレームレート派とその逆が好きな人との対立は根強いからな。
自分は断然に前者だわ。
2022/02/06(日) 17:39:01.09ID:VunAN6LG0
本職はffmpegなど使わない
2022/02/07(月) 07:56:50.62ID:d+0NfNYr0
mcdeintってffmpeg4.4までなんだね・・・
2022/02/07(月) 11:31:41.40ID:Gr9VpHag0
-filtersで確認したらマジだった
421名無しさん@お腹いっぱい。
垢版 |
2022/02/07(月) 13:44:20.21ID:pNNybtuc0
https://github.com/FFmpeg/FFmpeg/commit/95054bfa48cc71db1c7bf66a6b6628cb62f262bf
https://ffmpeg.org/ffmpeg-filters.html#mcdeint
This filter is only available in ffmpeg version 4.4 or earlier.
ですって
2022/02/07(月) 13:53:03.75ID:ivzMUAi90
それって
https://forest.watch.impress.co.jp/docs/news/1381214.html
に記してある通りでないの…
423名無しさん@お腹いっぱい。
垢版 |
2022/02/07(月) 14:03:57.12ID:jfPgjwme0
mcdeintちゃんは要らない子
2022/02/07(月) 14:05:48.50ID:NWKYirrZ0
そこまで気にするなら、解除せずに残して未来の技術に託す
425名無しさん@お腹いっぱい。
垢版 |
2022/02/07(月) 15:50:11.32ID:pNNybtuc0
>>422
お前この記事見て「あっFFmpeg5.0でAPIが整理されてる…古いAPIに依存してるmcdeintが使えなくなるな」って分かるのかよ天才じゃん
2022/02/10(木) 20:05:36.44ID:b9fM0CjW0
2010年ぐらいまでのアニメって本編24pだけどOP・EDだけ30pとか本編も24p/30pが混在してるとかでブルーレイでも1080iで収録ってのが割とあったけど
最近ってどうなってんの?全部24p?
2022/02/10(木) 20:23:47.65ID:jfEn3LFM0
p何
2022/02/11(金) 16:44:42.89ID:dOcOJsDt0
音声は圧縮してもそれほど容量が変わらないので元ソースのまま圧縮動画に適用したいんですが
コマンドのサンプルを探しても音声を圧縮する記述ばかりでやり方がわかりません
記述方法を教えてもらえるとありがたいです
2022/02/11(金) 16:51:03.49ID:JeDWD7H+0
-c:a copy
2022/02/11(金) 17:20:38.68ID:gAg5CoXQ0
hlsマニフェスト(AES-128)を用いて結合する際、
キーのパスに "#" が含まれると、その階層が消えてしまうな
v.4.3以降でなされた変更のようだ
マニフェスト内の "#" を単純にコメントとして扱うようにしたことが原因だろうなぁ
2022/02/11(金) 17:45:12.47ID:gAg5CoXQ0
もっと最近だな
2021年4月以降の変更みたい
mpvでも同じ症状が出る
2022/02/17(木) 21:44:59.87ID:/WOjMSkn0
俺用メモ
-c:v libx265 -preset slow -tune animation -crf 16 -g 120
これでステレオ音声込みの1話の容量が1.2GBを超えるようなBDソースのアニメは意図的にフィルムグレインがエフェクトとして加えられている可能性がある
例としてかなりキツめのグレインが入ってるジョジョ3部はcrfを12ぐらいまで上げるか-tune animationで下げられる"psy-rd"と"aq-strength"を上げる必要があった
どっちにしろビットレート的には15Mbpsぐらいまで上がるからBDの半分ぐらいまでしか縮まない
メモ終わり
2022/02/18(金) 08:58:34.66ID:QZRStL2L0
俺用メモとか書いている奴うざい
役に立ってるとでも思ってるのか?
2022/02/18(金) 09:41:09.66ID:SP011yB90
有用な解析結果じゃなくて可能性とか憶測だもんな
2022/02/18(金) 13:37:49.19ID:IKxSWWq50
ffmpegの話でもコーデックの話でもなく、映像の画作りについての推測ってところがミソ
そりゃFFmpegスレでは役に立たない
2022/02/18(金) 14:12:35.37ID:xwY9ASqr0
圧縮効かない動画を無理やり圧縮できるようにする話じゃないの?
2022/02/18(金) 14:18:08.93ID:ALuzZGs00
俺も>>436の解釈だったわ
まあどちらにせよ活用しづらい情報ではあるけども
2022/02/18(金) 15:21:35.44ID:ozB5acjr0
嫌ならわざわざ俺用メモって必ず最初に入れてるだからあぼーんでも何でもすればいいのでは…
2022/02/18(金) 15:23:29.98ID:03L5VsRF0
そういうお年頃なのよ
思春期ってやつ
2022/02/18(金) 15:33:07.18ID:ozB5acjr0
そんなものか
まあ誘導しようにもx265(というかx264も含めたソフトウェアコーデック全般)のスレがDTV板に立たなくなって久しいから
各エンコードソフトのスレに書くしか無いにも実情なんじゃないの
2022/02/18(金) 15:40:09.52ID:55/uaAW50
低ビットレートだとシュタゲのOPがとんでもなくガビガビになってた記憶がある
442名無しさん@お腹いっぱい。
垢版 |
2022/02/18(金) 21:08:58.56ID:dLwNbRBs0
カラースペースがBT.601でエンコードされたMP4ファイルを
BT.709に変換してエンコードし直したいのですが、

https://nico-lab.net/colorspace_with_ffmpeg/

このページにあるように、

-vf colorspace=all=bt709

を使うと、BT.709に変更することはできるのですが、
色合いが元の動画とは変化してしまいます。

見た目の色合いはそのままでカラースペースだけを変更するにはどのようにしたら良いですか?
2022/02/18(金) 22:17:19.63ID:IKxSWWq50
フィルタオプションのispace・irange・iprimaries・itrcでそれぞれを適切に指定するか、iallで一括指定する
これは先頭にiが付いてるようにinput(入力)側への設定
i無しのallフィルタオプションとかは出力側へのもの
2022/02/19(土) 09:39:27.48ID:tS7stOmz0
>>442
たぶんBT.601で再生してる
出力オプションにBT.709を付ければいい
コンテナとビットストリームに色情報を付けて
このデータはBT.709だってことを再生ソフト伝えてやる
出力オプションの位置は-vf colorspace=all=bt709のすぐ後、-c:vの前
2022/02/21(月) 07:44:04.57ID:lC/IBTus0
縦解像度が720未満でbt709のメタデータがついてないとか?
2022/02/21(月) 14:33:04.59ID:97xWEX2p0
複数のmp4をffmpegでそれぞれtsファイルに変換して、一つのm3u8にtsファイルを定義してChromeのvideoタグで再生しようとしたのですが最初の動画しか再生してくれません。
一つのmp4からtsファイルを作ると行けるのですが駄目なのでしょうか?
2022/02/22(火) 14:07:36.99ID:Dddh9tJS0
「それぞれtsファイルに変換して、一つのm3u8にtsファイルを定義」が何してるのかよく分からんが
Chromeのvideoタグでm3u8のtsファイルを再生するってのをHLSって前提で話すと
#EXT-X-DISCONTINUITYのタグを動画と動画の間の最初のセグメントに手動で入れてやればいけると思うよ

元からHLS向けにエンコードしたmp4を単にHLSにするなら
ffmpeg -f concat -safe 0 -i file.txt -c copy -hls_time 2 -hls_flags single_file -hls_playlist_type vod out.m3u8
(-hls_time 2はGOPが2秒と想定)

何かしらの動画をHLS向けにエンコードしつつHLSにするなら(例として2MbpsのH.264と96kbpsのAAC)
ffmpeg -f concat -safe 0 -i file.txt -c:v -libx264 -crf 24 -maxrate:v 2000K -bufsize:v 4000K -g 48 -keyint_min 48 -sc_threshold 0 -hls_time 2 -hls_flags single_file -hls_playlist_type vod out.m3u8

file.txtの中
file 'D:\MOV\example_1.mp4'
file 'D:\MOV\example_2.mp4'
file 'D:\MOV\example_3.mp4'

で変換してやればout.m3u8とひと塊のout.tsが出てくるからそっちのが楽だとは思うけど
2022/02/22(火) 14:10:30.77ID:Dddh9tJS0
AACの指定忘れてたわ

ffmpeg -f concat -safe 0 -i file.txt -c:v -libx264 -crf 24 -maxrate:v 2000K -bufsize:v 4000K -g 48 -keyint_min 48 -sc_threshold 0 -c:a aac -b:a 96k -hls_time 2 -hls_flags single_file -hls_playlist_type vod out.m3u8
2022/02/22(火) 23:10:22.55ID:Uekbj5o00
ありがとうございます!
#EXT-X-DISCONTINUITYは部分的ですが確かに行けそうです!
ただ、やり方が悪いのかもですが、m3u8がリロードされたときに機能してくれず、惜しい。。。
個別に保存されたmp4をランダムにストリーミングさようとしたのですが、、、うーん、リロード時に動かず。
2022/02/24(木) 04:49:58.13ID:YNvzhkjG0
基本的な質問で申し訳ないんですが、ffprobeで取得できるストリーム情報は、ファイルに埋め込まれているものを読み込んでいるのか、ファイルから情報を算出しているのかどちらになるのでしょうか?
2022/02/24(木) 17:35:33.34ID:c2Kf6u+/0
メタデータも読んでるしファイルの冒頭も読んでるからどっちもじゃない?
どっちが優先とか言われると分かんないけど
2022/02/24(木) 20:31:39.64ID:YNvzhkjG0
>>451
ありがとう。冒頭も読むって事はメタデータ壊れててもストリーム情報は取得できるって事?
453名無しさん@お腹いっぱい。
垢版 |
2022/02/25(金) 00:42:12.33ID:hAQavoPM0
>>452
取得したい「ストリーム情報」と壊れた「メタデータ」によって変わるだろうしそこは分かんない
言える事は-probesizeで容量(デフォ5Mバイト)、-max_probe_packetsでパケット数(デフォ2500パケット)、-analyzedurationで秒数(デフォで5Mマイクロ秒=5秒)をそれぞれ指定して
いずれかがの値に達するまで解析するのがデフォの動作って事
2022/02/25(金) 02:09:33.26ID:gaZ8jeiE0
>>453
ありがとう。
オプションなしと -analyzedurationで20秒を指定した結果のストリーム情報が全く変わらなくて(開始5秒程度でストリーム数が変わってる動画ファイル)ffprobeの情報は一体どこからどうやって引っ張ってきてるんだろうと思って。
メタデータなしでもストリーム情報が取得できるなら、ファイルぶつぎってやろうかなと。
2022/02/25(金) 08:59:52.52ID:hAQavoPM0
>>454
ビットレートによっちゃ先に-probesizeの5MBに引っかかって解析終了するけど合わせて変えても同じだった?

途中でストリーム数が変わるって事は何かしらの.tsファイル?
だったらコンテナの構造上ぶった切っても基本的にどっからでも再生できるから切っていいと思うよ
2022/02/25(金) 09:34:26.44ID:gaZ8jeiE0
>>455
そう、TSファイル。最初の5秒程度に前の番組が入っているから、analyzeduration=20M probesize=1000Mにしてる。

前の番組だけが0:15のストリーム使用してるとして

オプションなし…0:15あり、60秒オプションあり…0:15あり

なんだけど、ファイル半分に分割してみてそれぞれにオプションなしで解析かけると

ファイル1(前側)…0:15あり、ファイル2…0:15なし

みたいになる。ffprobeがコンテナのどの部分を見て解析値を出してるのか色々よく分かってなかいから初めの質問をさせて貰ったんだ。
2022/02/25(金) 09:44:01.93ID:c95Pch/+0
中華ストリーミングサイトからAV落とすと頭にCM結合されてるんだが簡単にカットする方法ないかな。
pythonで0.5秒刻みで静止画を切り出していって全面真っ黒が1秒続いたら編集点とみなすみたいなことはできそう。
2022/02/25(金) 15:03:46.72ID:FOz6mECG0
AVくらい買ったら?
高いもんじゃないだろ
2022/02/25(金) 17:31:34.40ID:nQ5fJZnn0
心まで貧乏になるな
460名無しさん@お腹いっぱい。
垢版 |
2022/03/06(日) 01:56:51.12ID:THlbhWAd0
Macでbilibiliの動画ファイルをh264で再エンコードするとカーネルパニック起こすんだけど、上手くいってる人いる?
2022/03/06(日) 02:52:32.64ID:2aYq1LOP0
videotoolbox使ってるとか?
462名無しさん@お腹いっぱい。
垢版 |
2022/03/06(日) 11:16:12.14ID:THlbhWAd0
>>461
--enable-videotoolbox でビルドされてた。
ビルドせずにvideotoolboxをオフにする設定ってあるんですかね?
2022/03/06(日) 15:43:37.63ID:T6UDG6rP0
オフにするというか-hwaccel videotoolboxだったり-c:v h264_videotoolboxで明示的にvideotoolboxを指定しなかったらデコードはソフトウェアデコードだし
エンコードは指定したエンコーダ(libx264ならx264)が使われるだけじゃ
2022/03/06(日) 19:42:22.28ID:WLZUrXvB0
そう言えば、Montereyになってからvideotoolboxが使えなくなりましたね。
465名無しさん@お腹いっぱい。
垢版 |
2022/03/07(月) 10:04:11.25ID:sn3JpvJr0
>>463
じゃあvideotoolboxは関係ないなあ
うーん
2022/03/07(月) 19:07:33.34ID:6QvSbGoJ0
俺用メモ:
ffmpegのx264/5は--qpfileが使えない
-x265-params qpfile=qp.txt で指定してもそんなコマンド知らないと言われエンコーダ側でキーフレームを強制できない
なのでffmpeg側の-force_key_framesで指定する

@
-force_key_frames:v hh:mm:ss.mmm で指定する
フレームベースじゃなくタイムベースだけど俺の場合はこっちの方が都合がいい(元々チャプター用にタイムベースでデータを用意してるから)
複数入れるにはコンマ(,)で区切る
例:-force_key_frames:v 00:00:00.000,00:02:32.819,00:04:14.379

A
-force_key_frames:v expr:計算式で指定する
この計算式にはフレームベースが利用可能
"n"が処理中の現在のフレームだから"n"はキーフレームにしたいフレーム数か否かを計算すればいけるっぽいが
俺の頭だとフットーしたから頭いいやつ向け
例:-force_key_frames:v expr:eq(n,一回目にキーフレームにしたいフレーム数),eq(n,2回目にキーフレームにしたいフレーム数)
↑毎フレーム毎に映画一本で20回ぐらい計算するけど大丈夫???分かんない

https://kakashibata.hatenablog.jp/entry/2019/09/08/222720
https://ffmpeg.org/ffmpeg-utils.html#Expression-Evaluation
↑計算式の解説

メモ終わり
2022/03/07(月) 21:04:39.31ID:6QvSbGoJ0
>>466
やっぱりAは動かなかったわコンマ区切りじゃなくて式一回で表さないとダメみたい俺には無理
2022/03/07(月) 22:52:16.00ID:owEVDzFk0
Aはeq(n,0)+eq(n,30)みたいに+でつなげればいいよ
2022/03/08(火) 01:50:54.11ID:w31Y0/Tg0
>>468
天才かよそれでいけたわ
これでタイムベースもフレームベースもいけるわありがてぇ
2022/03/08(火) 19:58:37.14ID:ZOzRgADt0
いいってことよ。
2022/03/09(水) 18:22:44.97ID:+sRKCPgQ0
https://github.com/FFmpeg/FFmpeg/commit/f497731260d42e920318ca745a8146febb9e055e
because audio was presumed to only consist of keyframes. Yet this assumption is not true for e.g. TrueHD.

これってTrueHDって映像コーデックみたいにキーフレームとそうじゃないフレームがあって自由にカットできないってこと?
472名無しさん@お腹いっぱい。
垢版 |
2022/03/10(木) 12:13:58.46ID:hPuOItIn0
過去スレ見れないので教えてください

ffmpeg の入力ファイルとしてavsファイルを行うためにはどのような設定が必要ですか。

ちなみにffmpegはffmpegの公式サイトからダウンロードした最新版です


もし、個人でビルドする必要があるのであればVisualStudio2022で行いたいので拡張子sln が同梱されてるffmpegございますか
2022/03/10(木) 13:16:16.26ID:uFB3pPHk0
は?

ちなみにffmpegはffmpegの公式サイトからダウンロードした最新版です
2022/03/10(木) 13:33:28.55ID:Nx9lvRXb0
ffmpegを何もオプションをつけずに呼んで--enable-avisynthのフラグが立ってるか確認する
それがあったら普通に-i test.avsで読み込める
多分
2022/03/10(木) 14:29:31.00ID:s2GeT3Qn0
分かってるだろうけどあくまで「avsファイルの解釈が出来る」だからAviSynthをインストールしないとダメだぞ
476名無しさん@お腹いっぱい。
垢版 |
2022/03/10(木) 14:51:35.35ID:hPuOItIn0
AviSynthはインストール済みですが—enable-avisynthは見当たりませんでした
2022/03/10(木) 19:28:49.93ID:s2GeT3Qn0
正直AviSynthを使うのにその程度の知識で大丈夫なのって不安がいっぱいだけど
WindowsならGyanDがビルトしてるの使えばいいよ
BtbNのビルドだとLGPL版にはAviSynthが入ってない

Macは知らん
478名無しさん@お腹いっぱい。
垢版 |
2022/03/11(金) 08:01:06.21ID:PYMJ52do0
>>477
GyanDでいけました
ありがとうございました😭
2022/03/11(金) 11:28:33.26ID:ZDDhmWAt0
前も見たけどGitHubのリリースページにmaster・5.0・4.4/Windows・Linux/GPL・LGPL/無印(Static)・shared/が機械的に1行でズラっと表示されるBtbNと
説明文まで書いて丁寧にページ作ってるGyanじゃ後者の方が分かりやすそうなのに初心者ほどBtnN選ぶよな…なんでだろう
2022/03/11(金) 11:33:06.12ID:ZDDhmWAt0
ごめん分かったわffmpegでググって出てくる日本語ページの大半が何故かBtbNのshared版DLしろって指示してたわ…
2022/03/11(金) 12:26:14.32ID:XEWp23Ha0
あそこはessentials?full?どっちがいいの?ってなるからw
2022/03/11(金) 13:35:20.91ID:m812ysCT0
--enable-opencl だと何か面白いことできる?
2022/03/12(土) 18:22:21.46ID:BeIFlZr10
scale_cudaを使ったら高速化した
でもhwupload_cudaを付けないとエラーになるファイルがある
常に付ければいいかというと逆にhwupload_cudaを付けるとエラーになるファイルもある
どうすれば
2022/03/13(日) 00:38:12.74ID:X8Te2yTd0
-hwaccel cuda ←CUDAを使ってデコード処理を行う事を明示する
-hwaccel_output_format cuda ←デコード処理の結果のデータをGPUのCUDAメモリ(=VRAM)に出力する事を明示する
-vf scale_cuda、yadif_cuda、scale_npp ←CUDAを使ってフィルタ処理をする、HWエンコーダと違って明示的にCUDAメモリにデータが存在しないと処理できない(多分)
-vf hwdownload ←結果をCUDAメモリからメインメモリ(RAM)にムーブする、CUDAメモリにデータがある場合、CPUフィルタやSWエンコーダに渡す前にこれを付ける
-vf hwupload_cuda ←結果をRAMからCUDAメモリにムーヴする、RAMにデータがある場合、CUDAフィルタに渡す前にこれを付ける
-c:v h264_nvenc、hevc_nvenc ←NVENCでエンコードする、RAM・CUDAメモリのどちらにデータがあっても自動でNVENCで処理してくれる

ってのが基本のはずだから不要なところで-hwupload_cuda付けてるんじゃない?
2022/03/13(日) 00:41:40.34ID:sBT0ypW70
不要かどうかがデータによって変わるということ?
2022/03/13(日) 01:04:43.85ID:X8Te2yTd0
>>483の書き方だと
-vf hwupload_cudaを
@付けなくてもエラーにならないや
A付けないとエラーになるので、付けるとエラーが消えるやつ
B付けるとエラーになるにで、付けないとエラーが消える奴

の3パターンあるように見えるけど具体的にどういうファイルにどういう前後処理してるのかが分かんないからそこまでは分からん
ファイルによって違うならHWデコーダが対応してないとかじゃないの
2022/03/13(日) 01:15:45.17ID:X8Te2yTd0
誤字だらけだったからもう寝るわ…
2022/03/13(日) 09:00:14.69ID:QbOnYa6V0
>>484
横から失礼します。

例えば1234.mp4という元ファイルがあった場合。
具体的なコマンドの記述はどうなるんですか?
2022/03/13(日) 09:29:27.29ID:sBT0ypW70
やらせてる処理は
-hwaccel cuda -hwaccel_output_format cuda
-vf yadif_cuda,scale_cuda=1280:720:interp_algo=lanczos,setsar=1/1
これで殆どのケースでうまくいくんだけど、たまに
Impossible to convert between the formats supported by the filter 'graph 0 input from stream 0:0' and the filter 'auto_scaler_0'
こんなエラーが出る
hwupload_cudaを追加するとエラーは出なくなるけど、逆にうまく行ってたファイルで
同様のエラーが出るようになる
2022/03/13(日) 16:23:13.19ID:xBjPAuer0
うまく行くファイルと行かないファイルでGPUデコード可能か不可能か分かれてるんでは
2022/03/13(日) 19:02:29.51ID:X8Te2yTd0
>>488
1234.mp4じゃ面倒くさいから60iのinput.mp4(1080p)を30pのoutput.mp4(720p)に

・NVDECでデコード→yadif_cudaでインターレース解除→scale_cudaでリサイズ→NVENCでエンコード
ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 -vf yadif_cuda,scale_cuda=-2:720 -c:v h264_nvenc -c:a aac output.mp4
CUDAで完結するので特に難しい事は無い

・NVDECでデコード→yadif_cudaでインターレース解除→scale_cudaでリサイズ→libx264でエンコード
ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 -vf scale_cuda=-2:720,hwdownload,format=nv12 -c:v libx264 -c:a aac output.mp4
CUDAからメインメモリにコピーしてx264に渡す
hwdownloadの後にformat=nv12は必須、エラーが出るならyuv420pにする
10bitの場合はp010かp016、エラーが出るならyuv420p10le

・NVDECでデコード→yadif(CPU)でインターレース解除→scale_cudaでリサイズ→libx264でエンコード
ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 -vf hwdownload,format=nv12,yadif,hwupload_cuda,scale_cuda=-2:720,hwdownload,format=yuv420p -c:v libx264 -c:a aac output.mp4
CUDAからメモリにコピーしてフィルタ処理、メモリからCUDAにコピーしてフィルタ処理、CUDAからメモリにコピーしてx264でエンコード
俺の環境だとx264手前のhwdownloadはnv12だとエラーになるからyuv420p

・NVDECでデコード→yadif(CPU)でインターレース解除→scale(CPU)でリサイズ→NVENCでエンコード
ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 -vf hwdownload,format=nv12,yadif,scale=-2:720 -c:v h264_nvenc -c:a aac output.mp4
>>484で書いた通りHWエンコーダー(NVENC)はhwupload_cudaで明示的にCUDAにコピーしなくてよい

大隊こんな感じ
2022/03/13(日) 19:08:01.76ID:X8Te2yTd0
>>489
言ってる事同じになるけどエラーメッセージ通りフィルタのどっかでフォーマットが対応してないんじゃない?
具体的にエラーになるファイルのサンプルとそこ以外のコマンドが分かればもうちょっと分かるかもしれんけど
2022/03/13(日) 19:12:25.42ID:sBT0ypW70
フィルター'graph 0 input from stream 0:0'によってサポートされるフォーマットと
フィルター'auto_scaler_0'(によってサポートされるフォーマット)の間の変換ができない

フォーマットとは何?
2022/03/16(水) 19:47:30.61ID:nvrM2YcN0
auto_scalerはフィルタやコーデックにデータ渡す時にいい感じに処理してくれるスケーラー
Impossible to convert between the formatsのフォーマットはピクセルフォーマット
フィルタにはそれぞれ対応してるピクセルフォーマットがあるからエラー出るならその手前でformat=で処理しなきゃダメ
てか「前後の処理」と「具体的なファイル」って言われてるのに情報小出しにししてたら誰も教えてくれないぞ
2022/03/16(水) 20:07:50.38ID:yiC6ZZWv0
yuvなんやらの奴ね
IO... yuv420p10le 3 15
これがエラーになる
IO... yuv420p 3 12
これならok

BITS_PER_PIXELが違うから?
2022/03/16(水) 22:52:32.97ID:EpRAwytE0
format=nv12|p010le
を挟んでみるとか
2022/03/16(水) 22:54:17.39ID:yiC6ZZWv0
とりあえず、yuv420p10le と書いてあったら -vf hwupload_cuda を追加する
という仕組みにしたら両対応でいけるようになった
何故そうなるのかは全く理解してない
2022/03/17(木) 19:12:51.32ID:OgYoVat60
何度も言うけど小出しせずにファイルの詳細とエンコード含めた全部のコマンドを貼りなよ、というか貼らない理由は何?
>>495もIO...って
ffmpeg -pix_fmts
の表記じゃないのソレ

どうせ
HWデコードに対応してないファイルを読み込もうとする→自動的にSWで読み込む→CUDAメモリにデータが無いのでCUDAフィルタは使えない→エラー(hwupload_cudaでCUDAにデータ渡せば解消)
HWデコードに対応しているファイルを読む→CUDAに既に出力されている→hwupload_cudaで存在しないメインメモリのデータをCUDAに渡そうとする→エラー(余計なhwupload_cudaを消せば解消)
って感じでしょつまり>>490>>492の書き込みで全部終わってる
■ このスレッドは過去ログ倉庫に格納されています

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