俺の日記帳 第二冊目at LINUX
俺の日記帳 第二冊目 - 暇つぶし2ch968:login:Penguin
15/07/02 00:34:29.30 KWuuOoan.net
Intel Media SDK と dispatcher(libmfx) の話。

Intel Media SDK(QSVを実装するためのライブラリ的なもの)を使用する際には、
SDKを直接叩くのではなく、libmfxというディスパッチャを経由して叩く形をとる。

ディスパッチャなんだけど、もちろんMedia SDKにも添付されているし、
URLリンク(github.com)
でも公開されている。

なんでディスパッチャは2つあるの?
1.Media SDK は商用ライセンスなので、OSSと直接リンクさせると具合が悪い
2.ディスパッチャをOSSにしておけばとりあえずGPL汚染は回避できる的な

なので、とりあえず動かすのだけが目的であればどっち使ってもいい。
バイナリ配布したかったら mfx_dispatch とリンクさせておけ的な感じ。

mfx_dispatch のSRPMが見つからないので、spec ファイル投げ込んでみますかね。

969:login:Penguin
15/07/02 21:28:39.90 KWuuOoan.net
mfx_dispatch なんだけど、github のを使うとマトモに動作しないみたいね。
Windows環境でしかマトモに試験されていない雰囲気。
Linuxだとビルドが通るね。やったね。
ぐらいにしか試験されていないんじゃないかな。

MFXInit()
MFXVideoCORE_SetHandle()

の順で呼び出しをすると、MFXVideoCORE_SetHandle()が
必ず MFX_ERR_UNDEFINED_BEHAVIOR を戻してしまって使い物にならない。
んー。とりあえずIntel Media SDKのディスパッチャ使っとけって話かな。

970:login:Penguin
15/07/03 21:36:47.62 snU6Mhwt.net
しつこく mfx_dispatch 続き

github 版を使うとうまく動かない件、コレと根が同じなんじゃないかな
URLリンク(stackoverflow.com)

github 版を static にコンパイルしてみたら想定通り動いた。
というか、関数呼び出しだけは成功するようになった。というのが正解か。

vaapi driver は Intel Media SDK 同梱の iHD を使わなければ動かないんだが、
OS標準版の i965 を使おうとしてエラーが出てしまっている。
まぁそれはそれで別の問題なんだけど。

それから更に別の問題があって、mfx_dispatch が
libmfxhw64.so を dlopen() する際に作成するパス名が思いっきり間違えている
これは簡単なバグなのでレポートしておきましょう。>自分

971:login:Penguin
15/07/03 22:08:46.65 snU6Mhwt.net
まだまだ mfx_dispatch の続き

github版のmfx_dispatchとIntel Media SDKの違いがあることが分かった

github版はMFXInit()の中で MFXVideoCORE_SetHandle() を呼び出している。
なので、SDKマニュアルではアプリケーションは Linux では MFXVideoCORE_SetHandle()
を呼びださなければならない事になっているが、
github版を使用する限り、MFXVideoCORE_SetHandle()を呼ばなくて良い。

Intel Media SDK版を使用する場合は、アプリケーション側で
MFXVideoCORE_SetHandle() を呼びださなければならない。

という状態になっている。

んで、FFmpeg のパッチでこういうの
URLリンク(github.com)
があるんだけど、やっぱり筋が悪いと思う。

QSV のコードを書くときに、LinuxだWindowsだって意識させられるのってイケてないと思う。
OSS的にもgithub版を使ったほうがいい感じだと思うので、
github版をキッチリとデバッグした上で使う方がいいんじゃないかな。

github版の mfx_va_glue.c が DRI デバイス名を調べるときに
決め打ちとしているところは、mfx_library_iterator_linux.cpp と同じように
検索するように修正したほうがいいと思う。

とりあえずこんなところかな。

972:login:Penguin
15/07/04 21:34:09.00 PkAKQOuA.net
まだまだ続くよ mfx_dispatch

intel版とgithub版をdiff取って確認しつつ、修正してみる実験。
まぁガバッとコードコピペしてきてもいいんだけど。

まだあまり見られてないんだけど、main.cpp が結構違いがある。
このあたりの改造が聞いてきているんじゃないかなぁとなんとなく想像。

973:login:Penguin
15/07/05 00:45:02.09 KWLEDc77.net
寝る前の mfx_dispatch

github版で、VAAPI のドライバとして i965 が選ばれてしまう問題の対処が分かった。

/dev/dri/card0 をopenしてvaInitialize()に持って行くと i965 になる。
/dev/dri/renderD128 を~略~すると iHD になる。

ということで、結果が出ました。
コミットするか。

974:login:Penguin
15/07/05 16:51:37.97 KWLEDc77.net
今日の mfx_dispatch

github 版をパッケージ化して突っ込んで、最低限のVLCにパッチを当ててQSVが動くことを確認。
プロセス終了時(?)に落ちてしまっているので、また別の問題がある模様。

FFmpeg はコンパイル・リンクは通るんだけどセグメンテーションフォルトで落ちてしまっている。
多分、libmfxhw64.so の MFXInit() を呼び出した時に参照エラーが起こっているんじゃないかな。
スタティックリンクにすると動くと予想。
VLCは .so で動的リンクなのになんで動くんだろう。
後で調べてみよう。

975:login:Penguin
15/07/06 00:26:43.52 bpQZz2MB.net
今日の mfx_dispath

github版にspecファイルの追加。
github版のlibmfx.pc.in から libva-X11 のモジュールリンク指示を、
必要がないので削除。

VLC の QSV の初期化処理が誤っているため、
初期化が必ずエラーとなる問題に対処するパッチを書き、
vlc-devlel に投げ込んでみた。

良い週末でした。
おやすみなさいまし。

976:login:Penguin
15/07/07 23:54:34.74 Tjrm2qnT.net
MSDK の公式解説ドキュメントを読み理解する。

URLリンク(www.isus.jp)
URLリンク(www.isus.jp)
URLリンク(www.isus.jp)

ポイント:
QSV 高速に処理するためには、ASYNC処理を適切に行い(パイプラインを適切に組むということ)、
GPUの使用率を高める事が必要だ。
また、GPUの使用率が高い状態が続くことにより、
GPUのTuboBoostが効くようになって、更に処理が速く処理されるのである。

ふぅ。現実逃避は楽しいぜ。

977:login:Penguin
15/07/08 16:52:58.61 hEJ6uD7E3
=app-arch/engrampa-1.8*
=app-editors/pluma-1.8*
=app-text/atril-1.8*
=dev-libs/libmateweather-1.8*
=dev-python/python-caja-1.8*
=mate-base/caja-1.8*
=mate-base/libmatekbd-1.8*
=mate-base/mate-applets-1.8*
=mate-base/mate-common-1.8*
=mate-base/mate-control-center-1.8*
=mate-base/mate-desktop-1.8*
=mate-base/mate-menus-1.8*
=mate-base/mate-panel-1.8*
=mate-base/mate-session-manager-1.8*
=mate-base/mate-settings-daemon-1.8*

978:login:Penguin
15/07/08 16:53:30.50 hEJ6uD7E3
=mate-base/mate-1.8*
=mate-extra/caja-extensions-1.8*
=mate-extra/mate-calc-1.8*
=mate-extra/mate-dialogs-1.8*
=mate-extra/mate-media-1.8*
=mate-extra/mate-polkit-1.8*
=mate-extra/mate-power-manager-1.8*
=mate-extra/mate-screensaver-1.8*
=mate-extra/mate-sensors-applet-1.8*
=mate-extra/mate-system-monitor-1.8*
=mate-extra/mate-user-share-1.8*
=mate-extra/mate-utils-1.8*
=media-gfx/eom-1.8*
=net-analyzer/mate-netspeed-1.8*
=x11-misc/mate-notification-daemon-1.8*
=x11-misc/mozo-1.8*
=x11-terms/mate-terminal-1.8*
=x11-themes/mate-backgrounds-1.8*
=x11-themes/mate-icon-theme-faenza-1.8*
=x11-themes/mate-icon-theme-1.8*
=x11-themes/mate-themes-1.8*
=x11-wm/marco-1.8*

979:login:Penguin
15/07/09 00:49:39.50 3y5Gd+9s.net
VLCの初期化コードの件で、vlc-devel から回答が帰ってきた。

static int みたいなダメな実装は


980:良くない。とのこと。 というわけで、VLC/modules/codec/qsv.c の中で初期化されたかを管理するフラグが どこがふさわしいかを検討する。 p-sys はダメ。Close() する際に、free() されているので、使い物にならない。 使うんであれば、encide_t になるかなと思う、で、都合の良い変数を発見。 enc->i_flagss これ。多分他の場所でも値の変更(というかそもそも誰も使っていないんではないか)されていないと思う。 ただ、ほんとうに誰も使っていないかを確かめるためには、 gdb で watch enc->i_flags とでもするか ソースコード全部読む の二択だ。watch はやってみたところ開発マシンのメモリが4GBしか積んでいなかったので、 スラッシングに陥り、無事死亡。 ソースを読むのは余りやりたくないので、メモリ増強かなぁ。 8GByte x2 あたり追加してあげますかねぇ。 イライラしたから8Gx2買ってきた。 これで enc->i_flags が変更されてないことを確認して、 enc->f_flags にやりたいことを実装してパッチ送ってやるぜ。



981:login:Penguin
15/07/11 15:49:54.89 jXFlCtXP.net
VLCをgdbでゴリゴリ動かしてきた。

VLC/modules/codec/qsv.c
が今までに呼ばれたことがあるかどうか。を管理するための情報として、
enc->i_flags で良いんじゃないかな。という結論に達する。

gdb で enc->i_flags を watch して、プロセスが作られてから
終了するまで、触ってる人はいなかった。
なので、QSV encoder に限っては、i_flags の再低位ビットは
「今までに呼ばれたことがあるかどうか」を
管理するためのフラグとして使うように提案してみたい。

コードとしても、Open()が呼ばれた際に
enc->i_flags |= QSV_ENCODER_IS_INITIALIZED;
とかこんな感じかな。

gdb で変数 watch すると結構メモリ食うのね。
初期化のコードを動かすだけで6GBほど消費していた。

982:login:Penguin
15/07/11 20:08:34.22 BlB86vNF.net
VLCってなーに

983:login:Penguin
15/07/12 01:13:09.19 YSPMUozM.net
ggrks
VideoLanClient

984:login:Penguin
15/07/12 10:39:09.11 1euQw2PX.net
V2Cだとここのスレだけ毎回再読み込みしてるな
なんでだろ

985:login:Penguin
15/07/12 23:02:03.96 YSPMUozM.net
Gstreamer のTSパーサが NHK-E の番組の切り替わりのタイミングで、
処理をやめてしまうのは何故か。ということを調査してみた。
まだ調査は終わっていません。
試験環境はarch x64

単純にトランスコードしてみる。
$ gst-launch-1.0 filesrc location=input.ts ! tsdemux ! queue ! mpegvideoparse ! \
> mpeg2dec ! x264enc ! qtmux ! filesink location=out.mp4

$ vlc ./input.ts
$ vlc ./out.mp4
out.mp4 が新しく始まる番組の直前で切れることを確認

986:login:Penguin
15/07/12 23:03:05.67 YSPMUozM.net
デバッグビルドしてgdbで遊んでみる
$ gdb /usr/bin/gst-launch-1.0
(gdb) b src/gst-plugins-bad-1.4.5/gst/mpegtsdemux/tsdemux.c:1427
(gdb) run filesrc location=input.ts ! tsdemux ! queue ! mpegvideoparse ! mpeg2dec !\
x264enc ! qtmux ! filesink location=out.mp4
(gdb) bt
#0 gst_ts_demux_stream_removed (base=0x5555558ba020, bstream=0x7fffe4015a50)
at tsdemux.c:1428
#1 0x00007ffff5d63e00 in mpegts_base_program_remove_stream (
base=base@entry=0x5555558ba020, program=program@entry=0x7fffe4001100,
pid=256) at mpegtsbase.c:500
#2 0x00007ffff5d63f80 in mpegts_base_deactivate_program (
base=base@entry=0x5555558ba020, program=program@entry=0x7fffe4001100)
at mpegtsbase.c:579
#3 0x00007ffff5d64d9c in mpegts_base_apply_pmt (section=0x7fffe40a0390,
base=0x5555558ba020) at mpegtsbase.c:869
#4 mpegts_base_handle_psi


987: (base=0x5555558ba020, section=0x7fffe40a0390) at mpegtsbase.c:914 #5 0x00007ffff5d6544a in mpegts_base_chain (pad=<optimized out>, parent=parent@entry=0x5555558ba020, buf=0x7fffe409e180) at mpegtsbase.c:1168 #6 0x00007ffff5d65682 in mpegts_base_loop (base=0x5555558ba020) at mpegtsbase.c:1333 (gdb) p old_program->active $18 = 0 (gdb) p p section->version_number $19 = 10 '\n' (gdb) p old_program->section->version_number $28 = 8 '\b' section の version_number が変わっている。



988:login:Penguin
15/07/14 22:04:04.34 LwGhqClA.net
gstreamerのtsdemuxerの解析続き
NHK-E の番組の変更があったタイミングで、ストリームの処理が終わっている件の調査。

MPEG2 TSの解析を行ったところ、こんな感じらしい。

・NHK-Eは番組の変更のタイミングでPMT Versionの変更があるらしい
・PMT Versionの変更のタイミングで、音声ストリーム数の変更があり得る
・tsinfo の content changed の表示はPMT Versionの変更時
・gstreamerの tsdemuxer はPMTバージョン番号を見ていない
・PMTの中に入っているストリームの構成が変更(ストリーム構成変更等)された際に、
 gstreamerはストリームの削除処理を行っている。
 →これ以降、PADからデータが入ってこなくなってトランスコーダが動いていないと予想

上記を踏まえて gdb で継続調査。

mpegtsbase.c の mpegts_base_apply_pmt() にて、
PMTの更新を見つけた後の処理が具合が悪いんじゃないかと考える。
mpegts_base_activate_program()を呼んだ後に、
mpegts_base_deactivate_program()を読んでいる流れは問題なさそうだ。

mpegts_base_activate_program() を読んでみると色々怪しい。

default:
if (G_UNLIKELY (MPEGTS_BIT_IS_SET (base->is_pes, stream->pid)))
GST_FIXME
("Refcounting issue. Setting twice a PID (0x%04x) as known PES",
stream->pid);

んーー。GST_FIXMEって何だよ実に怪しい…

989:login:Penguin
15/07/15 21:16:21.27 WJPleMWG.net
gstreamerのtsdemuxerの解析続き

gdb でトレースしているんだけど、なんか変。
関数が終了するはずのない場所で終了している。

具体的には、
mpegtsbase.c
mpegts_base_activate_program()
の switch 文の判定の二回目の処理を行うところまで進めると、
呼び出し元の関数に処理を戻してしまっている。

しかし、これが根本の原因かというと、そうでもない雰囲気。
もう少し中で何が起こっているのか、全体像を眺めたほうがいいのかも。

990:login:Penguin
15/07/16 00:57:46.89 F3/+gdbl.net
ラズペリパイで遊んでる人いますかー

991:login:Penguin
15/07/16 22:09:07.87 cnun2qna.net
>>945
こんな過疎スレでなくて、専用スレ行ったほうがいいんでないかい。
スレリンク(linux板)l50

gstreamerのtsdemuxerの解析続き
NHK-E の番組の変更があったタイミングで、ストリームの処理が終わっている件の調査。

PAT内のストリーム構成が変更された際の処理は以下の通り
1. 旧ストリームを削除する処理を行う
2. 新ストリームを追加する処理を行う

PADに関しても1と2で破棄と作成を行っている。
んで、PADを操作した後に mpegvideoparse にキチンとデータが渡っているのかがとても疑問。

demuxer としての処理は正しい気がするので、
mpegvideoparse とのIFを少し見てみよう。

992:login:Penguin
15/07/16 23:10:49.86 F3/+gdbl.net
>>946
どもです

993:login:Penguin
15/07/18 00:40:00.31 rIEHf0N/.net
懐かしの libmfx 編

・mfx path の生成が誤っている
→指摘さんくす。直しとくね。
・DRI のデバイスファイル名の指定が誤っているから、iHDがロードされない件
→環境依存じゃね。と言われたので libva を読んで、card0 ではなくて renderN128 ではなければならない根拠を示しますかね

ソース読んでいないので推測になりますが、
libva のドライバを検索する処理が、
card0 が指定された時


994:と、renderN が指定された時とで、 異なっているんじゃないかなと想像。 ちょっと古い libva のパッチだと、 card0 でも動いていたのだけれど、 最新のコードでは renderN じゃないとダメなのではないかな。 軽くコード読んで寝ましょう。



995:login:Penguin
15/07/22 22:46:20.20 umFA+TSe.net
mfx_dispatch github 版の Makefile であれ?な点を発見。
-fPIC がついていないのね。なので、libmfx.a をリンクするときにリンクエラーが発生してしまう。
まぁ大した問題ではないんだけど。

996:login:Penguin
15/07/24 15:37:11.25 d/jdGd1Y.net
SMPlayerがおかしくなったので
$HOME/.config/smplayerにあるsmplayer.iniを削除したら直った

997:login:Penguin
15/07/27 13:09:38.93 3iPGC9hQ.net
"FirefoxでDailymotionの動画が再生されなくなったのだが、
プレーヤーが新しくなったようで、Adobe Flash Playerを
無効にしたら再生された。"

998:login:Penguin
15/08/01 21:26:10.28 FzdK5zUX.net
gstreamerのtsdemuxerの解析続き

PATのストリーム構成が変更になった際のパイプラインが停止になる場所をgdbから調べた。

tsdemux.c
1479 gst_pad_push_event (stream->pad, gst_event_new_eos ());
PATのストリーム構成が変更になった際に、ここでEOSのイベントを発生させていて、
パイプラインが PAUSED になっている。

PATのストリーム構成が変更になった際の現状の処理はこうなっている

・PATの処理が来ると、mpegts_base_apply_pmt()が呼び出されて以下の処理を行う
・ストリームの構成情報(ストリームの数)を調べる
・古いストリームの構成情報と比較。一致していない場合、以下を実施
 ・mpegts_base_new_program() を呼び出して program の初期化
 ・mpegts_base_deactive_program() を呼び出して old_program のストリームを消去
 →この中で呼ばれる gst_ts_demux_stream_removed() が gst_pad_push_event() を呼び出すことで
  gstreamer に EOF のシグナルが渡ることとなり、パイプラインがPAUSEDになる。処理が止まる根本の原因。

PATのストリーム構成が変更になった際の理想の処理を検討

・PATの処理が来ると、mpegts_base_apply_pmt()が呼び出されて以下の処理を行う
・ストリームの構成情報(ストリームの数を調べる)
・古いストリームの構成情報と比較。一致していない場合、以下を実施
 ・mpegts_base_new_program() を呼び出して program の初期化
 ・old_program と new_program を比較して、以下の処理を実施
  1. old_program にのみ含まれるストリームの場合、gst_ts_demux_stream_removed() の gst_pad_push_event() を呼び出さない版を呼び出す
  2. new_program にのみ含まれるストリームの場合、gst_ts_demux_stream_add() を呼び出す

こんな感じかなぁ。これで動くといいなぁ。

999:login:Penguin
15/08/01 21:27:58.37 FzdK5zUX.net
本来であれば、パイプラインをPAUSEDとした後に、またパイプラインをSTARTに持って行くように
頑張ればいい気もするんだけど、そうすると、チャンネル変更前後のストリームでバッファリングされてる
パケットが落ちてしまっていて具合が悪いんじゃないかと想像する。

基本的にはパイプラインはPAUSEDにしないほうがいいんじゃないかな。

というわけで、検証コードをプログラム中。

1000:login:Penguin
15/08/02 14:42:38.29 /CYTQ9oG.net
Xubuntuの起動オプションでxforcevesaとしてもよくわからず、
nvidiaのバイナリドライバを入れたら起動した。めでたし。

1001:login:Penguin
15/08/06 14:58:31.56 48HRmMd1.net
age

1002:login:Penguin
15/08/22 16:25:01.38 UBpjDX7u.net
~ $ ./rec_radiko.sh HOUSOU-DAIGAKU 1 /home/hoge
./rec_radiko.sh: 行 133: xmllint: コマンドが見つかりません

と出るのでxmllint(libxml2-utils)をインストール。。無事に動く。

1003:login:Penguin
15/08/24 00:30:02.14 +WN+cZ8B.net
MBM注意

外付けUSB-HDDにMBM入れて使っているけど、たまに間違ったパーティション情報が読まれることがある。
それでEnter押すとその間違った情報がパーティションテーブルに書き込まれパーティションが飛ぶようだ。

間違ったパーティション情報が読まれた時は、すぐにCtrl+Alt+DelでPCを起動し直すこと

1004:login:Penguin
15/08/29 23:31:58.86 VE0Q87ev.net
TVキャプチャしたストリームを MPEG dash + dash.js + 普通のブラウザ でTV視聴ができるか実験。

0 前提条件
ブラウザ


1005:にプラグインを入れるのは無し TVのMPEG2ストリームをH264に変換するのはQSVとする 1. 必要なもの ・TVキャプチャカード ・Centos7.1 ・CPUは Haswell i3 以上(Intel Media SDK はQSV OKでも動かないマシンがある) ・Intel Media SDK コミュニティー版 ・ffmpeg / livav のそれなりに新しい版 ・liblive555 ・liveMediaStreamer ・上記パッケージをコンパイルするために依存してくるライブラリ類 2.環境構築 依存関係に従って、ライブラリをインストールする。大まかな順序 OS→Intel Media SDK→ffmpeg→liblive555→liveMediaStreamer→liveMediaStreamer web front end 3.使い方 TVキャプチャ(recpt1)からの出力を、 ffmpeg -vcodec qsv に食わせて、-f rtp rtp://localhost:5004 でRTPで参照させる web front end から RTP の 5004 ポートを追加すると、 liveMediaStreamer からストリームが出力されて、 該当URIをVLCから開くと再生ができる。らしい。 VLCからライブストリーミングが再生できるところまで確認を進めましょう。



1006:login:Penguin
15/09/03 00:21:35.55 /uiv1PF4.net
>>958 の続き
コンパイルして道具を整えてみたよ編。

URLリンク(github.com)
Deployment guid の示す通りに依存関係で必要になってくる道具を揃え(specファイル書いてRPM握り)、
とりあえずなんとなく、初期ページが表示されるぐらいまで持って行った。
#mongodb のコンパイルはお勧めしない。SPECファイルが腐っているし、コンパイルに1時間ぐらいかかるし…

で、だ。初期ページでstartボタンを押下すると。

Error: "Error connecting path. Better pray Jesus..."

とか表示されて、全然使えない。
livemediastreamer のプロセスは起動している模様。
/var/log とかには楽しいログは出ていない。
nginx のログはアクセスが来てますねぇ。ってぐらい。
DB(mongod)のログはログイン時に drop コマンドを投げましたよってのが出ているので、DB接続はできているんだろうなぁ。

こんな感じで八方塞がりですが、
まったり解析を進めていきたいと思います。
んー。どのソースから読んでいいやら…

1007:login:Penguin
15/09/03 08:11:51.11 1WXC3aTp.net
>>959
やりたいことを理解してなかったら申し訳ないんだけど、nginx使うなら↓あたり使っちゃダメなの?
ffmpegってrtmpで送信できたよね?

URLリンク(github.com)

1008:login:Penguin
15/09/03 11:20:01.49 jj4XB4jx.net
環境変えたらrec_nhk.shが動かなくなった

1009:login:Penguin
15/09/03 22:59:05.95 /uiv1PF4.net
>>960
コメントどうも。
nginx-rtp-module 使ってMPEG DASH live streaming出来ました。

【使ってみた感想】
とても良いオモチャが手に入った。

【使用する上での注意事項等】
CentOS7 で使う上での重要なポイント(サーバサイド)

dash_dir /tmp

とすると動かない。ネット上のあらゆるサンプルが /tmp になってたので思いっきりハメられた。
nginx-rtp-module が rtmp で受信したファイルを /tmp 配下のディレクトリには書き込めない模様。
とりあえず$HOME配下にしてみたら動いた。ログとか全く出ないので、
原因を


1010:つかむのに時間がかかりました。 dash.js と Firefox40(クライアントサイド) この組み合わせは動かない模様。 Youtube とかで HTML5 player で H264 がOKと表示されているので 動くと思っていたんだけど、動作しない。 Firefox Developer Edition を使えば動く。 【宿題】 チャンネル変更・視聴停止をする際に、recpt1 シグナルを送る仕組みをどうやって実装するか



1011:login:Penguin
15/09/05 00:11:38.39 BJKjz/LJ.net
>>962 の続き
久しぶりに FFmpeg をビルドして、QSV トランスコードするバイナリを生成してLive streamingで遊ぶ。

mfx_dispatch をまずインストールする。
./configure オプションで --enable-static --disable-shared 環境変数 CFLAGS=-fPIC をつける。
$ CFLAGS=-fPIC CPPFLAGS=-fPIC ./configure --enable-static --disable-shared
$ make && make install

今のところの mfx_dispatch を使うには、こうやってコンパイルする。
そうしないと、mfx_dispatch の中から MediaSDK の MFXInit を呼ぶときに死ぬ。

ffmpeg は libmfx を入れて、libmfx.pc のLDFLAGSに -ldl を追加すればビルドが通る。
mfx_dispatch の中の人に static build して ffmpeg を使う場合には
ldl が必要になるので追加してくれってコメントを出すこと。>自分

最近の ffmpeg は decode にも encode にも QSV が使える。
だがしかし、QSVで decod/encode 両方を実施しても、
CPU使用率はそれなりに高い。2コア/4スレッドの
Core(TM) i3-4360T CPU @ 3.20GHz
のCPU使用率が200%強とtopで出た。なんか重いね。
画像の入出力はFull HDのストリームで、150fpsぐらいで動く。
ffmpeg の終了時に必ず core 吐いて死ぬのですが、これは close がどこか腐ってる疑惑か。

1012:login:Penguin
15/09/05 00:15:08.47 BJKjz/LJ.net
>>963 の続き

FFmpeg の QSVでエンコードしたストリームをRTMPで出して、
nginx-rtp-module でMPEG DASH LIVE配信してみたところ、
以下のような感じだった。

再生端末は基本的に arch を使用。
・VLC-git : 再生できるっちゃできるが視聴に耐えない
・Firefox40(dash.js): 再生出来ない
・chromium45(dash.js): 再生できるけど、マニフェストファイルを一回取りに行ったら、更新しない感じ。ライブ視聴出来ないじゃん
・IE11(dash.js): 未評価
・Edge(dash.js): 未評価

後でWin10とタブレット端末でも遊んでみましょう。

というか再生系が結構ダメな感じだなぁ。
マニフェスト読んできて、フラグメントしたMPEGを結合しながら
再生するだけだから、垂れ流しだけならまぁなんとかなりそうな気がするんだけど。

1013:login:Penguin
15/09/06 00:37:25.16 QHwcDJnf.net
>>964 の続き
VLC-git の再生が綺麗に出来なかったので、しつこく続き。
NW環境が悪いせいで再生が途切れがちになっていた模様。
→DNSキャッシュサーバ周りの設定が煮詰め切れてない感じなのでどうにかしましょう
ローカルで nginx を立ち上げて再生したところ、問題ない。

■次にやること(優先度はやりたいものから)
→epgdump の吐き出したXMLを読み込んで、今選べるTV番組一覧的なものを表示する js なスクリプトを作る
→cron.daily か何かに登録して、視聴する局の番組一覧情報を作る(epgdump) shell script を作る
→dash.js を使った再生用スクリプト整備
→それなりのHTMLの再生画面を検討する
→TVチャンネル変更時の処理の雛形を検討する

むむー。手元の作業用ノートPCが入院してしまったので、
進捗が遅くなりそう。退院は10日後とのこと。
チャタリングの出るキーボードは許せないのでしょうがないね。

1014:login:Penguin
15/09/06 12:44:25.58 96


1015:wmHhly.net



1016:login:Penguin
15/09/07 11:46:56.63 58E42T1r.net
URLリンク(qiita.com)
to use CaptureStream on Linux

$ sudo apt-get install libva1:i386
$ sudo apt-get install libsdl1.2debian:i386
$ sudo apt-get install libtheora0:i386
$ sudo apt-get install libmp3lame0:i386

(以下は...debをDownloadsディレクトリにダウンロードした場合)
$ sudo dpkg -i $HOME/Downloads/libass4_0.10.1-3ubuntu1_i386.deb

libass4はdebをとってくるか、リポジトリを追加する

1017:login:Penguin
15/09/09 23:50:10.99 HiRkcwFm.net
ウェブブラウザでテレビのリアルタイム視聴がしたい件の続き。

今日はepgdumpの出力するXMLのパーサのお話。
ajax 的にパースして、array とか object に入れていくことで、
番組表のデータを object にしまいこむことに成功した。

さて、後はこのデータを用いて、HTMLの表形式に出力して
番組表として最低限使える程度までブラッシュアップしていきたい。

地デジのXMLは局ごとに作らないといけないんだけど、
うーん。どうしようかな。全地デジをマージしたファイルを作成して、
それをHTMLに食わせて処理をするか。。。>あまりよい筋ではない気がする

これがXMLの一覧ですよと js 側に教えてあげて、
適切に処理を行うのがあるべき姿だよなぁ

今のところ開発は順調です。

1018:login:Penguin
15/09/10 19:29:38.84 bxZOuH66.net
ajaxでjsonにxmlの一覧はこれとていぎする。xmlをajaxで読み込んでパースする。
くらいまでなんとなく書けたんだけど、jsがエラーも出ずに停止してしまって具合が悪い。
jsの書き方が悪いのか、データ構造が厳しいのかブラウザがウンコなのかイマイチよくわからん。
epgdumpのxmlはedgeで読み込めなかったりして、色々具合が悪い。

1019:login:Penguin
15/09/10 19:40:51.57 bxZOuH66.net
piro77氏版のepgdumpにjson出力があるのね。これを使ってみよう。

1020:login:Penguin
15/09/15 01:06:52.79 lA9TrMkN.net
PC買い替えてWLANにつながらなくて小一時間。
ルータでMACフィルタリングしてた…

1021:login:Penguin
15/09/20 05:15:46.95 SQz3OsnC.net
思い込みが有る。

1022:login:Penguin
15/09/20 05:17:02.81 SQz3OsnC.net
思い込みが有る。

1023:login:Penguin
15/09/20 05:17:50.48 SQz3OsnC.net
思い込みが有る。

1024:login:Penguin
15/09/20 05:18:45.05 SQz3OsnC.net
思い込みが有る。

1025:login:Penguin
15/09/20 05:19:46.96 SQz3OsnC.net
思い込みが有る。

1026:login:Penguin
15/09/20 05:20:45.77 SQz3OsnC.net
思い込みが有る。

1027:login:Penguin
15/09/20 05:22:37.17 SQz3OsnC.net
思い込みが有る。

1028:login:Penguin
15/09/20 05:23:55.32 SQz3OsnC.net
思い込みが有る。

1029:login:Penguin
15/09/20 08:48:28.01 s36MeNt9t
debian wheezy fcitx-mozcがOK
/etc/apt/sources.list

# deb cdrom:[Debian GNU/Linux 7.5.0 _Wheezy_ - Official i386 NETINST Binary-1 20140426-12:25]/ wheezy main
# deb cdrom:[Debian GNU/Linux 7.5.0 _Wheezy_ - Official i386 NETINST Binary-1 20140426-12:25]/ wheezy main

deb URLリンク(ftp.jp.debian.org) wheezy main contrib non-free
deb-src URLリンク(ftp.jp.debian.org) wheezy main contrib non-free

deb URLリンク(security.debian.org) wheezy/updates main contrib non-free
deb-src URLリンク(security.debian.org) wheezy/updates main contrib non-free

# wheezy-updates, previously known as 'volatile'
deb URLリンク(ftp.jp.debian.org) wheezy-updates main contrib non-free
deb-src URLリンク(ftp.jp.debian.org) wheezy-updates main contrib non-free

#########################################################

deb URLリンク(http.us.debian.org) wheezy contrib non-free main
deb-src URLリンク(http.us.debian.org) wheezy main

deb URLリンク(ftp.debian.org) wheezy-backports main
deb URLリンク(www.deb-multimedia.org)<) wheezy main non-free 

1030:login:Penguin
15/09/20 08:41:14.77 FBZF0n5v.net
まだまだ続くよ mfx_dispatch

1031:login:Penguin
15/09/20 08:42:03.23 FBZF0n5v.net
まだまだ続くよ mfx_dispatch

1032:login:Penguin
15/09/20 08:43:01.45 FBZF0n5v.net
まだまだ続くよ mfx_dispatch

1033:login:Penguin
15/09/20 14:57:26.36 NfVjA7mX.net
rec_nhk.shを新しいのにしたら動いた
URLリンク(gist.github.com)

rec_nhk_radio.shというのは動かなかった
URLリンク(skalldan.wordpress.com)

./rec_nhk_radio.sh: 行 35: avconv: コマンドが見つかりません
  libav-toolsをインストール
/tmp/_: No such file or directory
  やっぱり動かない

1034:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch