【視聴・録画】Linuxでテレビ総合16 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
>>241
PT2とPT3で挙動が違うのかもしれませんね。 こちらでも確認 (GRって地上波のことだよね?)
PT2ではダメだけどPT3はOK
ちょっと調べてみます PT1/2のドライバは最近ドライバの構造を変更し
内部パーツ毎に切り分けて一部をPT3等と共有するように分解したので
そのせいと思われます
# 私のせいです m(_ _)m しばらくお待ちください もしやDVBドライバ書いてる方ですかい
拝んでおこう
ありがたやありがたや パッチを作ってみました
PT2をお持ちの方はテストにご協力いただけると有り難いです
out-of-tree ビルド用のソース: ttps://dotup.org/uploda/dotup.org1740977.zip.html
パッチのみ: ttps://pastebin.com/CreV9Zji >>247
PT2ないから試せないけどお疲れ様やで
……パッチとは関係ないんだけど時間あったら教えて欲しい
dvdv5側でPT3のLNB電源ってコントロールできるんです?
libdvbv5のパッチ見てもサッパリわからんかった
LNBf指定してLNA Powerつけると動いたりするんかな? dvbv5-zapは、衛星波の場合open時に常にLNB電源をONにするみたい(OFFに/何もしないことができない)
-l 110BS のコマンドラインオプションを指定するか、channels.confにLNB = 110BS とCOUNTRY = JP を付け加えると
自動的にON(どちらも指定してないとエラーになる)、 close時にOFF
もちろんドライバレベルでは/dev/dvb/adpaterN/frontend0をオープンしてDTV_VOLTAGEプロパティを
指定することでON(15V,11V), OFFが制御できるし、指定しなければ何も変更しない。
ISDB向けパッチ当てたmpvとかはチャンネル設定ファイルにDTV_VOLTAGEの指定があればそれに従う、
なければ何もしないという動作をしている
あとsleep時にLNBをoffにするかどうかはdvb-coreモジュールのdvb_powerdown_on_sleepで制御できるよ >>249
詳しくありがとう!
ドライバ側のDTV_VOLTAGEまでは見つけてたんだけど
dvbv5-zapでどう叩いてるのか理解できてなかった ぬぬ
v4l-utils-1.16.3でLNB = 110BS をやると
command POLARIZATION (256) not found during retrieve
が出るな
/lib/libdvbv5/dvb-sat.c の110BSにPOLARIZATION_OFFとかが必要なんか? >247
debian stretchでコンパイルできないです。
/tmp/kmod-pt1-test1/pt1.c:126:27: error: field ‘qm1d1b0004’ has incomplete type
struct qm1d1b0004_config qm1d1b0004;
^~~~~~~~~~
/tmp/kmod-pt1-test1/pt1.c:132:24: error: field ‘demod_cfg’ has incomplete type
struct tc90522_config demod_cfg;
^~~~~~~~~
In file included from /tmp/kmod-pt1-test1/pt1.c:33:0:
/tmp/kmod-pt1-test1/pt1.c:141:19: error: ‘TC90522_I2C_DEV_SAT’ undeclared here ( not in a function)
I2C_BOARD_INFO(TC90522_I2C_DEV_SAT, 0x1b),
^
/usr/src/linux-headers-4.18.0-0.bpo.3-common/include/linux/i2c.h:440:10: note: i n definition of macro ‘I2C_BOARD_INFO’
.type = dev_type, .addr = (dev_addr)
^~~~~~~~
/tmp/kmod-pt1-test1/pt1.c:149:19: error: ‘TC90522_I2C_DEV_TER’ undeclared here ( not in a function)
I2C_BOARD_INFO(TC90522_I2C_DEV_TER, 0x1a),
^
/usr/src/linux-headers-4.18.0-0.bpo.3-common/include/linux/i2c.h:440:10: note: i n definition of macro ‘I2C_BOARD_INFO’
.type = dev_type, .addr = (dev_addr)
^~~~~~~~
/tmp/kmod-pt1-test1/pt1.c: In function ‘pt1_init_frontends’:
/tmp/kmod-pt1-test1/pt1.c:983:25: error: storage size of ‘dcfg’ isn’t known
struct tc90522_config dcfg;
^~~~
/tmp/kmod-pt1-test1/pt1.c:999:29: error: storage size of ‘tcfg’ isn’t known
struct qm1d1b0004_config tcfg; >>251
libdvbv5の場合 衛星波にはPORALIZATIONの設定が必須で、
channels.conf にPORALIZATION = RIGHT が必要だったと思う(値は多分ドライバ側で無視されるので何でもいいはずだけど)
>>252
新し目(>=4.18?)のカーネルでないとコンパイルできないと思う
https://www.linuxtv.org/repo/ のmedia_build レポを使ってバックポートされた版にパッチを当てれば
ビルドできる可能性あるけど、
その場合多分dvb-core,tc90522他の依存モジュールも一緒にextramodulesにコピーしないとダメだと思う debianのカーネルソースを落としてなんとかコンパイルできました。
README通りにやりましたが、作成したearth-pt1.koを読み込んでいるか不安ですが。。 ご苦労さまです
modinfo earth-pt1
してfilename: の欄が.../extramodules/earth-pt1.ko になってればおk
実行してるカーネルのバージョン(uname -r) と、ビルドしたカーネルのバージョンが違ってるとかだと
そもそもmodprobe/insmodでエラーが出るはず とりあえず数十分ほど、地デジx1, BSx2をMirakurun経由でWindowsのTVTestで3画面同時視聴
したところ、1度だけ、BSの1画面が止まっただけでした。
止まったときも、以前のようにエラーカウントが増えていくのではなく、
単純にTSが流れてこない感じでしたので、大幅に改善しています。
いまのところ問題があったのはその1回だけで、ドライバが原因とも言い切れないので、
さらに長い時間検証してみます。 あと、基本的なことを質問して申し訳ないのですが、
もしもとのカーネルのドライバを使いたい場合は、
modprobe -r earth-pt1
rm earth-pt1.ko
reboot
で、もとに戻りますでしょうか。 1時間ほど経過したところで1画面(BS)の映像が止まりました。
信号レベルの数値は動いているのですが、その状態で録画しても
再生できないTSができてしまいました。
もう少し条件を絞って(同時視聴数を減らす等)みます。 ドライバ書いてらっしゃる方がいると聞いてすっ飛んで来ました.教えてください.
3枚刺ししたPT3で,Linux標準のdvbドライバを使用すると3枚目が認識しません.
Debian Stretch 9.6です.m-tsudo/pt3のドライバだと3枚分認識します.どうすればよいのでしょうか
$ dmesg | grep pt3
[ 19.155581] earth_pt3 0000:03:00.0: DVB: registering adapter 0 frontend 0 (Toshiba TC90522 ISDB-S module)...
…中略
[ 19.544913] earth_pt3 0000:03:00.0: successfully init'ed PT3 (fw:0x04, I/F:0x01)
[ 19.547519] earth_pt3 0000:04:00.0: DVB: registering adapter 4 frontend 0 (Toshiba TC90522 ISDB-S module)...
…中略
[ 19.872970] earth_pt3 0000:04:00.0: successfully init'ed PT3 (fw:0x04, I/F:0x01)
[ 19.873267] earth_pt3 0000:05:00.0: failed to register adapter dev ←★★★これ
[ 19.873292] earth_pt3 0000:05:00.0: Failed to create FE0 ←★★★これ
[ 19.873454] earth_pt3: probe of 0000:05:00.0 failed with error -23 ←★★★これ >>258
rm earth-pt1.koでちゃんと../extramodules/の方を消すことと
rebootでなく
# depmod -a; modprobe earth-pt1
でいけると思う
この場合は現カーネル(4.18+?)のエラー有りのバージョンになるので
4.9とかに戻したいと言うことならば単にrebootして4.9のカーネルをブートすればおk
>>259
テストどうもです
dvbドライバの部分のエラーなのかどうか切り分けが難しいですね...
dvbの方だとしても >>240 で挙げられた不具合とは別の原因っぽい
止まってる時に(/dev/dvb/adapterN/frontend0として) dvb-fe-tool -m -a N -f 0 を実行して
"Lock"が出ていて C/Nがそれなりの数値であれば 受信はとりあえずOKっぽいけど
>>260
正直3枚持っていないのでわからないけれど
dvb-coreモジュールの方でサポートされてる機能なので
CONFIG_MAX_DVB_ADAPTERSが>=12 ならば動くはず...
earth-pt3 のadapter_nrパラメータには何も指定していないんですよね?
こちら(archlinux, カーネルver失念)で以前試した時は、earth-pt2 x1, earth-pt3 x1, 白friio x 1の9アダプタは認識してました
Linuxで...の方のスレも見たけど Proxmox使ってるってことなんだけど
baremetal?の方ではデバイスは作られてるんでしょうか...
あとは裏技的には earth-pt3のone_adapterを1に設定すればボード単位で
/dev/dvb/adapterN/frontend[0-3] のようにまとめられます (アプリが対応してないと意味ないけど) >> 247
debian stretch で下記のようにして earth-pt1.ko を build しました。(これで問題ないですよね?)
sudo apt install linux-headers-4.18.0-0.bpo.3-amd64
wget https://github.com/torvalds/linux/raw/master/drivers/media/dvb-frontends/tc90522.h
wget https://github.com/torvalds/linux/raw/master/drivers/media/tuners/qm1d1b0004.h
wget https://github.com/torvalds/linux/raw/master/drivers/media/dvb-frontends/dvb-pll.h
sed -i -e '/^KDIR/s#/usr##' Makefile
make modules
>>240 の方法で受信テストを 10 回ほど繰り返したところ、 BS が Lock を維持することが確認できました。
その後、 dvbv5-zap > mirakurun > epgstation で BS を 2 番組同時に約 2 時間テスト録画しました。大まかに再生確認したところ問題なく録画できているようです。
対応ありがとうございます。 確認どうもです
wget ... の3行は無くてもいける(linux-headersでインストールされた奴を見に行く)はずなんだけど...
実行中のカーネル(!=4.18.0)と違うバージョン(==4.18.0)のソースをインストールして4.18.0用にビルドする場合は
$ KDIR=/lib/modules/4.18.0/build make modules
のようにKDIRを明示的に指定しないとバージョンが合わなくなる気がする...
# sed .... の行は archlinuxでは/libはusr/lib/のシンボリックリンクになってるので気づきませんでしたm(_ _)m 実行中の kernel と header のバージョンは 4.18.0 に合わせて build しました。
ただ、 linux-headers-4.18.0-0.bpo.3-amd64 パッケージ内に dvb-pll.h は含まれておらず、
tc90522.h と qm1d1b0004.h は両方ともサイズが 0 の空ファイルだったので別途 wget したんです。
別のパッケージに入ってるのかなぁ、、、 epgstationでライブ視聴や録画のリアルタイムエンコードでQSV使うのってどうやればいいですか?
centos7.4です config.jsonとenc.shにffmpegのコマンドラインを書く >>266
さんきゅー!ライブ系は上手く出来ました!
enc.shで通常のエンコが上手くいかないが。。
pm2実行してるユーザーで変数exportすると直叩きでは上手くいくんだけども エンコードの状態は
logs/Service/system.log
に記録されるはず
ログレベル上げてみるとか >>268
ログはdebug出してるんだけど、原因が掴めなくて困ってる。
enc.shのエンコードのとこは、
$FFMPEG -dual_mono_mode $mode -init_hw_device qsv=hw -filter_hw_device hw -i "$INPUT" -c:v h264_qsv -vf hwupload=extra_hw_frames=64,format=qsv,scale_qsv=1920:1080 "$OUTPUT"
で下記のログ
[2019-01-12T23:53:54.866] [DEBUG] system - [AVHWDeviceContext @ 0x2fa5980] Failed to initialise VAAPI connection: -1 (unknown libva error).
[2019-01-12T23:53:54.868] [DEBUG] system - Device creation failed: -5.
Failed to set value 'qsv=hw' for option 'init_hw_device': Input/output error
Error parsing global options: Input/output error
ってな感じで怒られてる
ちなみに同じオプションでライブとかは通ってるし、環境変数に適当な値突っ込んでenv.sh叩いても通る >>247
継続的にテストを行いました。
結果、特に問題はなさそうです。
時期のカーネル(4.19)に入るとありがたいですね。 enc.sh内でvainfo叩くと
/usr/lib64/dri/i965_drv_video.so
にドライバ探しに行って落ちてた
実際にドライバ置いてるのはここだったので、シンボリックリンク貼って一旦は解決しました
/opt/intel/mediasdk/lib64/iHD_drv_video.so 俺はqsv(というかmediasdk)入れるのに脱落した口だけど
その辺のパスは環境変数になってなかったか >>272
すでにパッチは投げてあるけど 次(5.0)には間に合わないので 次の次(5.1)ぐらいだと思う
バックポートされるかどうかは不明...
(たぶんmedia_buildレポジトリならいけると思うけど) >>275
返答ありがとうございます。
当分はビルドモジュールで行こうと思います。 最新のcsとか含めたチャンネル設定ってどっかにまとまってないですか? >>278
スペースシャワーとかの一部CSが見れなくて pt1_dev.h か mirakurunのchannels.ymlが去年9月の再編に対応してなさそうなのですが、どう変更したらいいか分からず。 mirakurunの梵ドラとtvtest使ってスキャンかけてその値をyamlに書き込めばよろし >>281
レスありがとう
総務省とtvtestでscanした結果っぽいのを突き合わせて更新しました!
総務省のも秋以降のから更新されてないんですね。。。 おはようございます🌞
私八尋麻衣が出演させていただいた、こじみなのパジャマde女子会が今夜25時15分〜KBS京都で放送されます✨
関西圏の方限定ですがよろしければチェックしてくださいね(❁ᴗ͈ˬᴗ͈)
〜次回放送(同時間)〜
1.25/サンテレビ、1.27/KBS京都、2.1/サンテレビ、2.3/KBS京都 PT3でDlifeが見れません(分配しているテレビでは見れています)。
BS23がLockされないのが原因のようですが、何か対策はあるでしょうか?
$ dvbv5-zap -c /usr/local/dvbconf-for-isdb/conf/dvbv5_channels_isdbs.conf -a 0 -x BS23_0
using demux 'dvb0.demux0'
reading channels from file '/usr/local/dvbconf-for-isdb/conf/dvbv5_channels_isdbs.conf'
tuning to 1471440 Hz
ERROR Need a LNBf to work
RF (0x01) postBER= 0
Sync (0x0f) C/N= 9.87dB postBER= 0
Sync (0x0f) C/N= 9.18dB postBER= 0
RF (0x01) C/N= 9.21dB postBER= 0
Sync (0x0f) C/N= 11.87dB postBER= 0
...
...
BS21まではLockされます。
$ dvbv5-zap -c /usr/local/dvbconf-for-isdb/conf/dvbv5_channels_isdbs.conf -a 0 -x BS21_0
using demux 'dvb0.demux0'
reading channels from file '/usr/local/dvbconf-for-isdb/conf/dvbv5_channels_isdbs.conf'
tuning to 1433080 Hz
ERROR Need a LNBf to work
RF (0x01) C/N= 8.99dB postBER= 0
Lock (0x1f) C/N= 16.79dB postBER= 0
$
OS: Ubuntu 18.04.1 LTS 一番上の周波数だしね
PT3内でさらに分配するんだし...
分配器やケーブルで減衰してたりするんだろうか >>286 >>287
信号が弱いとチューニングできないんですね。。
そのへん見直してみます。
ありがとうございました。 >>249
御教示願いたいのですが、うちはフレッツ・テレビなのですがLNB電源を常にオフにするにはどうしたら良いのでしょうか?
dvb-fe-tool などを使って設定するのでしょうか 使うアプリによるんじゃないの
>>249 にあるように ISDB向けパッチ当てmpv ( https://github.com/0p1pp1/mpv )の場合は
channels.conf設定ファイルに明示的にLNBについて指定しないことでずっとOFFにできるし
dvbv5-zapの場合はできない
tvheadend + kodi (pvr.htsプラグイン) の場合は、tvheadend側でLNBについても色々設定できた気がする
# そもそも自動でON(&OFF)されても 電力の無駄以外とくに問題ないと思うけど 古いrpiで動かしてたepgstationが入ったSDカードを新しいrpiに差し替えたら番組表が12時間ズレたまんまになってんだけど、これリセットするにはどうしたらいいすか
rpi-configで時間は日本時間に直してdateコマンドでも正常なんで困っております みなさんレスありがとうございます
mirakurunの再インストールで復活しました!
(^^)v fedora 29(kernel 5.0) にしたらPT3のドライバのmakeが通らないんだけど、makeできた方いますか?
makeしようとしてるのは https://github.com/m-tsudo/pt3 のドライバです。
# uname -r
5.0.3-200.fc29.x86_64
# make
make -C /lib/modules/`uname -r`/build M=`pwd` V=0 modules
make[1]: Entering directory '/usr/src/kernels/5.0.3-200.fc29.x86_64'
CC [M] /usr/local/src/pt3/pt3_qm.o
/usr/local/src/pt3/pt3_qm.c: In function 'pt3_qm_set_frequency':
/usr/local/src/pt3/pt3_qm.c:519:2: error: implicit declaration of function 'do_gettimeofday'; did you mean 'do_settimeofday64'? [-Werror=implicit-function-declaration]
do_gettimeofday(&begin);
^~~~~~~~~~~~~~~
do_settimeofday64
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:277: /usr/local/src/pt3/pt3_qm.o] Error 1
make[1]: *** [Makefile:1557: _module_/usr/local/src/pt3] Error 2
make[1]: Leaving directory '/usr/src/kernels/5.0.3-200.fc29.x86_64'
make: *** [Makefile:12: pt3_drv.ko] Error 2 >>296
PT3 は DVB ドライバでいいだろ? >>296
ttps://github.com/masa23/pt3/commit/9faf6c93d2c46764a798aa45b353282e0d03438b > #define TIME_DIFF(begin, now) now - begin / 1000000
ヤバいな(事故のもと) >>297
昔はchardev版がデフォでDVBはダメな子扱いだった。
chardev版で苦労して何とか映ったと思ったのにいつの間にか映らなくなったりした。
嫌気がさしてやめちまったが、DVBだとそういうことは起こりにくいわけか。 >>299
確かにやばい
てかそれ以前にnowの方は1/1000000にならん気がするけど大丈夫なんか? 大丈夫じゃないだろうね
( ( now - begin ) / 1000000 )
にしないと PT1,PT3のDVBドライバはメインラインカーネルにマージされて継続的に保守されているからね
カーネル内の各種APIやらの実装が見直しされたときに軽微なものだったら
ドライバのメンテナー当人でなくても手直ししてくれるかも、と期待できる
メンテナの保守が適当すぎると除去・追放されるが。
外部の野良ドライバは製作者がずっとがんばり続けるしかない
止まったら即氏ぬ プレ糞のdvbドライバをめざして(無謀)
chardevドライバとメインラインに入っているaf9035 dvbドライバを解析しているんだけど
プレ糞 USB: 1本のパイプ(エンドポイント)に全ストリームチャネルのTSをぶっこんで転送
mainline dvb: 1本のパイプを1つのストリームチャネルで占有
と作りが違うのね...
USB DVBのフレームワークが1パイプ1ストリームの前提になってるから
その枠組みに噛み合いませんです
ゆくゆくはmainlineへ、などと欲を出さずにchardev版をdvb化移植する方向で考えるほうが
シンプルで近道のように思へてきた 同じaf9035なんだし
af9035の初期化・設定部分と (復調ICやチューナICの)サブドライバのアタッチ部分を追加・修正できれば
その辺の構造はとくにいじらなくても自動的にストリーム毎のUSBパイプになるってことはないかな.. ならないです
af9035 dvbではsync byteが0x47固定の設定なので区別できない。
dvb実装はUSBで入ってきたものをそのままDVBのフレームワークへ渡しているだけです。
chardevさんは入力ごとにsync byteを別の値に設定して、その値でどのストリームなのかを識別して
当該のストリームのバッファへ入れている。 >>308
fuse_b25みたいなラッパー作った方が幸せになる人増える気がしますね、板がそんな仕様だとすると。
ラッパー自体作ろうかと前から思ってるけど、他のもの抱えてるんでなかなかやる気にならず…他の方がやられるなら有り難いです。PT3のchardevからも使えるようにするなら、多少はデバッグ程度は協力できますよ。
TBS社(日本の放送局じゃない方)のボードのDVBドライバーが、V4Lの本家の方では入り始めてるんで(勿論、GPLで)、
PT2や3がダメになったら買うかどうか迷ってる身で、おこがましい事いってすいませんm(_ _)m af9035というよりブリッジチップのIT9305自体は↓みたいに幾つかのaggregation methodを持っているみたいだから
§ TS aggregator
- 3 proprietary methods to support TS aggregation
- 5 TS inputs are supported
- Cascade mode is supported to aggregate at most 16 MPEG2 TSs
設定次第でまぜこぜ出力とストリーム毎の出力と変えられそうだけどね
実際af9035.c::it930x_init()でも "ts0_aggre_mode" とか"ts0_sync_byte"とかEP5 Enable とか見えてるし...
まあ それ(ストリーム毎EP)ができたとしてもaf9035は1TS/ボードっぽいから4TS化するには
(PT1/3みたいに)初期化時に4つのアダプタを作成するような風にしないといけないので
改修部分は結構あることにはかわりないけど 最近調べてなかったけど、MediaSDKとvaapiどっちが良いのだろうか。
ffmpegのサイト見に行ったら、MediaSDKは特別な要件ある場合だけにしろ。って言ってたけど。
kabyのxeon買ったから遊んでみるか。
iHDもドライバの機能色々付いてて楽しそうであったし。 Ubuntu 18.04ならaptでvaapi対応ffmpegが入るから楽 ちょっとスレ違いな気がするけど、ここの方が同じような環境で使ってる人が多そうなので聞かせてください。
WindowsではRecTask、Linuxではrecdvbで録画した番組をminidlnaでLAN内で公開してるんだけど、
これをiOSやAndroidで見る場合にお薦めのクライアントアプリないですか?
定番のVLCは、ファイルのシークがうまくいかない。
他もいくつか試したけど、デインタレースができなかったり縦横比が正しくなかったりで、しっくりくるものが
見つからず…。 PT2が余ってるので録画サーバ作ろうと思うんだけどlinuxのデストリはなにがいいですかね? dlna出来るか知らんがiosならnplayer
androidはmpeg2ハードウェアデコーダが有効ならmx player >313
うちは dlnaサーバを emby にしてブラウザでみてる。
fire stick では kodi 使ってる。 デインタレースきちんと出来るの端末に期待するのもしんどいので、サーバ側でやっちゃった方が良いかも emby初めて知った
今plex使ってるから今度比べてみよう みなさん、ありがとうございます。
mxplayerは入れていたのですが、なぜかうちの環境ではちらほら再生できないTSファイルがあるのでした。
家族の端末に入れるのでシンプルなものが良いなと思っていたのですが、nplayerはいいですね。
iOSの無料版で試しましたが、Android版もあるようです。
実はembyも使っていて、出先で録画を消化するのに重宝しているのですが、アプリ内課金なので
家族間で共有できないというケチ心が。 >>315
ubuntuですか。guiいらないならdebianでもいいんですかね GUIなしならDebianもUbuntuも大差ない
うちはvaapiでストリーミングするのにDebianだとドライバが古いのでUbuntuにしてるが Ubuntuはupdateが勝手に走るから設定しないと危ない
ltsがサポート期間10年になるんだっけ?録画鯖にはピッタリ Manjaroな俺はAPUでHWエンコ出来ない不具合が再発してるので
LTSまじ大事
Intelでもvaapi経由でハングするから最新が地獄と化しておる ためになるスレですね。ありがとうございます。
そういえばうちの前のサーバーは12LTSだった >>327
じ、10年?!
CentOS並みになるのね ついカッとなって勢いに任せて OSS な Intel Media SDK 環境を構築した。
【環境】
CPU: Intel(R) Xeon(R) CPU E3-1225 v6
OS: arch linux
【AURから入れるもの】
intel-media-sdk
intel-media-driver
libmfx
ffmpeg-qsv
X11を立ち上げる。(ドライバは KMS の i915)
・ドライバ設定
/etc/modprobe.d/i915.conf
options i915 enable_guc=2
これでとりあえず Media SDK のサンプルコードによるエンコード、デコードが動くようになった。
だがしかし ffmpeg からのエンコードが動かん。
ffmpeg はこんな感じで死ぬ
[h264_qsv @ 0x561825658700] Selected ratecontrol mode is unsupported
[h264_qsv @ 0x561825658700] Current frame rate is unsupported
[h264_qsv @ 0x561825658700] Current picture structure is unsupported
[h264_qsv @ 0x561825658700] Current resolution is unsupported
[h264_qsv @ 0x561825658700] Current pixel format is unsupported
[h264_qsv @ 0x561825658700] some encoding parameters are not supported by the QSV runtime. Please double check the input parameters.
-hwaccel qsv -qsv_device /dev/dri/renderD128 をつければOKって書き込みもあったんだけど、ダメだった。
入力バッファ大きくとるといいよ。っていう書き込みもあったが、試したけどだめ。
なんか初期化コードで致命的にコケてるように見える。
yuv を入力データにしても同様に動かないし。 ffmpeg -hwaccel qsv -qsv_device /dev/dri/renderD128 -c:v mpeg2_qs
v -init_hw_device qsv=hw -i input.ts -qsv_device /dev/dri/render
D128 -c:v hevc_qsv -look_ahead 0 output.mp4
これで動いた。デコード、エンコードを qsv に指定。
mpeg2デコーダが具合が悪いって話なのか? gdb で追っかけてみた。
MediaSDK-intel-mediasdk-19.1.0/_studio/mfx_lib/shared/src/libmfxsw_encode.cpp
に入っていったところで、動きに差がある模様。
MFXVideoENCODE_Query()
L564 の mfxRes が decoder が qsv な時と native なmpeg2な時で異なる。
qsv:
(gdb) p mfxRes
$9 = MFX_ERR_NONE
native:
(gdb) p mfxRes
$7 = MFX_ERR_NOT_FOUND
MFXVideoENCODE_Query() に渡されてくる引数そのものは一致しているのだが…
変だね。MFX_ERR_NONE と MFX_ERR_NOT_FOUND の違いについても要確認。 intel-media-sdk/src/MediaSDK-intel-mediasdk-19.1.0/_studio/mfx_lib/encode_hw/h265/src/mfx_h265_encode_hw.cpp
MFXVideoENCODEH265_HW::Query
509 mfxStatus lpsts = SetLowpowerDefault(tmp);
ここの戻り値がqsv decode, native decode の時に違っている。
なぜ違う値(MFX_ERR_NONE(対応)、MFX_ERR_NOT_FOUND(非対応))になるのか不明。
ファームのバグのような気がしなくもない。
sample encoder は動くからそれはそれで気持ち悪い。
i915 には enable_guc=2 とかのパラメータは渡してあり、
dmesg 見る限りファームアップロードしたよって出てるしなぁ…
media sdk のサンプルコード読んでみるか。 >>327>>331
5年だったサポート期間が10年に延びるんだけど延びた分が無料かどうかは不明
Ubuntuのサイトにはこう書かれてる
https://jp.ubuntu.com/download
Ubuntu Desktop 18.04.2 LTS
2023年 4 月までの5 年間、無料のセキュリティアップデートおよびメンテナンスアップデートが保証されています。 >>335
デコードしたフレームのバッファのタイプが違うんじゃないの
vaapiでも -hwaccel_output_format vaapi を付けて
vaapiが読める形のバッファにしてエンコーダにアップロードしないとだめだし...
( https://wiki.libav.org/Hardware/vaapi のSurface Formatsの章みたいに) ffmpeg の qsv encode ができない問題だけど、ffmpegのコマンドライン解析している部分の問題っぽい。
コマンドライン解析部分で encode 時のみqsv使うというケースでは、
qsv の初期化処理を呼び出していないので、encode しようというタイミングで初期化されてないので死ぬ。
qsv decode時には初期化処理を呼び出しているので、decode -> encode を qsv でやる分には問題はない。
初期化していない箇所は libva 依存の部分なので windows では問題になってない模様。
もうちょっと調べて頑張ってパッチ作れたら作る。
write_option() 読むの嫌だなぁこれ。 ffmpeg コードトレースして萎えてきた
decoderは手厚くケアされてるのでうまく動いてる
encoderは手厚くないから動いてなさそう
MFXInit乱発し過ぎだし、各所でinit関数呼んだ結果とっ散らかりすぎ
セッション情報コピーできてないし。
どうやって落ち着かせるか。。。 ISDB向けパッチ当てmpv のfor Windowsを作って下さい gdb とか使わなくても、strace とかで、API のエラーメッセージを見れるのでは? ■ このスレッドは過去ログ倉庫に格納されています