ffmpegならこちらへ 4

レス数が950を超えています。1000を超えると書き込みができなくなります。
2019/04/21(日) 01:11:29.44ID:TpNEqVMQ0
公式サイト
http://ffmpeg.org/

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

ffmpegならこちらへ 3
https://egg.5ch.net/test/read.cgi/software/1487682297/
2020/07/08(水) 21:12:24.48ID:BwUSrHEx0
大変すぎ
852名無しさん@お腹いっぱい。
垢版 |
2020/07/08(水) 21:51:26.95ID:AzpV7qyU0
ちょっと私には敷居が高すぎます
もっと簡単な方法がありましたらお教えくださいませ
2020/07/08(水) 22:12:47.57ID:sPjhTk8n0
ここまでカッチリとコードがあるのにこれ以上簡単とかどんだけだよ
もう進捗がGUIで表示されるソフト使えよw
2020/07/08(水) 22:25:47.44ID:BwUSrHEx0
知りたいのはパーセンテージでもなくて、ETAなんだよな
現在のtimeもトータルの長さも判ってて、あとは簡単な四則演算だけなのに、
何故一番知りたい部分を書かない
855名無しさん@お腹いっぱい。
垢版 |
2020/07/08(水) 22:32:01.64ID:AzpV7qyU0
VB.NETなら使い方を知っているのですが
エンコード中にFFmpegから、進捗に関する情報を取得するにはどうすれば良いですか?
2020/07/09(木) 00:19:11.97ID:UL/sc7i90
標準出力あたりに出てくるんじゃ
2020/07/09(木) 00:26:12.58ID:uvtzAyTH0
シェルスクリプトくらい読みなよ……
2020/07/09(木) 07:20:02.12ID:Pd5+XJsW0
Linux標準だから使われてるけど、速度出ない割に扱いにくいから無理ない部分もあるかもね
せめて実行ファイルの呼び出され方と標準出入力の理解は欲しい
2020/07/09(木) 08:47:42.67ID:DeHSL7E90
動画の時間わかっててリアルタイムにどこをエンコードしてるのが表示されてるんだから
見たまんまでわかれって話だよな
2020/07/09(木) 09:33:26.72ID:Pd5+XJsW0
まぁでも
demux → (seek →) decode (→ seek) → filter → encode → decode → demux
ってあって、表示される時間ってencodeの部分でしょ
予想は厳しいし表示される時間から実際の全体の時間を計ることもできなそう
2020/07/09(木) 10:32:30.03ID:r06qXH/T0
これまでの平均のエンコード速度、みたいなのは持ってないんだよな
最初予測が荒くて、だんだん正確になっていく、みたいなことが期待できない

そこから計算するんじゃなくて、開始時刻と現在時刻と、現在地点と全体の長さだけから
計算してしまえば、簡単に正確に計算できる筈だけど、
エンコーダーは知らない情報なので出力されない
一段上の奴なら知ってるけど、そんな機能は無い
2020/07/09(木) 10:50:27.93ID:81i3pLbk0
やりたいことは人それぞれだし
数こなして自分でノウハウを貯めるしかないんじゃないの?
2020/07/09(木) 12:30:27.56ID:rUG0Qktd0
>>835
その動画はdeshakeも併用してるよ
stabだけだと絶対に無理なのさ
2020/07/11(土) 20:38:07.16ID:1Gt3CyBH0
なんかRTXなのにcudaが効かないと思ってググったらnvdecってh264の444はサポートしてないのね
nvencは対応してるのになんでや
まぁデコードはCPUでもそこまで重くないからなんとかなるとはいえ
2020/07/18(土) 15:15:13.57ID:L8pmTivA0
mpeg-dashの映像とaac音声の無劣化マージいけたっけ?
2020/07/18(土) 15:22:14.81ID:G71RLvl10
いけたっけの前にできない理由がわからない
2020/07/18(土) 16:09:52.34ID:xYEpPon50
何らかのコンテナが対応してない可能性を考えたんじゃ
どうしてそうなるかは分からないけど
868名無しさん@お腹いっぱい。
垢版 |
2020/07/18(土) 19:01:14.28ID:DlfL7cYS0
ffmpegだけで逆位相ってできる?
通常の曲にカラオケ版の曲の逆位相を当ててボーカルの声だけ抽出したい
2020/07/18(土) 19:10:05.21ID:xYEpPon50
af "aeval=-val(ch)"
けサンプルの時間的な狂いなく合わせるのきつくて成功しないと思うね
2020/07/18(土) 20:01:17.77ID:gzxKUrGK0
AIでもまだ無理な分野だな
871名無しさん@お腹いっぱい。
垢版 |
2020/07/18(土) 20:10:37.82ID:DlfL7cYS0
早速ありがとう
完全でなくてもある程度抽出できれば大丈夫

それで

ffmpeg -i "対象ファイルのパス" -af "aeval=-val(ch)" "任意のファイル名.mp3"

とかでやってみたけどやり方が悪いのか元々ステレオだったのがモノラルになって出力しまう
できればステレオでやりたいんだけどどこを直せばいい?
2020/07/18(土) 20:20:29.56ID:G71RLvl10
そう言う目的なら波形編集ソフトがいいのかなあ
2020/07/18(土) 20:22:29.80ID:xYEpPon50
>>871
aeval=expr=-val(ch):channel_layout=same でやってみて

aevalは既定で、expr引数の縦棒「|」で区切ってサンプル毎に指定した式の数が出力チャンネル数になっちゃう
channel_layout引数に'same'を指定するとフィルタの入力と同じチャンネルになる
2020/07/18(土) 20:26:05.04ID:xYEpPon50
抽出(or 背景除去)は機械学習とかでそれなりにできるようにはなってるけど
学習からの予想でできたものって素材本来の味じゃないからなぁ
2020/07/18(土) 20:38:45.69ID:gzxKUrGK0
普通に画像を認識するのと同じように、時間とスペクトルの二次元データがあれば、
機械学習できる筈

問題は、スペクトルに変換するのに時間がかかりすぎること
生物は蝸牛管と脳で超並列で分析してるから簡単にやれてる
2020/07/18(土) 20:51:44.48ID:xYEpPon50
>>875
もちろん伴奏か歌唱の単体の素材もあったら今でもかなりの精度でできそう
けど素材がmix後のしか無い場合、本来の素材からは少なからずぼやけるはず
2020/07/18(土) 20:54:38.66ID:gzxKUrGK0
ぼやけるなら、変換の精度が低いんだろう
AIの出力って要は、脳内で鳴らした音を録音するようなものだから
878名無しさん@お腹いっぱい。
垢版 |
2020/07/18(土) 21:15:00.54ID:DlfL7cYS0
>>873
おお!
目的のものができた
丁寧にありがとう
2020/07/18(土) 21:15:44.13ID:xYEpPon50
精度はどこまで行っても"推測"の域を出られないからね

元の2つの波形から重ね合わせた波形は一意に決まるけど、逆に重ね合わせた波形から元の波形はほぼ無限に有り得ちゃう
学習による傾向から範囲を限定してもはっきりしたのにはできない
2020/07/18(土) 21:22:37.73ID:xYEpPon50
>>878
どうもー
タイミング調整で詰んだけど、前に位相反転でキャンセリング調整したことあったからね
素材の品位に差が無かったら上手くいったのかも知れないけど
2020/07/19(日) 09:15:04.76ID:sdyIHVp+0
hevc_nvecのb_ref_modeをeachに指定すると
Each B frame as reference is not supported
ってメッセージが出て出力できないんだけど、eachって使えないのかな
NVEncCだと--bref-mode eachが使えるから、hevc_nvecでも使えておかしくないと思うんだけど
なにか他に指定しなきゃいけないオプションでもあります?

投げたコマンドは↓で、FFMpegのバージョンは4.3
FFMPEG -y -i input.mp4 -c:v hevc_nvenc -bf 3 -b_ref_mode each -an output.mp4
2020/07/19(日) 16:49:37.72ID:rq6kjMIQ0
Zeranoe版のサイト、ずいぶん様変わりしたんだな。
2020/07/19(日) 17:41:24.03ID:rq6kjMIQ0
>>881
GPUとドライババージョンは?
2020/07/19(日) 17:45:07.44ID:rq6kjMIQ0
>>881
あと -b_ref_mode middle だとどうなる?
2020/07/19(日) 19:34:15.12ID:rq6kjMIQ0
>>881
一応調べたとこまで。

●3月時点: RTX 2080 SUPER + Game Ready Driver 442.59でも、HEVCで b_ref_mode each がサポートされてないって言われる
https://forums.developer.nvidia.com/t/details-about-nvenc-in-turing/64148/102

●ffmpegの該当エラー処理部
https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/nvenc.c#L425

 → NV_ENC_CAPS_SUPPORT_BFRAME_REF_MODE を調べて、GPUでEACHがサポートされているかを調べている。
   ここで 「EACHはサポートしとらんで」 という結果が返っているためエラーとなっている。
   (-b_ref_mode middle が通るなら、「MIDDLEのみサポートしとるで」 という結果が返っているのだと思う)

 →参考:NV_ENC_CAPS_SUPPORT_BFRAME_REF_MODEの定義
   https://github.com/FFmpeg/nv-codec-headers/blob/master/include/ffnvcodec/nvEncodeAPI.h#L1089

●rigaya氏のNVEncCの場合
https://github.com/rigaya/NVEnc/blob/master/NVEncCore/NVEncCore.cpp#L1567

 →NV_ENC_CAPS_SUPPORT_BFRAME_REF_MODEは調べているが、DISABLEDかどうかを見ているだけ。
   「EACHをサポートしているかどうか」はチェックしていない。

ということで、どうも each については、そもそも現時点で本当に使えるのかどうかよくわからんことになってる。
NVEncCで使えてるように見えても、実はちゃんと使われていない可能性もあるかも?

NVEncC.exe --check-features だと、B ref mode のサポート状況はyes/no表示になってるから、
yesだとしても、eachをサポートしてるのか、middleだけなのかはわからないんだよね。

とりあえず上で聞いた質問の答えを返してもらえるとありがたい。
2020/07/19(日) 20:35:00.25ID:sdyIHVp+0
1660superで、ドライバは446.14(リリース日:2020.5.27)
middleだと普通に行ける
ネット漁って使用例見てもみんなmiddleかdisableなんだよね
その可能性は考えたけど、やっぱNVEncCでもちゃんと使えてるかは不明か〜
2020/07/19(日) 22:50:44.40ID:rq6kjMIQ0
>>886
とりあえずrigaya氏のNVEnc5.11の記事にコメントしといた。

あと、NVEncC.exeで
 --bref-mode each
 --bref-mode middle
 --bref-mode disabled
をやってみて、結果に違いが出るのかどうかを確認してみてもらえるとありがたいかな。
eachでmiddleやdisableと異なる結果が出るなら、とりあえずeachでなにかやってるってことになるだろうし。
2020/07/20(月) 00:44:39.43ID:5oMYCxdy0
middleとeachで結果変わった…
rigaya氏のNVEncだと有効なのかな、それも不思議な話だ

◆投げたコマンド
NVEncC --avhw -i INPUT -c hevc -u quality --vbrhq 0 --vbr-quality 18 -b 3 --bref-mode disable/middle/each -o OUTPUT
2020/07/20(月) 00:59:34.27ID:u+vC8HPJ0
ごめん規制に巻き込まれて結果書き込みづらいが
とにかく若干eachの方が容量増えた
I,P,Bのフレーム数は変わらず
2020/07/20(月) 01:05:25.63ID:sMBTWBL30
>>888
・ffmpegのチェック処理にバグがある
・ドライバのバグで NV_ENC_CAPS_SUPPORT_BFRAME_REF_MODE に戻すべき値を間違っている
 (バグってるのはそこだけで、実パラメータとしてEACHを設定してやればちゃんとEACHとして動く)

といったことが考えられるけど、どうなんだろね。

ffmpegのソースの部分修正と自ビルドができるなら、>>885のエラー処理部のとこで
 ・NV_ENC_CAPS_SUPPORT_BFRAME_REF_MODE の戻り値をログ出力して確認
 ・該当エラー処理をうまいことコメントアウト
してみて、-b_ref_mode each/middle/disabled を比較してみるという手もある。
2020/07/20(月) 03:07:01.44ID:5oMYCxdy0
ごめんその手のスキルは持ち合わせてない

結果のログ載せようとすると弾かれるのか…
何が引っかかるのやら
2020/07/20(月) 06:23:21.56ID:ZdhxNz7z0
>>891
https://hastebin.com/
https://hardbin.com/ipfs/QmWD2J7oRBQaHSa3d4poZAcXcrUxw9LUQ78Ft9n6Gv5ksi/

ログとかはこういうので公開するといい
2020/07/20(月) 06:50:44.74ID:5oMYCxdy0
はえーいろんなサービスがあるもんだねー
貼り付けてみた
https://hardbin.com/ipfs/QmdMVabgY7pwii9v3y3ER33EzD2GdXZiiPb42WvNTYHd3b/#5axpY7gh6yoFbebjd55pYzuj1M6Z7jdpj5Zd2nLjPC9P
といっても分かるのは前述通り各フレームのサイズが微妙に変わったことくらいだけれど
2020/07/21(火) 00:52:07.66ID:UW4DncKk0
>>881の -b_ref_mode each の件、たぶん原因判明。ffmpegのバグ。
詳細はrigaya氏のブログのNVEnc 5.11の記事のコメント欄を参照。

NV_ENC_CAPS_SUPPORT_BFRAME_REF_MODE は each と middle の両方が
サポートされている場合、1(each) と 2(middle) の論理和をとって 3 を返す模様。

>>885にあるように、今のffmpegの処理は「eachをサポートしてるなら1を返すはずや!」という
チェックになっているので、それを修正する必要がある。

・・・報告ってどうやるんだっけな・・・。
2020/07/21(火) 01:16:58.75ID:75/FE8z20
>>894
みんな詳しいな、尊敬するわ
バグ報告はここっぽい
https://trac.ffmpeg.org/query?status=new&;status=open&status=reopened&col=id&col=summary&col=status&col=type&col=component&col=version&col=time&col=changetime&order=priority&report=1
2020/07/21(火) 01:36:43.18ID:V6VjZJnu0
I find bag.
This is middle and each bag.
1 + 2 is 3.
It is bag, all right?
You fix please.
2020/07/21(火) 02:00:21.01ID:oYJjamTG0
私はカバンを見つけました
2020/07/21(火) 02:20:57.74ID:UW4DncKk0
>>895
サンキュー。とりあえずチケット登録しといた。
コード修正は誰かにまかせるぜスタイルなので、フォローできる人はよろしく頼む。

  #8809 (hevc_nvenc / b_ref_mode each is not working) ? FFmpeg
  https://trac.ffmpeg.org/ticket/8809

早く直してもらえるといいな。まあ俺Turing持ってないんだけど・・・w
2020/07/21(火) 09:15:14.38ID:yhRpHULW0
bref-modeって何するもん?
2020/07/21(火) 14:03:26.48ID:xY8VAVEM0
900
2020/07/21(火) 14:35:33.57ID:y8zEtScE0
>>899
x264/x265で言うところの --b-pyramid みたいなもんじゃないかな?
Bフレームを参照するBフレームを作ることで圧縮効率を上げるみたいな。
(自分の理解が間違ってたら指摘よろ)

NVIDIAのSDKドキュメントの説明だと、
  「パフォーマンスへの影響なしに画質を改善できるので、有効にすることを強く推奨」
とされている。

 https://docs.nvidia.com/video-technologies/video-codec-sdk/nvenc-video-encoder-api-prog-guide/index.html#b-frames-as-reference

h264_nvenc で使えるのは、-b_ref_mode middle だけ。

hevc_nvenc だと middle だけではなく、(上記バグが修正されれば) each も使えるけど、
そもそもHEVCのBフレームがサポートされたのはTuringからなので、TuringのGPU(無印1650を除く)が必要。
2020/07/21(火) 15:00:23.20ID:yhRpHULW0
うちのは1660なので試してみよう
903名無しさん@お腹いっぱい。
垢版 |
2020/07/21(火) 22:57:12.57ID:hbGpSwkL0
一つの動画ファイルの中で
明るくなったり暗くなったりする動画ファイルがあるのですが
明るさの平均値が一定になるように
ホワイトバランスを設定するような機能ってffmpegにありますか?
 
2020/07/21(火) 23:06:40.06ID:oYJjamTG0
あります
2020/07/21(火) 23:37:44.96ID:yhRpHULW0
こういうのってなんで生きてるんだろうな
2020/07/22(水) 00:07:31.50ID:PnRxCa4D0
立場の低い人を困らせるのが生きがいだからだろ
言わせんな(そいつが)恥ずかしい
907903
垢版 |
2020/07/22(水) 18:45:22.19ID:Fy+7VVut0
>>904
どのコードを使えば良いかお教え願えないでしょうか?
2020/07/22(水) 18:58:42.21ID:JHY9D4oh0
知ってる訳がない
2020/07/24(金) 07:00:47.78ID:oM8O6VkH0
何がやりたいのかもう少し詳しく
とりあえずhisteqが近そうだけども
2020/07/26(日) 15:51:21.21ID:gfh2Twnh0
ffmpegOutで、2passってできる?
具体的にはvidstabを使いたいんだが、1passすら始まらずtransformでtrfファイルが見つからないとログがでる

-c:a copy
-c:v libx264
-crf 30
-vf vidstabdetect -an -f null -
-c:a copy
-c:v libx264
-crf 18
-vf vidstabtransform -y

vidstab自体はビルドできてる
detectとtransformでそれぞれプロフィールを分ければエンコできるんだが、できれば一気にやりたい
911名無しさん@お腹いっぱい。
垢版 |
2020/07/26(日) 16:07:12.41ID:gfh2Twnh0
ごめん、スレ間違えた
取り消します
912名無しさん@お腹いっぱい。
垢版 |
2020/07/26(日) 17:20:12.55ID:fCzyjOBH0
Hqdn3dでスムージングをかけながら、
動画を静止画として出力したいのですが、
なぜか反映されません。
それ以外の設定は反映されるのですが、
Hqdn3dだけは、画像出力の場合にだけ無効化される仕様なのでしょうか?
2020/07/29(水) 08:45:48.87ID:ErdE8Any0
>901
https://github.com/FFmpeg/FFmpeg/commit/466c14d10728cd315c60e602ffe3797e7dd0c3d3
なおったっぽい
2020/07/29(水) 18:53:12.25ID:oNkDnRhB0
>>913
ffmpeg-20200729-cbb6ba2-win64-staticで反映されてるね。
915912
垢版 |
2020/07/29(水) 19:11:01.67ID:+QEfK52S0
どなたかよろしくお願いいたします。

 
2020/07/29(水) 22:16:00.97ID:dqFr7O270
>>896のおかげか
2020/07/30(木) 00:34:19.53ID:1zwRp07c0
カバンが見つかってよかったね
918881
垢版 |
2020/07/30(木) 03:31:42.41ID:rv6AnFpc0
each使えるようになったけど新たな問題が…
FFMPEG -y -i input.mp4 -c:v hevc_nvenc -refs 5 -bf 3 -b_ref_mode each -an output.mp4
↑なら成功するけど
FFMPEG -y -i input.mp4 -c:v hevc_nvenc -refs <6-16> -bf 3 -b_ref_mode each -an output.mp4
のように、refsが6以上になるとエラーが出てエンコードできない
[hevc_nvenc @ 0000029fd8825340] EncodePicture failed!: generic error (20):
Video encoding failed
Conversion failed!

middleだと-refs 16でも行ける
NVEncCだとeach指定でも--refは16まで行ける
2020/07/30(木) 14:27:15.12ID:I+v0iwdb0
>>918

・意味ないかもだけど -refs のかわりに -dpb_size を使ってみた場合はどうなるかな?
  FFMPEG -y -i input.mp4 -c:v hevc_nvenc -dpb_size <6-16> -bf 3 -b_ref_mode each -an output.mp4

・何もわからない可能性もあるけど、差し支えなければ -loglevel debug をつけたログを
 テキストファイルかpastebinあたりで出してみてもらえるとありがたいかな・・・
2020/07/30(木) 14:47:32.07ID:rv6AnFpc0
NVEncCでeach使うとref 5と16の結果が一緒だった。middleは5と16の結果が違った
どうもeachだと上限5なのかな
2020/07/30(木) 21:16:14.68ID:3SzyDS+U0
>912
入力コマンドを書き込んでほしいのと
>画像出力の場合にだけ無効化
の無効化とはどのように確認しましたか。
2020/07/31(金) 02:23:31.32ID:RujOhmlm0
X265のオプションの解説にHEVCの規格上、ferは最大8まで、bフレーム有効で7、b-pyramid有効(NVENCにあるかは知らん)で6になる。エンコードするにはLevel無しのエンコードを許可するオプションが必要
とか何とかあるし、その辺でハードウェア的に対応してないとかそんなんなんじゃない?(適当)
じゃあなんでmiddleはエンコードできんねんって話だけど…
923名無しさん@お腹いっぱい。
垢版 |
2020/07/31(金) 20:38:20.66ID:H2q7LLT50
>>921
コマンドは
"D:\fmpeg.exe" -ss 0 -y -i "D:\test.mkv" -vf "hqdn3d=500.00,format=yuv420p" -vframes 1 -qscale:v 1 -an -vsync 0 "D:\test2.png"
"D:\fmpeg.exe" -ss 0 -y -i "D:\test.mkv" -vf "hqdn3d=500.00:500.00:0.00:0.00,format=yuv420p" -vframes 1 -qscale:v 1 -an -vsync 0 "D:\test2.png"


こんな感じです。

無効なのは、単に画像がスムージング前と変化無しだからです
2020/07/31(金) 23:02:00.79ID:oJrRErp50
hqdn3dは3次元デノイズなので最初の1フレームだけだとフィルタが効いてない。
よって2フレーム以降ならフィルタの効果がある。
"D:\fmpeg.exe" -ss 0 -y -i "D:\test.mkv" -vf "hqdn3d=500.00,format=yuv420p" -vframes 2 -qscale:v 1 -an -vsync 0 "D:\test2%d.png"
"D:\fmpeg.exe" -ss 0 -y -i "D:\test.mkv" -vf "hqdn3d=500.00:500.00:0.00:0.00,format=yuv420p" -vframes 2 -qscale:v 1 -an -vsync 0 "D:\test2%d.png"
2020/08/01(土) 02:23:34.70ID:3os4bqIM0
複数音声(英日)、複数字幕(英日)、チャプター情報が入ったmp4のdemuxがうまくいかずに詰んでる

ffmpeg.exe -i video.mp4 -map 0:0 -c copy video1.mp4
ffmpeg.exe -i video.mp4 -map 0:2 -c copy video2en.aac
ffmpeg.exe -i video.mp4 -map 0:3 -c copy video3jp.aac
ffmpeg.exe -i video.mp4 -map 0:5 -c copy video.csv
ffmpeg.exe -i video.mp4 -map 0:6 -c copy videoen.srt
ffmpeg.exe -i video.mp4 -map 0:7 -c copy videojp.srt
2020/08/01(土) 02:34:07.45ID:DvoqeN4P0
[srt @ 044e8ca0] SRT supports only a single subtitles stream.

Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument

Stream map '0:7' matches no streams.


ダメなのは字幕とチャプター
http://imgur.com/SQ6Wo2X.jpg
map番号は合ってると思うのだが..
2020/08/01(土) 03:28:19.87ID:nFuHjL8R0
画像見る限り5までしかないようだが
2020/08/01(土) 07:28:29.29ID:u8/you4D0
5もエラーで出力されない
2020/08/01(土) 08:49:04.46ID:H+Ki5q+80
あってないじゃん
930名無しさん@お腹いっぱい。
垢版 |
2020/08/01(土) 13:14:24.77ID:0bF8Zvaj0
>>924

確かに、一フレームだけ出力しようとするとスムージングはかからないのですが
連番ファイルとして出力するとかかるようです。
hqdn3dは3次元フィルターですが、4つあるパラメータのうち、後ろの二つは時間方向に対するサイズで
前の二つが空間方向に対するサイズなので、前の二つだけは機能してくれても良いと思うのですが・

今やりたいことは、スムージングのパラメータを変えながら、スムージングのかかり具合を調べるために
ピンポイントであるフレームだけを画像として保存したいのですが、
どうすれば良いですか?

最初からスムージングだけ処理していって、
あるフレームだけ保存するようなことはできないでしょうか?
2020/08/01(土) 17:16:47.64ID:UaBdjEjs0
いっぱい出力して、いるやつだけ残して消せばどうだろうか
2020/08/01(土) 20:47:14.65ID:oHwVoXgP0
trimフィルタを使ってピンポイントであるフレームだけフィルタを当てる。
同じフレームをコピーしてhqdn3dを使う。2番目の出力にhqdn3dの効果がある。
"D:\fmpeg.exe" -ss 0 -y -i "D:\test.mkv" -vf "trim=start_frame=300:end_frame=301,loop=1:32767:0,hqdn3d=500.00,format=yuv420p" -vframes 2 -qscale:v 1 -an -vsync 0 "D:\test2%d.png"
前後フレームでhqdn3dを使う。2番目の出力にhqdn3dの効果がある。
"D:\fmpeg.exe" -ss 0 -y -i "D:\test.mkv" -vf "trim=start_frame=300:end_frame=302,hqdn3d=500.00,format=yuv420p" -vframes 2 -qscale:v 1 -an -vsync 0 "D:\test2%d.png"
2020/08/01(土) 22:33:22.89ID:PeoZKIHv0
>>925
mp4のチャプタをxmlファイルなんかにエクスポートするにはどうしたらいいんだ?
メタデータから読み出さないとダメみたいだけど、
チャプタを付加する方法は見つかるのに、抽出する方法が見つからない。
2020/08/01(土) 22:40:54.23ID:oHwVoXgP0
ffprobe -i "video.mp4" -show_chapters -of xml > ch.xml
2020/08/01(土) 23:31:14.63ID:PeoZKIHv0
>>934
レスありがと
でも、この形式だと、そのままでは他で流用できないねぇ
汎用性のあるチャプターファイルの形式ってなんだろう?

Neroチャプター形式(TXT)
Appleチャプター形式(TXT)
BIFS/OD形式(よくわからん)
ffmpegMetadata形式(INI)
matroskachapters形式(XML)

とりあえず、mpvのスクリプト(createchapter.lua)で簡単に作成できるmatroskachapters(xml)がmkvtoolnixに対応してるので、
これを使ってチャプタ付きmkvを作成、ffmpegでmp4に変換、という手順でやってる。
2020/08/02(日) 00:37:04.10ID:2PvHZjFV0
あー。xmlならmp4boxでdemuxした時に確かに生成されるな
937名無しさん@お腹いっぱい。
垢版 |
2020/08/10(月) 01:37:04.74ID:OljsJD7n0
監視カメラのmp4データ(7000kbps、30フレーム)を、HLS形式(m3u8形式)にffmegで変換できましたが、
その際、ultrafast でも変換するのに再生時間と同じ程度の時間がかかります。

変換後のサイズは気にしないので圧縮に時間かかるのだったら圧縮したくないんですが、
時短のためのなにか良いオプションあるでしょうか。

現在は次のコマンドラインで変換しています。

ffmpeg -i 変換前.mp4 -vcodec libx264 -preset ultrafast -start_number 0 -hls_time 2 -hls_list_size 0 -f hls 変換後.m3u8

使用しているCPUは2GHzくらいのもの2コアです。
変換中は100%使用率になります。
2020/08/10(月) 06:44:01.75ID:mT2JHhD20
サイズ縮小する時に、CPUが律速してGPUは遊んでるんだよな
もっとGPUに仕事を回せないものか
2020/08/10(月) 07:11:54.94ID:L4lGNE3u0
どうせ自分でCPUでエンコードする設定にしておいて
何言ってんだ?ってところだろ…
2020/08/10(月) 08:16:05.83ID:Dt5KRjf/0
監視カメラの映像で7000kbpsもいるのかどうか知らんけど単純にビットレートを落とせばいんじゃね
7000kbpsじゃ時間かかって当たり前なんだから使用上問題が出ないレベルまで落とすしか無いでしょ
2020/08/10(月) 09:20:35.59ID:jNB6Q27b0
2GHzの2コアなら時間がかかって当たり前
それとエンコード後の拡張子m3u8は違うと思う
942名無しさん@お腹いっぱい。
垢版 |
2020/08/10(月) 09:59:47.38ID:OljsJD7n0
>>940
レスありがとうございます。
元データの品質を落とすことも考慮したいと思います。

>>941
m3u8とは別に、たくさんのファイルができました。
これらのファイルが細切れになった実際の映像データです。


元データの品質のまま、たんに細切れにするだけなら、
処理に時間がかからなさそうに思うんですが、
そのようなオプションはあるでしょうか。

現在使用しているのは、>>937のとおりです。

もしなければ、元データの品質を予め落とすようにするしかありません。
2020/08/10(月) 10:13:43.43ID:mT2JHhD20
配信するの?
2020/08/10(月) 10:14:18.74ID:6lndBV1F0
>>942
変換前も普通にH.264なら
-vcodec libx264 -preset ultrafast
の代わりに
-c:v copy
で行けると思うけど。
2020/08/10(月) 10:45:57.31ID:moAiggyZ0
サイズ気にしないなら-c copyが一番速い、はず
2020/08/10(月) 12:41:15.76ID:cI/ydpko0
2GHz2コアだったら4Ghz10コアにするだけでめっちゃ早くなって解決って気がするけど
18とか32コアからアップグレードとかだとコスパ悪くなるけど
2020/08/10(月) 13:01:37.36ID:mT2JHhD20
CPUそのままでGPUで加速するから面白いのに
2020/08/10(月) 22:56:09.51ID:OljsJD7n0
>>944 >>945
レスありがとうございました!!

いけました。高速で変換できました!
こうしたかったんです。


>>946 >>947
2コアは心もとないので、Raspberry pi 4 8GB(4コア) を使うことにしました。
上の変換は、copyだけど、スーッといけました。
外部HDDディスクをusb3.0で接続、マウントしています。

>>943
nginxとイントラネットで、自分用に監視カメラの映像をHLS配信します。


皆様、どうもありがとうございました。
がんばります。
2020/08/13(木) 21:47:25.31ID:CFOAI0KV0
テストで組んだリストリーミング環境で、ffmpegがどうしても数10分後に停止してしまいます。(1)
あと、視聴ソフトウェアで確認できる映像ではリアルタイムとの遅延が10秒程度ありいつまでもその差が埋まりません。(2)

[camera]→rtsp→[PC1 / ffmpeg]→rtmp→[PC2 / nginx]→視聴ソフトウェア

PC1のffmpegは次のようにしています。
上流のcameraからrtspでストリームを掴んで、変換後に、下流のnginxにrtmpで流しています。
ffmpeg -i rtsp://user:pass@192.168.1.2:554/h264/stream -c h264 -an -r 15 -s 720x406 -b:v 512k -f flv rtmp://192.168.12.15/live/cam1

PC2のnginxのrtmp設定は次のようにしています。

rtmp {
server {
listen 1935;
access_log /var/log/nginx/rtmp_access.log;

application live {

live on;

}
2020/08/13(木) 21:47:44.30ID:CFOAI0KV0
最下流の視聴ソフトウェアVLCでrtmpでnginxに接続して、cameraの映像と音声を数10分間は受信できました。
ところが、しばらくすると、映像が止まってしまいます。音声のみ聞こえます。再接続しようとしても駄目です。

このとき、ffmpegの最初にある項目のframeカウントが停止してしまっています。
frame=10396 fps= 14 q=31.0 size= 43611kB time=00:11:31.26 bitrate= 516.8kbits/s dup=0 drop=10392 speed=
それ以外の、最後の項目のspeedの数値は動いているのでffmpegがフリーズしているわけではないと思います。


ffmpegを再起動してから、視聴ソフトでnginxに再接続すると再生できますが、また同じように映像は停止します。

(1)(2)について何か設定を工夫する必要があると思うのですが、
どのように設定すればよいのでしょうか。
レス数が950を超えています。1000を超えると書き込みができなくなります。
大学生アイラと影の怪物と戦うリョウが、深夜3時3分の静止した世界で交錯する超常スリラーの概要

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