上記をmkvimdic.phpとして保存。
php mkvimdic.php > php.dict
php.dictが作成される。
autocmd FileType php :set dictionary=~/dict/php.dict
.vimrcに追記する。
上記をmkvimdic.phpとして保存。
php mkvimdic.php > php.dict
php.dictが作成される。
autocmd FileType php :set dictionary=~/dict/php.dict
.vimrcに追記する。
レンタルサーバーは自分でコンパイルする必要がある。
./configureをするとmakefileが作られる。ここでオプションを指定することができる。
例えば、–prefix=???とすると、そこにインストールされる。
makeでコンパイルし、make installでインストールする感じ。
ダウンロードするのは、JavaSE。
JavaSEとは、Java Platform Standard Edition(バージョン5.0までは J2SEと呼ばれていた)
SEにサーバ向けライブラリをプラスしたのがEEでエンタープライズという感じ。
JDKを保存。JREはランタイムでJDKに内包されている。
・設定>ビルド、実行、デプロイ>Gradle>オフライン作業
・gradle.properties
1536から2048に変更。
# org.gradle.parallel=true
コメントアウトを削除し有効化。
・ショートカット変更
タブの移動をVisualStudioと合わせる。
http://mergedoc.osdn.jp/
から
Pleiadesのプラグインをダウンロードして、
jp.sourceforge.mergedoc.pleiades
を
C:\Users\s.okamura\.AndroidStudio2.3
に配置。
Help > Edit Custom VM Options
で新規作成したファイルに
-Xverify:none
-javaagent:C:\Users\s.okamura\.AndroidStudio2.3\jp.sourceforge.mergedoc.pleiades\pleiades.jar
と記入。
Pleiadesにインストーラが付属し基本はインストールするだけ。
Tools > Android > SDK Managerで実機のAndroidと同じバージョンのSDKをインストール。
同じ画面の下の方にある、Launch Standalone SDK Managerをクリックして、
別タブにあるGoogle USB Driverにチェックをしてインストール。
実機の端末情報の表示から、ビルド番号を連打して開発者向けオプションを表示させ、
USBデバッグをON。
USBでPCと実機を接続。今回はXperiaZ2なので、
http://developer.sonymobile.com/downloads/drivers/xperia-z2-tablet-driver/
からドライバを入手しインストールする。
新しいプロジェクトを作成するとき、Phone and Tablet で実機と同じバージョンを選ぶ。
パスは以下で、環境変数にパスを通しておく、
C:\Users\s.okamura\AppData\Local\Android\sdk\platform-tools
sysdm.cplで起動し、ユーザー環境変数のPathに追加。
adb devices
adb kill-server
adb start-server
開発時にのみ使用される情報
xmlns:tools=”http://schemas.android.com/tools”名前空間
tools:context=”.MainActivity”
レイアウトとアクティビティの関連付けによって、レイアウトエディタにテーマが反映される。
・FrameLayout > CoordinatorLayout
・LinearLayout > FlexboxLayout
一直線にウィジェットを並べるレイアウト
・RelativeLayout > ConstraintLayout
相対的な位置指定をするレイアウト
・TableLayout
表形式でレイアウト
・GridLayout
・Absolute layout(非推奨)
・wrap_content
中身に合わせてサイズを調整。
・fill_parent > match_parent
親のサイズと同じ(最大サイズ)。
DP・SP・PX
・wrap_content
従来同様
・match_parent > Match Constraints
制約のルールを満たす範囲内で指定できる最大限の領域。
実際しているする値はないので、
layout_width=”0dp”
として指定する。
・Fixed
固定値でサイズを指定。
AndroidManifest.xml
より
android:name=”.Test1Activity”
のように指定する。
・AndroidManifest.xmlを編集する。
・build.gradleを編集する・物理構造を変更する。
MyApplication > app > src > main > java > com > example > mail > myapplication
・ファイルの先頭宣言部を書き換え。
thisとgetApplicationContextで取得できる。
グローバル情報へアクセスするためのインタフェースであり、呼び出してContextが持つテーマを利用したりする。
・起動する場合。
onCreate
onStart
onResume
アクティビティの表示。
・別のアクティビティを呼び出す場合。
onPause
別の画面が表示されている状態。
onStop
もとのアクティビティは停止。
・onPauseの時にもとのアクティビティに戻る場合。
onResume
もとのアクティビティ表示。
・別のアクティビティが表示後、
もとのアクティビティに戻る場合。
onRestart
onStart
onResume
もとのアクティビティ表示。
・画面の破棄
onDestroy
アクティビティは停止中に自動で削除される場合もある。
・BroadcastReceiver
BroadcastされたIntentに応答する仕組み。Intentを受け取った時にメソッドを実行する。
BroadcastがStickyIntentの場合、BradcastReceiverを登録する必要がなく、
NullをregisterReceiverへ渡して呼ぶだけで現在のバッテリー状態のintentが帰ってくる。
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = context.registerReceiver(null, ifilter);
・StickyIntent
StickyBroadcast発信できるIntentをStickyIntentという。
BatteryManagerなど
・Intent
機能と機能を橋渡しする仕組みで、主にActivityを起動するのに利用。
明示的IntentはActivityを指定し、暗黙的IntentはActivityを指定しない。
暗黙の場合、推測できる情報としてIntentFilterを入れておく。
暗黙的Intentの受け取り手となりうるクラスは、Activity・Service・BroadcastReceiverがある。
・Broadcast
通常のBroadcastとStickyBroadcastがある。
通常のBroadcastは発信したときにBroadcastReceiverがないとIntentが破棄される。
StickyBroadcastは最後のBroadcastがメモリに残っている。
(Intentの配信が終了した後に登録されたBroadcastReceiverにも配信されるIntent)
システムでは非同期にBroadcastIntentを発生させている。
Activityに近いライフサイクルを持ったビューのこと。
ActivityはFragmentActivityを継承しダイアログはDialogFragmentを継承する。
アカウントエグゼクティブ:クライアント対応(営業)
プロモーター:メディア対応・取材を取ってくる
プランナー/クリエイティブ:中間で、アイデア考える
広報が難しいと言われがち。BotBは営業支援の側面が強い。
・自社以外のプレスリリース:基本不要
・署名記事か、◯◯編集部となっている記事のみ
・個人メディア、コンサル系メディア、タイアップ記事:不要
研究機関からのリリースは要検討。
・考えを語るだけのインタビュー記事:不要
影響力がある人の場合、要検討。
・技術レクチャー記事:不要
・商品/企業にフォーカスしている場合、
潜在的な顧客、ターゲット市場のプレーヤー、導入事例ならOK。
・集計、アンケートの場合、要検討
・まず、タイトルの主語を見る
・想定、想像(~ではないか~だろう)は基本、不要
主語の部分が斬新(切り口が斬新)な場合、※結論に新しい視点・インサイトがある場合、OK
カテゴライズの優先度:業界、内容など複数にまたがる場合、主語を意識する。
発行部数だけで選択するのは簡単すぎるので、目的があり、この媒体を選んだという説明ができること。
クライアント+商品とマッチしそうなメディアを大まかに集める。
(メディアがターゲットにしている業界や読者をもとに簡単でOK)
各メディアの記事を読んで、方向性が似ているものをまとめ、さらに影響力などで並べ替える。
テレビ:インパクト
新聞:社会性
雑誌:お役立ち
ウェブ:速報性
メディアによってでやすさが違う。
地方メディア>業界紙>雑誌>Web>全国紙>テレビ
出やすいメディアで実績を積むのも大事。取り上げる側としては信用の問題(反社など)もあり、実績があると取り上げやすいし、他のメディアでネタ探ししているのもある。
特定のエリアの場合、全国紙でもそのエリアを担当している支局にアプローチする方法がある。特定の業界の場合は業界紙。
今までなかった初めてのこと。(初、新、最)
(特定の地域、業界で初めてではないかと考える)
社会の課題を解決したこと。
読者を喜ばせること。
流行、行事に関わること。(なぜ今?に答えられないとスルーされる)
読者が知りたいこと。
正義/悪を暴く。弱者を助けること。
国民全員に関係すること。
意外なこと。以外な事実/ファクトの存在。
・メディアは情報が欲しい。企業は、新しい情報をメディアからの取材を獲得する目的で送信する。
・宣伝ではない。
記者は宣伝記事は書きたくないが、他で多く話題になっていることは書きたいという心理がある。
・消費者向けではない。
社会正義/意義が存在するかどうか。
・専門用語は使わない。
広告ではないので美辞麗句は不要。
・自分たちである必然性が必要。
このタイトルなら、ここに取材するしかない。メディアは現象を追っているので、現象とその企業でしか言えないことが重なる部分が必要。
・ニュース価値はあるか?
・PRの場合は企画だけで記事を書くわけではないので、構成までは必要はない。素材を考える上で少し意識しておくだけでOK。
・Webの場合、検索へのアンサーというのが前提で、何を答えたいかを考える。
・Webの場合、キーワード選定。
・1トピック1パラグラフで言うところのトピックにあたる素材(事例、説明、解説、理由、根拠、意見など)の部分をいかに提供するかが重要。ライターさんでは作り出せないトピックがいくつかあれば記事にすることができる。
-誰の?(Target)
-どんな悩み・課題?
-何を答える?(What to say) ※シンプルに1つか2つ、商品の特徴などのこと。
-なぜ私たちが? ※ここストーリーを加える。
-どうやって?(How to say) ※ここがクリエイティブ
・読後感に何を与えたいのか。どのような行動を促すのか。別の記事を読む、ブックマークするなど具体的に。
・編集領域には手を出さない。媒体が意見を言う余地を残す。
・xの中でyしました、と一言で言えること。
xは社会問題などを入れる。
yはPRしたいポイント。事実を入れる。
・ストーリ性をもたせる
◯な◯が、
◯のために◯に行き、
◯になる物語。
業界的には同義語だが、
導入事例、業界動向、報道関係者以外も含める、告知が目的
と考えることもできる。
関係があるならSNSなどでフォローしたり、記事を読んで感想を伝える。
・考え
美辞麗句ではなくリアルが見たいと思うのが記者。
これを世の中に知らせる意味はあるのか?
救われる人がいる?
自分が担当している領域の情報はキャッチアップしておきたい。
正義感があるので、コッソリ伝えるとかそういうものは嫌われる。
消費者は自分のこととして情報を見るが、記者は社会への影響を考えている。
埋もれた情報を発掘したいという気持ちがある。
メディア/記事は影響力が大きいので記者は無意識で怪しい情報や誇大広告を嫌い、事実を好む。
企業が社会と良好な関係を作ることが目的
広告はBuyMe、PRはLoveMe。
広告は有料、PRは取材をしてもらう。広告は広告枠、PRは記事になる。
PRは記事なのでメディアに編集権があり、内容の指定も記事のチェックもできない。記事チェック依頼があったら事実関係の確認だけの意味。
メディア側:広告は広告部、PRは編集部。
企業の外注先:広告は広告代理店、PRはPR会社。
マーケティングは消費者、広報PRはメディアが対象。
マーケティングはあなた、広報PRは社会(社会へ役立つ)
まずメディア特性をしっておくこと。
競合のプレスリリースを読む。
バッチファイルを作って
ttpmacro.exe ttpmacro.ttl
と記入する。
ttpmacro.ttl
に以下のように記入する。
作成したバッチをクリックするとダイアログが表示されるので、該当の数字を入力すると自動で接続される。
SeleniumWrapper Type Libraryの参照設定を追加する。
-N
ナンバリング
-F
画面に収まれば自動終了
-R
カラー表示
-X
終了時画面クリアしない
-S
折り返し無し
-s
空白まとめる
-p xxx
文字反転
-O xxx.txt
パイプのみ、閲覧後ファイル保存
q
終了
Shift+f (Ctrl+cで通常モード)
自動更新
g, G
先頭、末尾へ移動
j, k
一行の上下
f, b / w, z
一ページの上下
& xxx
xxxのみ表示
&で絞りんこんでShift+fで更新も可能。
/
検索(nで移動)
-S
折り返し無し。(移動は←, →)
tr -f \r
Win改行を除く
nkf -wd ファイル名
改行をLinux文字コードをUTF-8
nkf -wd –overwrite ファイル名
そのまま上書き
nkf –guess ファイル名
文字コード判定
hexdump -c xxx
改行コード調べる
sed -e “s/,/\n/g”
カンマを改行へ
apt-get update (apt update)
キャッシュの更新
apt-get upgrade (apt upgrade)
ソフトバージョンアップ
(apt upgradeでは新しいパッケージもインストールされる)
apt-get dist-upgrade (apt full-upgrade)
ディストリビューションのアップ
apt-get remove xxx (apt remove)
ソフトの削除
apt-get purge xxx
(apt-get –purge remove xxx)
設定ファイル残らないソフトの削除。
apt-get –purge autoremove
使っていないパッケージ削除(設定ファイルも)
apt-get autoclean
使っていないアーカイブ削除
(キャッシュされているけどインストールしていない.deb)
do-release-upgrade
OSのアップデート
dpkg -l (apt list –installed)
パッケージの一覧
dpkg -L パッケージ
インストールしたファイル一覧
起動関係
shutdown -h now
終了
shutdown -r now
再起動
ps aux | grep httpd
プロセスのユーザを確認する。
ps -aux | grep apache
これでプロセス名を確認して
kill xxx
でプロセス終了。
pgrep -l apache
でプロセス番号を探すこともできる。
pkill プロセス名
で複数のプロセスを終了することもできる。
ドットはカレントディレクトリから全てのサブディレクトリ
find . -name “*.php”
開始ディレクトリを指定することもできる
find /var
lsと同じように表示
find . -name “*.php” -ls
一括変更
find . -type f | xargs chmod 604
find . -type d | xargs chmod 705
scp ./example.tar user@210.123.45.67:/home/user/
example.tarを210.123.45.67に転送。
scp -r ./test username@example.net:/home/username
testディレクトリをexample.netに転送。
秘密鍵を使う場合、
scp -i 秘密鍵 コピーしたいファイルパス 受取先パス
/etc/init.d/networking restart
IPアドレスが消えた場合。
cd –
戻る
ctrl + u
入力中を消す
xxx &
ジョブをバックグラウンドへ
jobs
ジョブ一覧
kill %1
ジョブを消す
source .bashrc
bashの設定変更後
df -h
デバイスのサイズ
du -h /var/
特定フォルダ以下のサイズ(階層指定の場合 du -h –max-depth=1 / )
起動
screen
一覧
screen -ls
デタッチ
Ctrl+a, d
アタッチ
screen -r id
終了
Ctrl+a, \
シェル作成
Ctrl+a, c
シェル一覧
Ctrl+a, w
Ctrl+a, “(ダブルクオーテーション)
シェル移動
Ctrl+a, 1~
シェルを閉じる(screen自体は生きてる)
Ctrl+a, k
ウィンドウ分割
Ctrl+a, |(バーティカルバー)
Ctrl+a, S
ウィンドウ移動
Ctrl+a, tab
ウィンドウ分割終了
Ctrl+a, Q(その他全ての領域)
Ctrl+a, X(現在の領域)
ここでは、動作を軽くする、不具合対策、共有設定など混ざっている。
shutdown /r /t 0
r:再起動
s:シャットダウン
shutdown /r /fw /t 0
あるいは、
スタートメニュー>設定>更新とセキュリティ>回復>今すぐ再起動>トラブルシューティング>詳細オプション>UEFIファームウェアの設定>再起動
可能性は低いが、一度キーボードが故障していて起動しないこともあった。
gpedit.msc
HOMEの場合、手動で有効化できる。
今回Win11にしてバージョンが変わっていたので、%SystemRoot%\servicing\Packages\
を検索してみるとバージョンが変わっていた。
バッチでインストールする場合
Windowsのアップデート後にgpedit.mscでエラーがでたら、再度バッチファイルを実行する。
eventvwr
エラーがでていないか目を通す。
sfc /scannow
dism /online /cleanup-image /restorehealth
dfrgui
で起動、あるいは、
ドライブ右クリック>ツール>最適化
コマンド(SSD)の場合、
defrag c: /L
(Win10ならSSDもOK)
過去、HDDのPCで小さなファイルを大量に更新する環境で不調になったときはデフラグで解決したことがある。
(Win7)chkdsk /f
(Win10)chkdsk /scan
あるいは、
ドライブ右クリック>ツール>エラーチェック
もし、オフラインを要求されたら
chkdsk /spotfix
それでもだめなら
chkdsk /f
を実行する。
cleanmgr
あるいは、
ドライブ右クリック>全般>ディスクのクリーンアップ
ccleaner等のツールを使ってもOK。
過去、レジスリトリのクリーンで不調になったことがある。逆にレジストリのクリーンで効果を実感したことはない。
無効化しておくことが多い。
powercfg.cpl>電源ボタンの動作を選択する>現在利用可能ではない設定を変更します
高速スタートアップを有効にする
のチェックを外す。
(ハイブリットスリープが無効の場合は表示されない)
・ハイブリットスリープの無効化
powercfg /h off
・電源の状態
powercfg /a
・休止状態とスリープ
休止状態:HDD(hiberfil.sys)に保存する。
スリープ:メモリに保存する。
ハイブリットスリープ:メモリとHDDの両方に保存する。
HDDの場合、暗号化で遅くなる場合あり。
control>Bitlockerドライブ暗号化>Bitlockerを無効にする
Win10設定>更新とセキュリティ>デバイスの暗号化>オフにする
powercfg.cpl
(win7)wuapp>更新履歴の表示
(win10)設定>更新とセキュリティ>更新の履歴を表示する
taskmgr>スタートアップ
shell:startup
shell:common startup
またはccleaner等
(Win10)設定>プライバシ>バックグランドアプリ
optionalfeatures
dcomcnfg>コンポーネントサービス>コンピューター>マイコンピューター>右クリックプロパティ>既定のプロパティ
このコンピュータ上で分散COMを有効にする
のチェックを外す。
msconfigや、services.mscから手動でも停止可能。
無闇に止めると動かない機能もあるので注意
設定をリセットする。
履歴を削除する。
終了時に履歴を消す。
sysdm.cpl>詳細設定>パフォーマンスオプション
視覚効果はパフォーマンスを優先し最低限のみ残す
詳細設定>仮想メモリ
をシステム管理サイズへ。
メモリが十分な場合、ページングファイルなし
(Win7)control>Windows Defender
自動スキャンとリアルタイムを止める。
control>インデックスオプション
(Win10)control>セキュリティとメンテナンス>メンテナンス
メンテナンスの開始を実行する。
ちなみに、自動メンテナンスは、
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\Maintenance
MaintenanceDisabled=1
で無効化となり、その場合は手動でも実行できない。
ここの作業と、
・システム パフォーマンス測定(WinSAT)
・保守タスク(トラブルシューティング)
は関係ない。
control>トラブルシューティング>システムとセキュリティ
保守タスクを実行する
Win10設定>ネットワークとインターネット>状態>接続プロパティの変更
必要なら、プライベートに。
ncpa.cpl>右クリックプロパティ>構成>電源の管理
電力の節約のため … のチェック外す。
昔はNetBIOS over TCP/IPのみだったが、現在は
名前解決:LLMNR (Link Local Multicast Name Resolution)
一覧:WSD (Web Service on Devices)
一覧:SSDP (Simple Service Discovery Protocol) ルーター等
一覧:UPnP
など複数存在する。
ちなみに、LLTDプロトコルは過去ネットワークマップを作成しており、探索に利用されていない模様。同様にLLDPプロトコルも探索に利用されていない模様。
・ネットワーク探索
control>ネットワークと共有センター>共有の詳細設定>プライベート>ネットワーク探索
ネットワーク探索
を有効にする。必要ならその他の項目も変更。
・SMB1.0
NetBIOSで認識する古いNAS等は
optionalfeatures
から、SMB1.0が有効かどうか確認。
・ファイアーウォール
firewall.cpl>詳細設定
Netlogon サービスをチェック、ファイルの共有などチェック。
・サービス
services.msc
から、
Function Discovery Resource Publication (WSD)
Function Discovery Provider Host (WSD)
SSDP Discovery (SSDP)
UPnP Device Host (UPnP) / Universal Plug and Play
Network Connections
DNS Client
あたりを様子を見ながら有効化
nbtstat -A <IPアドレス>
にて表示されないPC対象に実行するとすぐに表示される場合もある。
このとき..__MSBROWSE__.と表示されるPCはマスターブラウザといってネットワークに表示される情報を管理しているPCであり、net viewで一覧を取得するときにも利用されている。マスターブラウザはサービスのComputer Browserで有効化できる。
***
reg delete “HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify” /f /v IconStreams
reg delete “HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify” /f /v PastIconsStream
reg delete “HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify” /f /v PromotedIconCache
explorer.exe を再起動。
%SystemRoot%\SoftwareDistribution
フォルダをセキュリティソフトの監視対象から外す
アップデートで上手くいかない場合は、wuauserv等を止めてSoftwareDistributionをクリアする。
(Win7)del /ah %userprofile%\AppData\Local\IconCache.db
一度消して再起動する。または、
ie4uinit.exe -show
(Win10)del %userprofile%\AppData\Local\Microsoft\Windows\Explorer\iconcache_*.db
del %userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_*.db
del %windir%\System32\FNTCACHE.DAT
del %windir%\ServiceProfiles\LocalService\AppData\Local\FontCache\*FontCache*.dat
cmdから実行後に再起動すると1度だけ実行(削除)される。
cmd /c reg add HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\CSC\Parameters /v FormatDatabase /t REG_DWORD /d 1 /f
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Lanmanworkstation\Parameters
ここに下記のキーが存在しなければcmdから実行。
cmd /c reg add HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Lanmanworkstation\Parameters /v DirectoryCacheLifetime /t REG_DWORD /d 0 /f
cmd /c reg add HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Lanmanworkstation\Parameters /v FileInfoCacheLifetime /t REG_DWORD /d 0 /f
cmd /c reg add HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Lanmanworkstation\Parameters /v FileNotFoundCacheLifetime /t REG_DWORD /d 0 /f
***
NASにあるファイルを数人で交互に編集したりする環境での不具合にはこれがかなり有効だった。
・CSCキャッシュ
https://docs.microsoft.com/en-us/troubleshoot/windows-client/networking/access-offline-files-file-server-removed-from-network
HOMEでは使えないオフラインファイルの機能。
無効化する場合
control>同期センター>オフラインファイルの管理
または、
gpedit.msc>コンピューターの構成>管理用テンプレート>ネットワーク>オフラインファイル>オフラインファイルの機能の使用を許可または禁止する
から設定する。
・SMBキャッシュ(SMB2 Client Redirector Caches)
http://technet.microsoft.com/ja-jp/library/ff686200(WS.10).aspx
DirectoryCacheLifetime:ディレクトリ情報の保持期間
FileInfoCacheLifetime:ファイル情報の保持期間
FileNotFoundCacheLifetime:File Not Found情報の保持期間
・SMB関連コマンド
接続しているプロトコルのバージョンを調べる
PS>Get-SmbConnection
Dialectの部分
設定情報
PS>Get-SmbClientConfiguration
lodctr /R
Perflibエラーがある場合
・ジョブ確認用のショートカットを作成
control>デバイスとプリンター
から該当プリンタをドラッグすれば作成される。
・ジョブ削除、一時停止解除(オフラインは解除できない)
net stop spooler
del %systemroot%\system32\spool\printers\*.shd
del %systemroot%\system32\spool\printers\*.spl
net start spooler
cscript C:\Windows\System32\Printing_Admin_Scripts\ja-JP\prnqctl.vbs -p “DocuCentre-V C2263” -m
・ドライバー更新
ディスプレイとネットワーク関連を先ず最新にする。この2つで不調が解決することも多い。
・Flash
もう必要性もないのでFlashに関連するものは全てアンインストールする。
・ハードウェアアクセラレータ
過去、富士通製(法人向け事務用)のPC数台が異常に重くなったことがあって、ドライバー類を最新にしてもダメで、ハードウェアアクセラレータ類を止めることで改善した。(問題がない場合は無効化しない)
・0バイトファイル
削除しようとすると、この項目は見つかりませんでした、と表示される。
原因は不正な名前(ファイル名の末尾に空白が入っている)だった。
del “\\?\c:\\xxx ”
にて削除できる。
・コーデック
-c(-codec)
は-vcodecと-acodecをまとめてという意味で、それぞれ指定する場合、
-vcode -acode
または、
-c:v -c:a
と指定する。
ffmpeg -i xxx
でファイルを読み込むとストリームが表示される。
Stream #0:0
0番目(読み込まれた順)ファイルのストリーム0番という意味。
0:v
は0番目ファイルの映像全て、
0:a
は0番目ファイルの音声全てと書くこともできる。
インターレース方式(NTSC)と、プログレッシブ方式
(720pなどのpはプログレッシブの略)
インターレースは走査線が一本おきになる。
・NTSC
30フレーム/525走査線
アメリカ、日本など
・PAL
25フレーム/625走査線
欧州、中国など
・1度の走査の画をフィールドと呼び1フレーム2フィールド
60i:インターレースで60フィールド(30フレーム)/秒
24p:プログレッシブで24フレーム/秒
***
プログレッシブ動画でも縞ノイズは消える。
-vf yadif=1:-1:0
のように指定する。
・モード
0:フレームごとに1フレーム(既定)
1:フィールドごとに1フレーム
2:0 + 空間インターレースチェックをスキップ
3:1 + 空間インターレースチェックをスキップ
・フィールドタイプ
0:上のフィールドが最初
1:下のフィールドが最初
-1:自動検出(既定)
・フレーム指定
0:すべてのフレーム(既定)
1:インターレースとしてマークされたフレームのみ
・分割されたVOBファイルを結合する(FFmpegとは関係ない)
copy /b VTS_01_1.VOB + VTS_01_2.VOB o.vob
・VOBファイルをMP4に変換
インターレース解除、ビットレート指定
ffmpeg -i o.vob -b:v 2000k -c:v libx264 -c:a libmp3lame -b:a 256k -ar 44100 -vf yadif=1:-1:0 o.mp4
品質そこそこなら、ビットレート2000k指定で問題ないが、
もしビットレート指定、ビットレート最大値を指定する場合、
ffmpeg -i o.vob -b:v 4000k -maxrate 8000k -c:v libx264 -c:a libmp3lame -b:a 256k -ar 44100 -vf yadif=1:-1:0 o.mp4
・DVDに書き込む用の動画を作成
ffmpeg -i i.mp4 -target ntsc-dvd o.mpg
・スケール変更(アスペクト比維持)
ffmpeg -i i.mp4 -vf scale=1280:-1 o.mp4
ffmpeg -i i.mp4 -vf scale=720:-1 o.mp4
・部分的に切り出す
ffmpeg -ss スタート ポジション -i i.mp4 -t 切り出す長さ o.mp4
開始
終了
ffmpeg -ss 0 -i i.mp4 -t 0 -c copy o.mp4
ss無、t有:最初から指定時間まで。
ss有、t無:指定時間から最後まで。
単位を省略すると秒となり、hh:mm:ssでも指定できる。
・ファイルサイズを落とす
ffmpeg -i i.mp4 -vcodec libx264 -b:v 1000k -acodec libmp3lame -ab 192k o.mp4
フレームレート、オーディオサンプルレートまで指定
ffmpeg -i i.mp4 -r 24 -vcodec h264_nvenc -b:v 3500k -acodec libmp3lame -ab 128 -ar 44100 o.mp4
※h264_nvenc(GeForce)
・mp3に変換
ffmpeg -i i.mp4 -acodec libmp3lame -ab 256k o.mp3
・mp4の連結(ワンライナー)
カレントディレクトリにある指定した拡張子(*.mp4の部分)のファイルの一覧をi.txtに書き込み、そのファイルを元に結合、処理後i.txtを削除している。
(for %f in (*.mp4) do echo file %f >> i.txt) && ffmpeg -f concat -i i.txt -c:v libx264 o.mp4 && del i.txt
・結合
ffmpeg -i m.mp4 -i a.mp4 -c copy -map 0:v -map 1:a o.mp4
ストリーム指定が不要の場合、
ffmpeg -i i.mp4 -i i.mp3 -c copy o.mp4
でも可能。
・静止画とmp3の結合
ffmpeg -f image2 -loop 1 -r 24 -i i.jpg -i i.mp3 -vcodec libx264 -shortest o.mp4
・指定秒数でサムネイル
ffmpeg -ss 10 -i i.mp4 -vframes 1 -f image2 o.jpg
・m3u8を保存
ffmpeg -protocol_whitelist “file,http,https,tcp,tls” -i i.m3u8 -movflags faststart -c copy -bsf:a aac_adtstoasc o.mp4
・指定領域の切抜き
ffmpeg -i i.mp4 -vf crop=W:H:L:T o.mp4
・指定領域の塗りつぶし
ffmpeg -i i.mp4 -vf fillborders=left=0:right=0:top=130:bottom=0:mode=fixed:color=black o.mp4
・ノーマライズ①
ffmpeg -i i.mp4 -vn -af volumedetect -f null null
で最大dB(max_volume)を確認し、
ffmpeg -i i.mp4 -af volume=6dB -c:v copy -c:a aac o.mp4
volumeでマイナス分プラスする。
・ノーマライズ②
ffmpeg -i i.mp4 -af dynaudnorm -c:v copy o.mp4
ゲインのかかり具合を自動で調整してくれる。
・ファイル結合時の音ズレ修正
音ズレをチェックする場合VLCが便利。(ツール>トラックの同期化)
ここでは-0.8s(音を映像に対して先行させる)で合うことを確認。
ffmpeg -i i.mp4 -itsoffset -0.8 -i i.mp3 -c copy o.mp4
・一つファイル内で音ズレ修正
ffmpeg -i i.flv -itsoffset -0.5 -i i.flv -c copy -map 0:v -map 1:a o.mp4
・コントラスト、彩度、明度
ffmpeg -y -i i.mkv -vf “eq=contrast=1:brightness=0:saturation=1” o.mp4
https://ffmpeg.org/ffmpeg-filters.html#eq
・カレントディレクトリのmkvをmp4へ+エンコード(ファイルサイズを落とす)
バッチ版
・カレントディレクトリのエンコード(ファイルサイズを落とす)
PowerShell版
カット
コンバート