このコメントは管理人のみ閲覧できます
GeForceドライバーとQSVEncの件、了解しました。ちょっと余っているGPUをさして調べてみます。
すいません、少し試してみたのですが、普通に動いてしました…。GPU周りの問題は、再現できないと修正が難しいので、やはり環境をなるべく合わせて再現したいと思います。少し詳しく環境を教えていただけないでしょうか。特にグラフィック出力のつなぎ方(配線とかデュアルモニタとか)、どちらをプライマリにしているか、その辺りが絡んでいるのかもしれません。
こちらの環境は以下のとおりです。…も…もしかして8600GTは検証には古すぎるんでしょうか…。
Win7 SP1 x64
Core i7 3770K (HD Graphics 4000)
Z77チップセット
Geforce 8600GT as Primary GPU
BIOSではグラフィックス出力をPCIE優先に設定
Geforce 314.22 ドライバ
Intel 9.17.10.2932 ドライバ (API v1.4として認識)
Aviutl 0.99m
QSVEnc 0.19
グラフィック出力図
Geforce 8600GT ---[DVI-D]-→ モニタ
Intel HDG4000 ---[HDMI]-------↑
QSVencを実行すると、
qsv [info]: Intel iGPU ID 2nd GPU
として表示されています。
お手数かけますが、よろしくお願いします。
このコメントは管理人のみ閲覧できます
結論から言うと、ごめんなさい、ということになってしまいました…。
なるべく教えていただいた環境に沿ったものを再現したのですが、問題なく動いてしまいました。8600GTがいけないのかと思い、違うPCのGT520も試してみたのですが、同様です。
もしかするとSandy + Z68固有で発生するものなのでしょうか…。
ここからはあてずっぽうなのですが、3つほど解決するかもしれない対処法を考えたので、試していただけないでしょうか。
1. QSVEncの設定画面左上の「ビデオメモリモード」を外して実行してみてください。少し遅くなるかもですが、問題が解消するかもしれません。
2. ダミー配線
汚くなるのが問題ですが、HDG3000になにか接続してやり、Virtuなしで2nd GPUとして動かす方法です。例えば…
HDG3000 ----[RGB]----------↓
Geforce ----[DVI-D]----> モニタ1
|-------[RGB]-------> モニタ2
3. 1や2でもダメな場合、QSVEnc 0.07 (API v1.3までの古いバージョン)を試してみていただけないでしょうか。もしかすると…。
あまりお力になれず、お手数かけますが、よろしくお願いします。
このコメントは管理人のみ閲覧できます
根本的な解決ではありませんが、2の方法で対処可能だったということで、よかったです。
頂いた情報も今後参考にさせて頂きます。
現在、QSVEncCの入力にL-SMASH Worksをdr=1で使用しています
縦pxを1088->1080にCropする処理はAviSynth/VapourSynthで行っているのですがQSVEncC側で行うことはできるでしょうか?
QSVEncCのソースコードを見たところ、Cropすることもできそうに見えたので、もしあまり負荷がかからないようであればオプションを追加していただけるとありがたいです
CropはAviSynth/VapourSynth側でやるのが自然なのではないかと思います。パイプを通すデータ量も減らせます。
QSVEncCでCropする理由はないように思うのですが…。
特にVapourSynthでのCropが遅いので
vppでCropした方が速度が見込めるかなと思いました
ですが、rigayaさんの本意ではないようなので諦めます
ありがとうございました
ああ、なるほど、速度的な問題があるのですね。
高速化のためにぜひ取り組みたいのですが、最近あまりまとまった時間が取れないので…、時間があるときに取り組んでみます。
初めまして
QSVEnc使わせていただいてます。本当にすばらしくて、日々感謝しております。
要望ですが、このエントリの内容をReadmeにして添付していただけるとありがたいです。
またこのエントリに関連してですが、当方の環境・方法依存の問題かもしれませんが、ffmpegからの入力です、最近のバージョンのものを使うと音ずれする場合があるようです。
あるようですというか、当方では正直、この音ずれがどうにも修正できなくて困っていたりします…公式のwindowsビルドの2012/11/20~2012/11/25の間にあった修正で発生しはじめました。
それ以前のバージョンですと、この音ずれ問題は起きませんので、古いバージョンのffmpageを利用すればいいだけの話なんですが
失礼いたしましたー
>Readmeについて
QSVEncCのフォルダの中にQSVEncC_options.txtとして同梱しました!
QSVEncC 0.19v3としてあげておきます。
>ffmpeg
原因はちょっとわからないです。細かい方法によっても変わってきますので…。
はじめまして。
QSVEncをAviutlにて使用させて頂いています。
素晴らしいソフトの作成ありがとうございます。
Core i3 3225とGA-H77N-WIFIの組み合わせで使用しています。Virtu MVPは使用していません。TSファイルのエンコードで110FPSほど速度が出ており、大変満足しています。
家族共用のパソコンで使用しており、エンコード用のアカウントと家族用のアカウントを分ける形で使用したいと思っています。
しかし、エンコード用アカウントでエンコードを走らせつつ、ユーザー切り替えを行い家族用アカウントにすると、エンコード用アカウントのQSVEncの起動が失敗してしまいます。バックグラウンドのアカウントでエンコードをしつつ、別のユーザーアカウントが通常使用するという形をとりたいと思っています。
QSVEncの実行は、デスクトップを表示しているユーザーでしかできないのでしょうか?Intel Media SDKの仕様上どうしようもないものでしょうか?
もし何か回避策ございましたら、教えて頂けると幸いです。
よろしくお願いします。
おっしゃるとおり、やはりデスクトップを表示しているユーザーでないと難しいようです。
色々試してみたのですが、ユーザー切り替えをしてしまうとQSV自体が無効になってしまい、回避策も見つけられませんでした。おそらくIntel Media SDKの仕様だと思います。
すみませんが、やはりエンコ中はPCを専有することになってしまうかと思います。
テストして頂きありがとうございます。
やはり、Intel Media SDKの仕様で無理ですか・・・
夜中にエンコードすることで対応いたします。
もし、何らかの対策が見つかりましたら、このブログでお知らせ頂けると幸いです。
よろしくお願いします。
「VQPはプログレッシブ専用で、インタレ入力時は使えない。」は今だと
「VQPはプログレッシブ専用で、インタレ出力時は使えない。」になるのかな?
仰るとおりです。記事更新しました。
QSVEnc 1.31で追加された「新たなインタレ解除モードを追加。(自動、自動(bob)、24fps化(固定))」を使用するときは--vpp-deinterlaceオプションになんらかの引数を使用するのでしょうか?
QSVEnc 1.31で導入した新しいインタレ解除モードを使用しようとすると、4156ドライバで動作を停止してしまうという問題があり、QSVEnc 1.33で無効化されています。
http://rigaya34589.blog135.fc2.com/blog-entry-601.html
申し訳ありませんが、現在は使用できません。
高速HWインタレ解除のことをネットで調べてたらこのサイトを見つけました。
CLIのQSVENCCはそれ以上の性能をもっているようですが、当方のIVYBRIDGEでは性能表でペケばかりで残念です。
普段(と言うかたまにしかエンコしないんですが)FFMPEGのYADIF+MCDEINTでインタレ解除してますが、とにかく遅い^^;
なので高速インタレ解除だけでもうれしいです。ってか他にツールが見当たりません。
そこでおたずねしたいのですが、インタレ解除だけして、エンコしないオプションってあるでしょうか?
FFMPEGでは-qp0に相当するやつです。よろしくお願いします。
なるほど…
おもしろそうなのですが、残念ながら今のQSVEncは最後のエンコードを前提に作っているので、現状ご期待の動作はできません。
結構改造が必要で、それなりに時間がかかりそうです。
ありがとうございます。
プレーヤーのHW解除は結構あるのですが、エンコもあれば理想的です。
とうめんはcqp値を低くして試してみることにします。
なんといってもQSVENCCは速い!笑ってる間に終わっている(笑
エンコードなしのモードをQSVEnc 2.08にて追加しました。
http://rigaya34589.blog135.fc2.com/blog-entry-654.html
"-c raw"を指定するとy4mで出てくるので、パイプを通すなどしてx264等に渡していただければと思います。
QSVEncC.exe -i <avsファイル> -o - -c raw --tff --vpp-deinterlace bob | x264 --demuxer y4m -o <出力mp4ファイル> -
GUI版は以前から試していましたがCUI版もQSVEnc素晴らしいです
このページの"コマンドラインの例"の
"avqsv読み込み + インタレ解除エンコード"
の例("QSVEncCのオプションの説明.txt"では53行目)についてですが、
オプションが
"-vpp-deinterlace"
となっていますが、ハイフンが2つの
"--vpp-deinterlace"
ではないでしょうか。
最初に試した時にコピペしたらそんなオプション無いよと言われて少し混乱しました。
つまらない指摘で恐縮ですが自分と同じ所で躓く人がいるかもしれないので報告させていただきました。
失礼しました。修正します。
trimで指定した場所から末端までをエンコードという処理をしたかったのですが、総フレーム数調べて末尾に突っ込む以外に方法ありますでしょうか。
たとえば、1200フレーム目から最終フレームまでエンコードしたい場合、
--trim 1200:0
のように指定していただければと思います。
TS からのエンコードに HandBrakeCLI をしばらく使っているのですが、いくつか不満点があり QSVEncC も使い始めました。素晴らしいソフトウェアを提供くださって有り難うございます。
テスト時に 1440x1080i を作成して気付いたのは、QSVEncC から直接作成した mp4 と mkv とでは再生時のアスペクト比が違うことでした。アスペクト比の決定をコーデック読みにするかコンテナ読みにするかはプレイヤーに依存すると思いますが、どうも mkv の場合コンテナ読みだと上記の例では PAR=1:1 もしくは DAR=4:3 相当になるようです。mp4 と同様、PAR=4:3 もしくは DAR=16:9 相当になると嬉しく思います。
--audio-copy で音声周りの処理が楽になると期待したのですが、デュアルモノや解説音声はやはり鬼門でした。いずれにしろ RFF 付の動画がある限り、HandBrake との併用は続きそうです。TS の扱いは難しい…
なるほど、mkvではSAR比が反映されない…
すこし調べてみます。
mkvでSAR比が反映されない問題ですが、QSVEnc 2.26で解決できていると思います。
http://rigaya34589.blog135.fc2.com/blog-entry-725.html
ご指摘ありがとうございました。
早速のご対応ありがとうございます。無事反映されていることを確認いたしました。
度々お世話になります。
インタレ解除だけして-c rawでパイプ渡してるときに起こります。
ビデオが途中で切れてしまします。
QSVでエンコする際には起こりませんので、何かあるのかもしれません。
226最新版使ってますが、詳しくわからないものの以前からあったようです。
すこし試してみましたが、再現できませんでした。また、device operation failureはQSVの内部エラーのため、原因がわかりづらいです…。
もしかするとdGPUがついていると不安定、みたいなことがあるかもしれません。
ご利用の環境情報、ドライバ情報、入力ファイルの種類、などを教えていただけないでしょうか?
非常に不定期に起こるので、errLevelをチェックしながらエンコ (この場合インタレ解除) してます。
入力ファイルはDVDのmpeg480iです。
qsvenc -i in.mpg -vpp bob -c raw | ffmpeg -i - out.mpg の形で使ってます。
長時間の処理 (6~8時間) になります。
QSV単体でエンコはあまりしませんが、経験範囲ではfailureしたことはないですね。
機種は至ってどこにでもあるラップトップ (ivy) です。
OS : Windows 8.1 (x64)
CPU: Intel Core i7-3632QM @ 2.20GHz (4C/8T) <IvyBridge>
RAM: Used 3928 MB, Total 8052 MB
GPU: Intel HD Graphics 4000 (16EU) 350-1150MHz [35W] (10.18.10.4226)
Media SDK Hardware API v1.11
古い機種で多分お持ちではないでしょうから、他の方からの報告とかに
たよらざるをえないかもしれませんね
地デジのロケフリシステムを作るスレから参りました。
QSVスレに誘導していただいたのですが、作者様のブログにコメントをつけさせていただくことにしました。
Vladiさんのところのバッチファイルを参考にバッチファイルを書いてみているのですが、QSVEncCの--audioオプションの設定について伺えないでしょうか。
-copy
-stream :stereo
-bitrate 128
複数のオプションを設定する際の記述方法はどのようにしたらよいのでしょうか。お時間のあるときにでも教えていただければ幸いです。よろしくお願いいたします。
まず、先にお詫びなのですが、--audio-streamはaudio関連オプション複数指定時に期待した動作をせずエラー終了する問題があり、これを2.32で修正しました。
--audio-codec / --audio-bitrate / --audio-samplerate / --audio-stream は(同一トラックに対して)同時に指定できますが、音声再エンコードとなることから--audio-copyとは併用できません。
それ以外は同時に指定していただくことが可能です。
--audio-codec aac --audio-stream :stereo --audio-samplerate 48000 --audio-bitrate 128
上記設定は2.32以降、すべて同一の音声トラックに対し作用します。
音声トラックが複数ある場合には、オプションの前に <トラック番号>?<オプションの値>のようにしてください。トラック番号は1,2,3,...と数えてください。
--audio-codec 1?aac --audio-bitrate 1?128 --audio-codec 2?aac --audio-bitrate 2?256
修正作業、お疲れ様です。
早速のご対応ありがとうございます。
併用不可の部分と複数適用時の記述方法がわかって疑問が解けました。
--audio-copyと併用はできないだろうなと思いつつうまくいかずにいろいろ試していたところでした。汗
スレの方にも報告しながらいろいろ試して楽しんでいきたいと思います。
度々お世話になります。
handbrakeのCLIでは、解像度の設定時に-X 720 として横方向のみ固定設定して、縦については自動で追随?するような設定で利用しています。ソースによってエンコード後の解像度が変わってくる感じです。
QSVEncCへの置き換えにあたって、同様の設定を狙ってみているのですが、今後、QSVEncCではこのような指定方法には対応する可能性はありますか?
イメージとしては、縦解像度を720に設定したら、入力ファイルが4:3なら自動的に960x720に、16:9なら自動的に1280x720にする感じでしょうか?
いまのところ、そういうモードはないですが…
お世話になっております。
やはり今のところはそのような機能はないのですね。
イメージとしては、縦解像度を720に設定したら、入力ファイルが4:3なら自動的に960x720に、16:9なら自動的に1280x720にする感じでしょうか?
おそらくそういう意味合いなのだと思います。
放送でのアスペクト比の問題がいまいち理解できず・・・
正確な説明にならないと思われるので、今、handbrakeで起こっている具体例を書きますね。
720xに設定したときの解像度の変化です。
左:ソース、右:エンコード後
1440x1080→720x544 (地デジ)
1440x1080→720x540 (地デジ)
1920x1080→720x400 (BS)
地デジで同じ解像度でもなぜ結果が変わってくるのかがよくわからないところではあるのですが。
地デジは確かに解像度そのものは1440x1080(4:3)ですが、実質は16:9なので、テレビなどではこれを引き延ばして16:9で再生しているはずです。(BSはもともと1920x1080(16:9))
リサイズするのであれば、常に16:9の解像度(1280x720, 960x540, 768x432, 640x360など)を指定してしまってよいような気がしますが…。
ありがとうございます。
>リサイズするのであれば、常に16:9の解像度(1280x720, 960x540, 768x432, 640x360など)を指定してしまってよいような気がしますが…。
リサイズ前提なので、解像度は当面決めうちで行ってしまおうと思います。
はじめまして。エンコードをいろいろ試している間にQCVEncCにたどり着きました。エンコード速度が爆速で自動化も容易なため非常に助かっています。ありがとうございます。
一部、エンコードがうまくいかなかった為コメントしました。時間があるときに返信していただければ幸いです。
地デジの.tsから.mp4にエンコードしようとしてますが、音ズレの修正を"--audio-filter adelay=<int>"で行おうとしたところ
①"--audio-copy"をオプションに付けるとエラーメッセージや警告は出ませんが音の遅延がまったくされていない(実行中のコマンドプロンプトを見てもフィルタがかかっていないのがわかる)
②"--audio-codec aac"をオプションに付けると音声が遅延がないものとあるものが二重で出力されてしまう。
といった結果になってしまいました。ちなみに音声は"--avqsv"で.ts動画から読み込みです。音ズレの原因はフレームレート変換でなくソース上の問題だと思います。使用した②のコマンドを載せておきます。
QSVEncC.exe --avqsv --audio-codec aac --audio-filter adelay=2000 --output-thread 1 --tff --vpp-deinterlace it --output-res 1280x720 --trim int:int,int:int,int:int,int:int -i "hogehoge.ts" -o "hogehoge.mp4" --log "hogehoge.txt"
単に--audio-copyとすると音ズレしてしまうということでしょうか?
誤解をしていたら申し訳ないのですが、通常tsからmp4にエンコードする際には、音ズレの修正を明示的に行う必要はなく、単に--audio-copy ないし --audio-codec aacを使用すればよいはずです。(むしろ、adelayを入れると音ズレする事になります)
また、--audio-filterを使う際には、--audio-codec xxx が必要ですが(--audio-copyでは動作しません)、こちらでは二重になるようなことはありませんでした。
QSVEncC64.exe --avqsv -o input.ts -o output.mp4 --vpp-deinterlace normal --audio-codec aac --audio-filter adelay=2000
とするとログには、
avwriter: h264, #1:aac/2ch:adelay -> aac/2ch/192kbps => mp4
のように出力され、音声はひとつのみmuxされます。
AviUtlで特定のtsファイルをエンコードすると、どうしても音ズレが発生し、結局入力プラグインをDirectShow File Readerに変更しました。
その後、どんなtsファイルでも音ズレは発生していません。私の使用環境は、DirectShow File Readerを入力プラグインの一番上に設定しています。
SplitterはK-Lite Codec Packの設定で全てLAV Splitterを使用しています。DirectShow Filterもtsファイルも同じSplitterを設定しているためか、DirectShow File Readerに問題が発生したことはありません。
DirectShow File Readerの優先度を下げた場合エラーが発生するようです。
映像を可変レートでエンコードした場合、なぜかL-SMASH Worksを使うと特定のtsファイルで音ズレが発生しました。私と同じ現象であれば、一度DirectShow File Readerを一番上に持ってきて試してください。
jin様へ
tsエンコの音ズレは常に話題に登るほど聞き慣れたものですが
tsファイルの先頭を少し削って上げると正常に読めたりします
このようにtsファイル自体の問題であることも多いです
フレームレートが正常でない場合30000/1001に調整してあげることも重要
Direct Showはシークなどの問題があるので使いたいとは思わないですね
一度中間ファイルを作ってからじゃないと不安でしょうがない
L-SMASH Worksは数年前からフレームレートが誤った形で読み込まれるのが
ほぼ改善されたため、それ以来私の環境では問題は起こってないです
古いプラグインを使い続けてるのであれば更新してみるのはどうでしょう
リンクされてるffmpegの問題の可能性もゼロではないです
Direct Showは数々の手を講じた上での最後の手段と考えるのが定説というかセオリーです
通りすがり様
私がAviUtlを導入したのは1年半前TMPEGEnc Video Mastering Works6に有料のCM検出プラグインを導入するべきか検討する中で、AviUtlでは無料で且つ局ロゴ消しまでできるプラグインが存在すると知ったのがきっかけでした。
ですから導入には諸先輩方のブログを参考に、いわゆるセオリーどおりの設定をしました。
ところで、TVMW6を購入したのはH265フォーマットに対応すると聞いたためであり、当然AviUtlのエンコードも最初からX265.exeを使用する前提です。
ここで、諸先輩方があまり触れていないコーデックパックの話になります。
私は昔からK-Lite Codec Packを利用して、動画の再生はMPCを主に使います。当然H265の対応もK-Lite Codec Packで行い、利用するSplitterの設定はLAV Splitterを選択しています。tsファイルに限らずVideo入力Audio入力のfilterはDirectShow を利用する環境が、AviUtl導入前から出来上がっていたわけです。
何も知らない私が諸先輩方のブログを参考にAviUtlを導入すると当然L-SMASH WorksをFile Readerに設定します。確かに、9割以上のtsファイルでは問題がありませんでした。ところが、音ズレするtsファイルはMurdoc Cutter で前後の不要部分を切り取っても、音ズレは改善しません。
そこで最後の望みをかけて、DirectShow File Readerを頭に持ってくると全く問題がなくなりました。1年半エラーなしで使用してきたわけですが、考えて見れば当然の結果です。
システムの利用するVideo入力Audio入力のfilterとAviUtlが使用するfilterを統一したので異常が発生する原因を解消したわけです。
L-SMASH Worksが特定のファイルで音ズレを起こしたのは、システムでK-Lite Codec Packを利用しているのに、L-SMASH Worksがlibavcodecライブラリセットを利用するため特定の条件下でうまく機能しないと考えられます。
これは、私の推測でしかありませんが、x265でエンコードしたときに、特定のファイルで映像ファイルの長さが0.03~0.04秒(1フレーム分)長くなっています。映像の長さが伸びたわけではなく、1フレーム分末尾と同じフレームが最後に追加された感じです。
DirectShow File Readerを使った場合は音声ファイルにも1フレーム分無音の長さが追加されるようで音ズレは起きません。
ところが、私の場合システムがtsファイルの読み込みにLAV Splitterを使用した後、AviUtlがファイルの読み込みにlibavを使用した時に、条件によってファイルの終末処理で追加される映像のフレーム数と音声のフレーム数に差が発生し、結果として短い音声ファイルを長い映像ファイルに合わせるために音声ファイルの伸長が発生し、結果として音ズレしたファイルが作られると予想しています。
逆の見方をすれば、libavcodecライブラリセットをシステムに導入している方は、L-SMASH Worksを使った方がシステム的に安定するのではないかと想像しています。
通りすがりさんが、libavcodecライブラリセットの利用者で、L-SMASH Worksでエラーは無いよ、というのであれば、私の予想は大まかな意味で当たっていると思われます。
自分ではL-SMASH Worksもlibavcodecライブラリセットも導入する必要性を感じていないので、検証する予定が今のところありませんが、これからシステム環境を構築する予定の方がいれば、libavcodecライブラリセットとL-SMASH Worksをセットで導入して、結果を教えていただきたいところです。
皆様、さまざまな回答ありがとうございました。
製作者様へ
まず、”--audio-copy”使用時の音ズレの原因が特定できました。
エンコ速度と出力ファイルサイズを優先で"--vpp-deinterlace it"と"trim" を利用したため発生したと思われます。--vpp-deinterlace normal"と"trim"ではおそらく音ズレはありませんでした。(あくまで私の耳と目の判断です。)
又、製作者様の検証と同様に「QSVEncC64.exe --avqsv -i input.ts -o output.mp4 --vpp-deinterlace normal --audio-codec aac --audio-filter adelay=2000 」を実行しましたが前と同様に遅延の無い音声、遅延補正された音声両方二重で出力されてしまいました。エンコPC、再生ソフトを変更しても同様の状態でした。(私としてはインターレス解除をnormalにすれば問題だった部分は解決できたので問題ありませんが報告として挙げておきます。)
jin様へ
速度優先のためAviutlはエンコード使っていません。エンコード速度の都合上AviutlなどからQSVEncCに移ってきました。QSVEncCでは処理速度400fpsは設定によって出ました。
通りすがり様
.tsファイルの先頭はcciconvにてきれいにしたものを使っているのでそのあたりの問題は無いと思われます。
>>エンコ職人志望 様
解決したとのこと、良かったです。
"--vpp-deinterlace it"と"trim"はおっしゃるように非対応です。明記しておらず申し訳ありません。
「QSVEncC64.exe --avqsv -i input.ts -o output.mp4 --vpp-deinterlace normal --audio-codec aac --audio-filter adelay=2000 」について試していただきありがとうございます。よろしければ、これを実行した場合について、2点確認させていただけないでしょうか?
1.入力のtsの音声は1つでよろしいでしょうか(多重音声などではないでしょうか)
2. ログに、
avwriter: h264, #1:aac/2ch:adelay -> aac/2ch/192kbps => mp4
のような表示があると思うのですが、どのようになっていますでしょうか? (ここで二重にmuxされているか、フィルタがかかっているかなどがわかります)
>> ts読みについて
わたし個人の感想としては、別に一つの方法にこだわる必要はありませんので
1. L-SMASH Works
2. m2v.aui + ts2aac.exe
3. DGIndex
あたりを試していけば、どこかでカバーできると思います。まあ使い勝手とかもあるので、どれがいいというわけではないですが。わたしのようにFAWを使う場合は音声を分離するので、2か3が優先になると思います。
それでもだめならcciconvで先頭を削るのはもちろん有効ですし、それでも…ということならもうTMSRで無劣化再muxするなりした方がいい気がします。
--audio-filter の機能をつけてもらったものです。
コメントを見ていて気が付いたのですが、ffmpegのadelayはオーディオチャンネルを遅延させるものなので、トラックがモノラル以外ではadelay=2000では最初のチャンネルだけが遅延ささってしまうのでそのせいではないでしょうか?
ステレオの場合は--audio-filter "adelay=2000|2000" とする必要があると思います。
もし違っていましたらごめんなさい。
製作者様の確認事項として
1.DGIndexとHandbreakで確認したところ音声はステレオ1トラック(ステレオは多重音声に入るのか分からなくてすみません)のみでした。
2."avwriter: h264, #1:aac/2ch:adelay -> aac/2ch/192kbps => mp4"と表示されて、音声が2重になっていました。
また、よっちゃん様の指摘のように[--audio-filter "adelay=2000|2000"]で確かに音声に遅延が発生し2重にはなりませんでした。fmpegの公式の説明でchannel = track と私が解釈してしまったために左右の音のうち片方のみが遅延し音声が2重化したと勘違いというのがことの顛末のようです。
製作者様、解決に知恵を貸してくれた皆様ありがとうございました。
情報いただきありがとうございます。
#1:aac/2ch:adelay -> aac/2ch/192kbps は、
"#1:aac/2ch"の音声トラックに"adelay"のフィルタを掛けたものを、"aac/2ch/192kbps"にエンコードするという意味で、2重にmuxしているわけではありません。
指摘いただいたように、adelayがチャンネルに対し作用することから、左右でズレが生じ、2重になってしまったものと思われます。
ともあれ、解決して良かったです。情報提供ありがとうございました。
QSVEncCのオプションの有効性について教えてください。
QSV(LA-ICQ)でのエンコードを行っておりますが、GOP長は300固定であり、動的な変更はIntelの仕様などの理由で不可なのでしょうか。
--i-adaptや --scenechangeの指定によって必要に応じてIフレーム挿入をしてほしいのですが、
not supported on current platformと出てオプションが無効化されてしまい、常にGOP長300フレームのファイルとなってしまいます。
以下にQSVEncCにエンコード時に投げているオプションを記載します。もしオプションの投げ方が原因の場合はご指摘いただけると幸いです。
QSVEncC64.exe -i %1 --codec h264 --avqsv -u 1 --la-icq 29 --la-depth 60 --la-quality slow --ref 4 --output-res 1280x720 --vpp-scaling fine --vpp-denoise 20 --tff --vpp-deinterlace normal --trellis auto --bframes 2 --b-pyramid --i-adapt --scenechange --audio-copy --avsync forcecfr -o %1_QSV.mp4
CPUはi3-6100T(Skylake世代)、外付けGPU無し、QSVEncCのバージョンは2.61、IntelHDグラフィックスのドライババージョンは21.20.16.4542です。
オプションの指定方法は特に問題ありません。
--i-adaptなどの動的にGOPのフレームパターンを変更するオプションは、一応Intel Media SDKに存在するため、いつでも使用可能なよう用意していますが、いまのところ有効に動作するのを見たことがありません。オプションが有効であるかMedia SDKに聞くと無効と返ってきます(--check-features)。残念ながら、現状では固定長GOPしかないと思われます。
rigaya様
ご確認していただきありがとうございました。
Intel Media SDK上にオプションが存在しているためコマンドとして実装しているものの、現状では有効に動作しない状態ということで了解致しました。
とりあえず固定GOP長でも概ね問題ない映像に仕上がる為、--i-adaptと--scenechangeを抜いた設定で様子見したいと思います。
今後もQSVEncの開発頑張っていただけたらと思います。
現在、batファイルにファイルをドロップすると
QsvEncCのコマンドを別batファイルに追記するという頭の悪い方法で大量エンコしています。
本日今年になって初めて実行したところ、
QSVEncC64.exe(Ver2.56)がWindowsDefenderに
トロイ(Trojan:Win32/Clavior.H!cl)として削除されました。
(QSVEncC.exeは削除されない)
試しにDLしなおしても削除されます。
2.55、2.57v2以降は問題なくDLできたので偶々一致しただけでしょうが、
念のため報告させていただきます。
なにかの拍子に誤判定されてしまうのは残念ながら避けようがないのかもしれません。
はじめまして、qsvenccを便利に使わせて頂いてます。
サーバー上にあるTSファイルをMP4に変換し、そのままサーバ上に書き出したいのですが、どうもローカルドライブ以外で読み書きをしようとするとエラーが出てしまうようです。
ネットワークドライブに割り当ててもダメでした。
これは仕様上仕方がないものでしょうか?
それとステレオ2カ国語の音声の、Lチャンネルのみ音声にしたいのですが、 --audio-stream FR:mono と引数を指定しても、無音になってしまいます。
これは指定の仕方を間違っているのでしょうか?
もしわかるようであれば教えて頂けると助かります!
すみません、ネットワークドライブにしてあげれば、問題なく動作可能、という認識でした。というのも、うちでも基本はネットワークドライブ上のデータばかりエンコードしているためです。
ただ、ネットワークドライブといってもいわゆるNASではなく、Windows PCのネットワーク共有なのですが…その差なのでしょうか…。ただそうなってくると普通のNASは持っていないので、対応が難しいですが…。
>Lチャンネルのみ音声にしたいのですが
こちらでも再度確認してみましたが、
QSVEncC.exe -i world_nhkbs.ts -o test.mp4 --audio-codec aac --audio-stream FR:mono
で問題なく片方の音声のみmonoの動画となりました。
お手数ですが、dll等も含めて最新版となっているか、ご確認いただけないでしょうか? (あるいはエンコード対象の問題?)
こんにちは、返信ありがとうございます。
その後いろいろ試したところ、ネットワーク経由は問題なくできました、私のミスだったようです、すみません。
それと二ヶ国語を主音声だけにする方法についても、上手くいきました。
私がやっていた時は --audio-copy を指定していて、それがマズかったようです。
またCSの変換では音が短くなってしまう現象があったのですが、 -avsync forcecfrで回避できました。
色々とお手数をおかけして申し訳ありません。
他にも困った現象があるのですが、コマンドをよく精査してからまた相談させて頂ければ幸いです。
QSVEncc、いい具合に動作するようになりました。本当に素晴らしいツールをありがとうございます。
最終的にコマンドはこんな感じに落ち着きました。
■二か国語でない場合
-i [tsfile] -o [mp4file] --la-icq 35 --fallback-rc --vpp-deinterlace normal --tff --avsync forcecfr --audio-codec aac
■二か国語の場合、主音声のみにする
-i [tsfile] -o [mp4file] --la-icq 35 --fallback-rc --vpp-deinterlace normal --tff --avsync forcecfr --audio-codec aac --audio-stream FL:mono
CSでは後半に行くに従い音ズレがあったのですが、--avsync forcecfrで解決できました。ただ、-deinterlace bob が使えなくなってしまうため、画質が落ちてしまうのが残念です。
それといくつかファイルを変換していると、いくつかのファイルでこんなログを吐き続けることがありました。
[90.4%] 52143 frames: 116.36 fps, 3108 kb/s, remain 0:00:48
[90.5%] 52232 frames: 116.35 fps, 3113 kb/s, remain 0:00:47
Big Gap was found between 2 frames (52367 - 52368), avsync might be corrupted.
Big Gap was found between 2 frames (52369 - 52370), avsync might be corrupted.
Big Gap was found between 2 frames (52371 - 52372), avsync might be corrupted.
[90.6%] 52321 frames: 115.90 fps, 3116 kb/s, remain 0:00:47
[90.6%] 52321 frames: 113.05 fps, 3116 kb/s, remain 0:00:48
[90.6%] 52321 frames: 109.27 fps, 3116 kb/s, remain 0:00:50
Failed to SynchronizeFirstTask : device operation failure.
Error in encoding pipeline. : device operation failure.
error at encode thread.
error at encode thread.
error at encode thread.
…
既知の問題でしたら申し訳ございません。
このツールのおかげで非常に助かりました。重ね重ね本当にありがとうございます。
>> Big Gap was found between 2 frames (52367 - 52368), avsync might be corrupted.
これはなかなか難しいエラーで、出ないといいなあぐらいに思っていました。出てしまうといずれ破綻してエラー終了してしまうと思います。
CSのデータはちょっと手にはいらないので確認しようがないのと、再現できても対処は難しいかも…というのが現状です。
QsvencCとNvencC愛用させていただいてます。
QsvencC > NvencCのパイプを試そうとしたところ以下のようなエラーがでます。なにが問題か教えていただけませんか?
QsvencC、NvencC単体では問題なく動作しております。
バッチ
%qsvenc_path% --avqsv -i %1 -o - -c raw --tff --vpp-deinterlace normal | %nvenc_path% --y4m -i - -o "Z:\test.mp4"
エラー内容
Failed to initialize encode session. : undeveloped feature.
QSVEncC.exe finished with error!
y4m: failed to parse y4m header.
Failed to open input file.
%qsvenc_path% --avqsv -i %1 -o - -c raw --tff --vpp-deinterlace normal | %nvenc_path% --y4m -i - -o "Z:\test.mp4"
は無理でしたが、
%qsvenc_path% --avqsv -i %1 -o - -c raw --tff --vpp-deinterlace normal | %nvenc_path% --avsw -i - -o "Z:\test.mp4"
で問題なく動きました
-c rawがあると、やはりうまくいかないきがします。
HD4000 , win10です
上のpotatoさんの書き込みが気になって
QSVEncC.exe --avqsv -i in.mp4 -c raw -o - | x264.exe --demuxer y4m - -o out.mp4
を試したところ、v2.61だとうまくいきましたが、
v2.62~v2.71では
Failed to get required buffer size for vpp. : invalid video parameters.
QSVEncC.exe finished with error!
となり失敗します。
どうもQSVEncCの-c rawが壊れてしまっているようです。
環境:
https://pastebin.com/c2gKPbuAまた、この記事本文の「エンコードなし出力→QSVデコードのみ使用」の例で
-c raw が抜けているようです。
>potato様、Tac様
ご報告ありがとうございました。
-c rawで壊れる問題は2.72で修正しました。
NVEncへ渡せるかどうかは、QSVEnc + NVEncが実行できる環境がないので試せていませんが、x264へのパイプ渡しでは正常動作することを確認しています。
>Tac様
ヘルプの問題など、以前報告いただいた問題も2.72で修正できていると思います。ご指摘重ねて感謝いたします。
拡張QSV出力でインデックスが配列の境界外エラーが出てしまいます。
「ファイル」「プラグイン出力」「拡張QSV出力」「ビデオ圧縮」を押すと以下のエラーが出ます。
System.IndexOutOfRangeException: インデックスが配列の境界外です。
場所 QSVEnc.QSVFeatures.getFeatureOfRC(Int32 rc_index, UInt32 codecId)
場所 QSVEnc.frmConfig.fcgChangeEnabled(Object sender, EventArgs e)
場所 QSVEnc.frmConfig.fcgCXOutputType_SelectedIndexChanged(Object sender, EventArgs e)
場所 System.Windows.Forms.ComboBox.OnSelectedIndexChanged(EventArgs e)
場所 System.Windows.Forms.ComboBox.set_SelectedIndex(Int32 value)
場所 QSVEnc.frmConfig.SetCXIndex(ComboBox CX, Int32 index)
場所 QSVEnc.frmConfig.ConfToFrm(CONF_GUIEX* cnf)
場所 QSVEnc.frmConfig.InitForm()
場所 QSVEnc.frmConfig.frmConfig_Load(Object sender, EventArgs e)
場所 System.Windows.Forms.Form.OnLoad(EventArgs e)
場所 System.Windows.Forms.Form.OnCreateControl()
場所 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
場所 System.Windows.Forms.Control.CreateControl()
場所 System.Windows.Forms.Control.WmShowWindow(Message& m)
場所 System.Windows.Forms.Control.WndProc(Message& m)
場所 System.Windows.Forms.ScrollableControl.WndProc(Message& m)
場所 System.Windows.Forms.Form.WmShowWindow(Message& m)
場所 System.Windows.Forms.Form.WndProc(Message& m)
場所 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
エラー画面で「続行」を押すと設定画面がほぼ空で表示されます。その後設定値を入れるとエンコは正常にできます。
殆どの場合で再現しますが、ごくごく稀にエラーが出ない事があります。出ない契機は不明。
環境は以下です。
QSVEncC (x86) 2.75 (r1360) by rigaya, Jan 14 2018 00:42:26 (VC 1900/Win/avx2)
reader: raw, avi, avs, vpy, avqsv [H.264/AVC, H.265/HEVC, MPEG2, VP8, VP9, VC-1]
OS : Windows 7 x86 (7601)
CPU: Intel Core i5-3337U @ 1.80GHz [TB: 2.70GHz] (2C/4T) <IvyBridge>
RAM: Used 1482 MB, Total 3482 MB
GPU: Intel HD Graphics 4000 (16EU) 350-1100MHz (8.15.10.2778)
W
他のプラグインと競合しているのかと思い、aviutl単独のフォルダに、QSVEncだけをインストールして同じ事をやってみましたが、同じエラーが出ます。
原因わかるでしょうか?
こちらでは問題が起こらず、原因が不明となっています。
現在IvyBridgeやWin7の環境が存在しないため、最近のバージョンでは動作確認できておらず、そのあたりの問題かもしれないのです。申し訳ありません。
了解です、エンコード自体は問題ないので、このまま使う事にします、ありがとうございました。
先日ディスプレイドライバを更新したところ、AviUtlからの出力時にエラーで落ちるようになりました。
環境はWin 10 Pro 64bit、CPUはi5-7500Tです。イベントログにも有意な情報はなく、ダイアログにQSVEncでエラーがあったことが表示されるだけです。とりあえずドライバーをダウングレードするとエラーが出なくなりました。
ドライバー:
Intel Corporation - Display 2/28/2018 12:00:00 AM 23.20.16.4973
イベントログ:
アプリケーション:aviutl.exe
フレームワークのバージョン:v4.0.30319
説明: ハンドルされない例外のため、プロセスが中止されました。
例外情報:例外コード c0000005、例外アドレス 6C6013C0
今日(3/20)にWin 10 Pro 64bit, 7700KでIntelのページで検索すると、2/13付の4944が最新となっており、こちらを試してみましたが、問題なさそうでした。
4973はなにか問題があるのかもしれませんね…。
> 4973はなにか問題があるのかもしれませんね…。
先日はWindows Updateの更新対象として表示されていたのですが、今日(3/21)更新プログラムのチェックをしても表示されなくなってます。Microsoft Update Catalogのサイトを見ると出てくるのですが...
とりあえずしばらく現状維持で行きます。
d3d9とd3d11の違いが分かりません。
名前からして11の方が新しくて速そうな気がしますが、9の方が速いのですか?
基本的にはd3d9のほうが高速です。
ただ、d3d9はIntelの内臓GPU以外に別途dGPUがついている場合に使用できない場合があり、そうした際にd3d11が使用されます。
基本的には、このあたりは環境に合わせて自動的に決定されるため、明示的に指定する必要はありません。
お世話になります。
win10にてEPGStation > QSVEncCのパイプで視聴をしようとしているのですが、以下のオプションでQSVEncCがエラーを出して失敗してしまいます。
"-c h264 --la-icq 30 --la-depth 10 --tff --vpp-deinterlace none --audio-copy --format raw -i - -o -"
エラーログより
avout: failed to assume format from output filename.
avout: please set proper extension for output file, or specify format using option --format.
avout: Please use --check-formats to check available formats.
すみませんが、お知恵を貸してください。
エラーメッセージがわかりにくく、申し訳ありません。
raw formatの場合、映像と音声の両方を渡すことができません(どちらかのみ)。
なので、 --audio-copy を外していただければ、正常動作すると思います。
お世話になりました。
--audio-copy を外したことでエラーが出なくなりました。
今のところVLCplayerが反応せず、視聴するには至っていませんが、これからまた試行錯誤してみようと思います。
たびたびお邪魔します。
"-c h264 --la-icq 30 --la-depth 10 --tff --vpp-deinterlace none --vpp-denoise 20 --audio-codec aac --avsync forcecfr --format mpegts -i - -o -"
で音声が2トラックある番組の試聴を行おうとしたところ、第1トラックのみのエンコードになってしまいます。
そこで
"-c h264 --la-icq 30 --la-depth 10 --tff --vpp-deinterlace none --vpp-denoise 20 --audio-ignore-notrack-error --audio-codec 1?aac --audio-codec 2?aac --avsync forcecfr --format mpegts -i - -o -"
とすれば、音声が1トラックしかない番組の時に
"avqsv/avsw: could not find audio track #2
Audio output is only supported with transcoding (avqsv reader)."
とエラーになってしまいます。
同一の設定で副音声がある/ない番組を視聴することは難しいのでしょうか?
ちょっといまのところ、そのように同じ設定でうまく処理するのが難しそうです。
理想的には、 --audio-codec aacとすれば、全ストリームエンコードするのがよいのかなと思います。ちょっと修正を考えたいと思います。
了解です。
ご対応ありがとうございます。
QSVEnc 3.04 で、他の更新と一緒に--audio-codec / --audio-bitrate / --audio-samplerate / --audio-filter等のコマンドをトラックを指定せずに指定した場合、入力ファイルのすべての音声トラックを処理対象にするよう変更しました。
これで、ご指摘のようなケースでも同じオプションで対処可能かと思いますが、問題あるケースがまだあれば、ご指摘ください。
Avisynthのファイルを読み込ませると、Failed to load avisynth.dll というエラーメッセージが表示され、Avisynth形式のファイルが読み込み出来ませんでした。
てっきりAvisynthがインストールされていれば読み込んでくれるものと思っていましたが、別途avisynth.dllというのが必要なのでしょうか。
> Failed to load avisynth.dll
Avisynth使用時のエラーメッセージですが、32bit版のAvisynthをインストールしたのに、x64版のQSVEncCを使用すると表示される場合があります。
インストールしたAvisynthにあったものを使用されているかご確認いただけますでしょうか。
QSVEnCCいつも有り難く使用させていただいています。
いままでH264エンコードしかしていなかったので気づきませんでしたが、第3世代のCPU(古くてすみません)だと以下のようなエラーとなってはじかれてしまいます。
D:\QSVEncC64 -i test.ts -c mpeg2 --audio-copy -o test.mpg
MPEG2 encoding is not supported on current platform.
第4世代以後のCPUだと大丈夫でした。
第3世代のCPUはすでに所持しておらず、確認・修正することができない状況なので、このままとさせてください。申し訳ありません。(基本的に対応できるのは第4世代以降です…。)
初めまして。非常に便利に使わせていただいています。
AVIUTLで使うことが主なのですが、音声無変換の設定方法がわかりません。
コマンドラインでは--audio-copyのオプションで行けそうなのですが、AVIUTLのプラグイン設定でのやり方がわからず困っています。どうかご教示お願い致します。
> 音声無変換の設定方法
Aviutlは編集ソフトなので、基本的に無変換はできません。--audio-copyは残念ながらQSVEncCのみの機能となります。
avs2pipemod から、映像と音声を同時に渡すことはできますか?
avs2pipemod を使う場合、映像と音声は別々に処理するしかないでしょうか?
せっかくAVSファイル内でAudioDubしててもあまり意味ないですか?
失礼しました。
FFmpegで自己解決しました。