ffmpegならこちらへ 4
レス数が1000を超えています。これ以上書き込みはできません。
公式サイト
http://ffmpeg.org/
エンコード、ストリーミング配信を高画質高音質で行えるffmpeg。
OSに拘らず対応コーデックが多い。
対応コーデックが多く、多彩なオプションを使用可能。
コマンドラインから使用することができる。
ffmpegならこちらへ 3
https://egg.5ch.net/test/read.cgi/software/1487682297/ 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 Zeranoe版のサイト、ずいぶん様変わりしたんだな。 >>881
あと -b_ref_mode middle だとどうなる? >>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だけなのかはわからないんだよね。
とりあえず上で聞いた質問の答えを返してもらえるとありがたい。 1660superで、ドライバは446.14(リリース日:2020.5.27)
middleだと普通に行ける
ネット漁って使用例見てもみんなmiddleかdisableなんだよね
その可能性は考えたけど、やっぱNVEncCでもちゃんと使えてるかは不明か〜 >>886
とりあえずrigaya氏のNVEnc5.11の記事にコメントしといた。
あと、NVEncC.exeで
--bref-mode each
--bref-mode middle
--bref-mode disabled
をやってみて、結果に違いが出るのかどうかを確認してみてもらえるとありがたいかな。
eachでmiddleやdisableと異なる結果が出るなら、とりあえずeachでなにかやってるってことになるだろうし。 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 ごめん規制に巻き込まれて結果書き込みづらいが
とにかく若干eachの方が容量増えた
I,P,Bのフレーム数は変わらず >>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 を比較してみるという手もある。 ごめんその手のスキルは持ち合わせてない
結果のログ載せようとすると弾かれるのか…
何が引っかかるのやら >>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を返すはずや!」という
チェックになっているので、それを修正する必要がある。
・・・報告ってどうやるんだっけな・・・。 >>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 I find bag.
This is middle and each bag.
1 + 2 is 3.
It is bag, all right?
You fix please. >>895
サンキュー。とりあえずチケット登録しといた。
コード修正は誰かにまかせるぜスタイルなので、フォローできる人はよろしく頼む。
#8809 (hevc_nvenc / b_ref_mode each is not working) ? FFmpeg
https://trac.ffmpeg.org/ticket/8809
早く直してもらえるといいな。まあ俺Turing持ってないんだけど・・・w >>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を除く)が必要。 一つの動画ファイルの中で
明るくなったり暗くなったりする動画ファイルがあるのですが
明るさの平均値が一定になるように
ホワイトバランスを設定するような機能ってffmpegにありますか?
立場の低い人を困らせるのが生きがいだからだろ
言わせんな(そいつが)恥ずかしい >>904
どのコードを使えば良いかお教え願えないでしょうか? 何がやりたいのかもう少し詳しく
とりあえずhisteqが近そうだけども 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でそれぞれプロフィールを分ければエンコできるんだが、できれば一気にやりたい Hqdn3dでスムージングをかけながら、
動画を静止画として出力したいのですが、
なぜか反映されません。
それ以外の設定は反映されるのですが、
Hqdn3dだけは、画像出力の場合にだけ無効化される仕様なのでしょうか? >>913
ffmpeg-20200729-cbb6ba2-win64-staticで反映されてるね。 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まで行ける >>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あたりで出してみてもらえるとありがたいかな・・・ NVEncCでeach使うとref 5と16の結果が一緒だった。middleは5と16の結果が違った
どうもeachだと上限5なのかな >912
入力コマンドを書き込んでほしいのと
>画像出力の場合にだけ無効化
の無効化とはどのように確認しましたか。 X265のオプションの解説にHEVCの規格上、ferは最大8まで、bフレーム有効で7、b-pyramid有効(NVENCにあるかは知らん)で6になる。エンコードするにはLevel無しのエンコードを許可するオプションが必要
とか何とかあるし、その辺でハードウェア的に対応してないとかそんなんなんじゃない?(適当)
じゃあなんでmiddleはエンコードできんねんって話だけど… >>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"
こんな感じです。
無効なのは、単に画像がスムージング前と変化無しだからです 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" 複数音声(英日)、複数字幕(英日)、チャプター情報が入った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 [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番号は合ってると思うのだが.. >>924
確かに、一フレームだけ出力しようとするとスムージングはかからないのですが
連番ファイルとして出力するとかかるようです。
hqdn3dは3次元フィルターですが、4つあるパラメータのうち、後ろの二つは時間方向に対するサイズで
前の二つが空間方向に対するサイズなので、前の二つだけは機能してくれても良いと思うのですが・
今やりたいことは、スムージングのパラメータを変えながら、スムージングのかかり具合を調べるために
ピンポイントであるフレームだけを画像として保存したいのですが、
どうすれば良いですか?
最初からスムージングだけ処理していって、
あるフレームだけ保存するようなことはできないでしょうか? いっぱい出力して、いるやつだけ残して消せばどうだろうか 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" >>925
mp4のチャプタをxmlファイルなんかにエクスポートするにはどうしたらいいんだ?
メタデータから読み出さないとダメみたいだけど、
チャプタを付加する方法は見つかるのに、抽出する方法が見つからない。 ffprobe -i "video.mp4" -show_chapters -of xml > ch.xml >>934
レスありがと
でも、この形式だと、そのままでは他で流用できないねぇ
汎用性のあるチャプターファイルの形式ってなんだろう?
Neroチャプター形式(TXT)
Appleチャプター形式(TXT)
BIFS/OD形式(よくわからん)
ffmpegMetadata形式(INI)
matroskachapters形式(XML)
とりあえず、mpvのスクリプト(createchapter.lua)で簡単に作成できるmatroskachapters(xml)がmkvtoolnixに対応してるので、
これを使ってチャプタ付きmkvを作成、ffmpegでmp4に変換、という手順でやってる。 あー。xmlならmp4boxでdemuxした時に確かに生成されるな 監視カメラの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%使用率になります。 サイズ縮小する時に、CPUが律速してGPUは遊んでるんだよな
もっとGPUに仕事を回せないものか どうせ自分でCPUでエンコードする設定にしておいて
何言ってんだ?ってところだろ… 監視カメラの映像で7000kbpsもいるのかどうか知らんけど単純にビットレートを落とせばいんじゃね
7000kbpsじゃ時間かかって当たり前なんだから使用上問題が出ないレベルまで落とすしか無いでしょ 2GHzの2コアなら時間がかかって当たり前
それとエンコード後の拡張子m3u8は違うと思う >>940
レスありがとうございます。
元データの品質を落とすことも考慮したいと思います。
>>941
m3u8とは別に、たくさんのファイルができました。
これらのファイルが細切れになった実際の映像データです。
元データの品質のまま、たんに細切れにするだけなら、
処理に時間がかからなさそうに思うんですが、
そのようなオプションはあるでしょうか。
現在使用しているのは、>>937のとおりです。
もしなければ、元データの品質を予め落とすようにするしかありません。 >>942
変換前も普通にH.264なら
-vcodec libx264 -preset ultrafast
の代わりに
-c:v copy
で行けると思うけど。 サイズ気にしないなら-c copyが一番速い、はず 2GHz2コアだったら4Ghz10コアにするだけでめっちゃ早くなって解決って気がするけど
18とか32コアからアップグレードとかだとコスパ悪くなるけど >>944 >>945
レスありがとうございました!!
いけました。高速で変換できました!
こうしたかったんです。
>>946 >>947
2コアは心もとないので、Raspberry pi 4 8GB(4コア) を使うことにしました。
上の変換は、copyだけど、スーッといけました。
外部HDDディスクをusb3.0で接続、マウントしています。
>>943
nginxとイントラネットで、自分用に監視カメラの映像をHLS配信します。
皆様、どうもありがとうございました。
がんばります。 テストで組んだリストリーミング環境で、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;
} 最下流の視聴ソフトウェア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)について何か設定を工夫する必要があると思うのですが、
どのように設定すればよいのでしょうか。 >>949
すみません、ffmpegのコマンドはこっちでした。
ffmpeg -i rtsp://user:pass@192.168.1.2:554/h264/stream -vcodec copy -c:a aac -f flv rtmp://192.168.12.15/live/cam1 >>951
訂正
映像だけでなく音声も停止しました。 >>949
自己解決しました。
(1)
-rtsp_transport tcp -stimeout 10000000 をつけるとffmpegが止まらなくなりました。
安定して動作しています。
tcpが有効に作用したと思います。
(2)
ライブ映像の遅れは、早送りすると追いつくことができました。 解決して良かったね
特殊な理由なければFlashのRTMPじゃなくてHLSストリーミングお勧めしたい >>955
>>937はわたしです。その節はお世話になりありがとうございます。
>>954
レスありがとうございます。
rtmpではなく、今HLSライブストリーミングテストしています、
video.jsの最新のものでは、HLSライブのものでも巻き戻しもできるので便利です。 >>956
このvideojsのライブ巻き戻し再生に関して、
何か設定が悪いのか、巻き戻し、早送りの反応がとても悪い。
30秒以上待たされることもあります。
なにが悪いんだろう。tsファイルを検索するnginx側だろうか?
カウント0から再生とライブ再生に戻すのは早いんですけどね。
もうしばらくググりながら悩む必要がありそう。 >>956
もうHLSの試行したの!?驚き
動きも適応も早くて尊敬します
ライブラリvideo.jsには詳しくなくて力になれない……惜しい 地デジtsから副音声を抽出したい
しかし
Program 1040
Stream #0:2[0x112]: Audio: aac
Program 1041
Stream #0:2[0x112]: Audio: aac
と、まるで同じ
どうやって副音声側1041の0:2を指定する記述をすればよろしいのでしょうか。。。
-map 0:2
では当然のごとく1040側の主音声が抽出できるだけ。。。 検索すると-dual_mono_modeで指定するみたいな記事があるけどドキュメントにそんなオプションないよね… >>961
どうもです
mapをそれに置き換えて記述しても主音声が抽出されるだけでした 本当にここで聞きたいならffprobeの結果とか実際に使ったコマンドとか書いたほうがいいよ FFmpegを使って、輝度値の倍率って設定できますか?
例えば、赤色の輝度値が1.2倍、青色が0.8倍、緑も0.8倍みたいな設定をしたいのですが、
brightnessで輝度値は設定できるのですが、
これは倍率ではなく、オフセットのため、使うことができません。
C#とかだと、輝度値の倍率とオフセットを別で設定できるのですが
FFmpegでもできないでしょうか? Program 3104
Metadata:
service_name : ?|?A?
service_provider:
Stream #0:1[0x111]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, bt709, top first), 1440x1080 [SAR4:3 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
Side data:
cpb: bitrate max/min/avg: 20000000/0/0 buffer size: 9781248 vbv_delay: N/A
Stream #0:2[0x112]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 186 kb/s
Stream #0:3[0x113]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 190 kb/s
Stream #0:4[0x116]: Subtitle: arib_caption (Profile A) ([6][0][0][0] / 0x0006)
Stream #0:5[0x117]: Data: bin_data ([6][0][0][0] / 0x0006)
Program 3105
Metadata:
service_name : ?|?A?
service_provider:
Program 3106
Metadata:
service_name : ?|?A?
service_provider:
Program 3488
Metadata:
service_name : ?|?A?
service_provider:
Program 3108
Metadata:
service_name : ?|?A?NW;~
service_provider:
No Program
Stream #0:0[0x12]: Data: epg
Unsupported codec with id 98306 for input stream 0
Unsupported codec with id 96272 for input stream 4
Unsupported codec with id 100359 for input stream 5 >>964
lut〜ってフィルタなんかでいけるはず 3、4年前にコンパイルしたffmpeg(3.4)使ってたけど、そろそろAV1に対応させようかと思って
久しぶりにコンパイルに挑戦したらつまずいた。ちなMac(10.14)。
3.4の./configureオプションはこんな感じ↓
./configure --pkg-config-flags=--static --enable-gpl --enable-nonfree --enable-libx264 --enable-libx265 --enable-libvpx --enable-libfdk-aac --enable-libvorbis --enable-libopus --enable-libmp3lame --disable-ffplay --disable-ffprobe --disable-ffserver --enable-small
『pkg-config』オプション
./configure --prefix=/usr --with-pc-path=/usr/local/lib/pkgconfig --with-internal-glib
『libx264』オプション
./configure --prefix=/usr/local --enable-static
『libx265』オプション
cd x265path/build/linux
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -DENABLE_SHARED=NO ../../source/
『libvpx』オプション
./configure --prefix=/usr/local --disable-shared --enable-static --disable-unit-tests
『libvorbis』オプション
./configure --prefix=/usr/local --with-ogg-libraries=/usr/local/lib --with-ogg-includes=/usr/local/include --disable-shared
『上記以外のコーデックとyasm-1.3.0、nasm-2.15.03』オプション
./configure --prefix=/usr/local --disable-shared >>967
まずlibaomとlibrav1eがコンパイルできん。仕方がわからん。
oggをコンパイルして次にvorbisコンパイルしたらエラーが出よる。
libaomとlibrav1eは諦めて本体コンパイルしたらコーデック無いって出よる。
それから--disable-ffserverってオプション無いって。これは外せばいいんだろうけど。 >>968
libx265は
cd x265path/build/linux
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr/local/share/cmake-3.18 -DENABLE_SHARED=off -DENABLE_NASM=on ../aom
ってすればできた。あとはわからん。エロい人教えて。 >>969
下の間違い。
cd x265path/build/linux
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr/local/share/cmake-3.18 -DENABLE_SHARED=NO ../../source/
cmake-3.18もコンパイルしてインストールした。 なんでコンパイル方法をテンプレにまとめてないわけ?
試行錯誤しなくても説明どおりにすればサルでもできるような。
まず本家からソースコードしか配布されてないってとこがffmpegの敷居を高くしてるんだよ。
5ch・2chにまとめられてればありがたい。ググって出てくるのはわかりにくいんだよ。
初心者はパスの入力なんかでもつまずく。AVファンがパソコンに詳しいとは限らないから。
WinとMac、それぞれのビルド方法をだれかテンプレ化してくれ。サルでもできるようなやつな。 ffmpegのフルコンパイルは熟練者でも厳しいからなあ >>971
その公式のコンパイルガイド見ただけでできるような初心者は
一人もいない。何日も試行錯誤しないといけない。
よそがビルドしたバイナリ版はいらんのがいっぱい入ってるし
必要なlibfdk-aacが入ってない。第一怪しい←ここ重要
よそが配布したhand brakeにマルウェア仕込まれてたことあっただろ。
やはり自分でソースコードからコンパイルしたい。 >>966
LUTフィルターを調べてみましたが
1Dとか3Dとかあっていまいちよく分かりませんでした
コードを見せていただけないでしょうか? みんなもビルドして使ってね
という趣旨じゃないからな
ソースコード開示義務があるから自力でビルドすることも可能というだけで
レシピすら無い夕食材料セットみたいなもん ネタにマジレスするけどコンパイルするならDockerとか使ったほうが楽だぞ
Linux以外のバイナリについては知らん ネタではない。見ればだいたいわかるだろ。
MacにはHomebrewあるけど使いたくない。
コンパイルすりゃしまいじゃん。
>ソースコード開示義務があるから
>>976
そんな義務あるんか。知らんかったわ。
ソースコード開示されてなかったらvlcとかChromeとかに組み込めないけど
そんな義務あったんか。
>>973
だからやり方さえ詳しく書いてあればあとはコピペするだけだからサルでもできるやん。 ffmpegのバージョン、ライブラリのバージョンでやり方が変わるからだめなんだよ
すぐ使えなくなる >>979
そうみたいね。わいも前は試行錯誤の末にできた方法でやったら
今回はダメだった。
だから5ch・2chのこのスレだったらタイムリーに更新できるじゃん。
このスレに来れば常に確実な方法がわかる、って感じにしようず。 Winだけど、ffmpegのビルド方法まとめてほしいよね
ビルドスクリプト使ったらエラーでビルドできなかった(>>983とは別物) >>983
スクリプトは便利なんだけどね
fdk-aacやopusといったライブラリを追加で入れようとすると途端に融通が利かなくなって・・・ というかビルド作業って中途半端に抽象化・カプセル化されてて、皆何となく使えちゃってる気がする
その弊害として実際に踏まれてる手順が分からないし、他の環境・対象向けに応用するやり方も分からなくなってる パッケージ管理ツールに頼らず自前でビルドするこの際、gitとかGNU makeみたいな役割が単純明快な基本的ツールでのビルドの汎用手法纏めなきゃなのか…… >>988
多分何も言わなかったらmakeと言えばGNU makeだと思う
あんま詳しくないから拾ってきたもの
・GNU make (UNIX系、Windows)
・BSD make (UNIX系)
・Schily make
・nmake / Microsoft Program Maintenance Utility (Windows)
・Borland make (Windows)
・Solaris make (Solaris) ./configure
make
make install ArchlinuxのAURにあるffmpeg-fullのPKGBUILDとか見たらいいよ
AV1はパッチ当ててる >>981
一応ffmpeg-4.3.1でコンパイルできた。libaomとlibrav1eは諦めた。
libaomは実時間の100倍かかるなんて記述もあるし、まだいいかなと。
ちなみにワイの環境ではvp9は実時間の15倍くらい。最初は実時間の8倍くらいの
速度でエンコードするんだけど、ものの数分でサーマルスロットリンクが発生して
速度が落ちる。iMacの性能は本当に低い。今3年前のiMac使ってるけど、9年前の
iMacと比べて速度はほぼいっしょ。変わったのは古いのは本体の一部が火傷する
くらいに熱くなってたけど今のはほんのり温かくなる程度なとこぐらい。
古いのでエンコしまくってたらすぐつぶれた。新しいのはそういうのはないだろう。
たぶんcpuが速度落とすより前にMacがリミッターかけてるんだと思う。
つぶれないように。でも最近はワイほとんどエンコしてない。それはさておき。
libaomとlibrav1e以外は、前と同じだけ全部入れてコンパイルできた。
これで前と同じ環境、プラスAV1でエンコはできないけれどAV1の「認識」はできる
ffmpegバイナリを手に入れることができた。おおむね満足してる。
Mac使ってる人でサルでもわかるように今回のビルド方法まとめてほしい人いる?
ただしx265とliboggとlibvorbisは最新のではなく以前ビルドしたときと同じ
古いバージョンを使ってる。それだとうまくいった。
またx264も古いバージョンのを使ってる。以前ビルドした時、当時の最新
バージョンは設定どおりのビットレートでエンコできないバグがあったから
バグのない古いバージョンでビルドしたんだけど、今回もそれを使ってビルドした。
最新のはそのバグは解消されてると思うけど、検証すんのめんどくさい、
てかできない。まあこれで問題なく使えるんならいいでしょってことで。
以上を了解できるならまとめてもいいよ。 方法そのまま教えるのは魚をあげるのと同じだからなあ
そもそもmakeとは、から始まって、
素直にビルドできない原因と解決方法を個別に説明してくれる方が有り難い >>978
やり方書いてあっても難しい
ライブラリ群の依存関係とか、ライブラリのバージョンが変わったらビルドエラー出たりとかで
それを一つ一つ潰していってやっとビルドできる。 それで安心してたら次のリビジョンアップで
またビルドできなくなったりと苦難の連続だよ 全部最新だと通らなくて、わざと古いままにする必要があるとかそういう系? 前にビルドしたけどx265とx264がマルチコアに対応させれられなくて諦めたんだけど
そのへんうまくいってる? ./configure
make all
make install
make clean 全部最新で通らなかったなんてこと起きたことないなあ このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 485日 11時間 57分 46秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。