オススメ

動画変換、音声変換、コーデック、コンテナ変更 自由自在::切り貼りして即使えるffmpeg 加工例文集

ffmpeg :: いまや世界標準。バックエンドで動作させるだけでなく、たまには主役として扱ってみる

切り貼りして即使える,がコンセプト

気が向いた時点で例文を書き足していこうかと思います。

いくつかのパターンさえメモしておけばたいてい対応できるのではないでしょうか。
Linuxでの結果ですが、インストールさえすればWindows10でも同様に扱えますので、Windowsユーザーの方もどうぞ。これを機会にWSL(Windows Subsystem for Linux)を使い始めてもいいでしょう。試してみるとあっけなさ、カンタンさに特にWindowsユーザーであれば驚くと思います。
もっともWindows用バイナリも配布されていますね。Windowsユーザーでもコマンドはまったく同じです。

最小限知識 :: ffmpegの基本はファイルを読んで別の形式のファイルに変換すること


これだけ覚えておけば大丈夫です。
フォーマット=コンテナの変換は拡張子を変えるだけです。 flv をmp4 など。
ffmpegは拡張子判別が基本です。
タイプがあるとしらんがなとエラーを吐きます。あらゆる形式に対応しているわけではありません。ほぼ必要と考えられる形式には対応しています。コンパイルオプションにもよります。

ffmpeg  -i infile.flv    out.m4v
ffmpeg  -i infile.mov out.mp4

まとめると

ffmpeg  -i infile.ぐしゃ out.ほにゃ

 ... みたいな感じが基本。覚えるのはこれだけです。(本当). テストにでます。


変換が完了しても、カメラなどからひっぱったオリジナルファイルは残しておいたほうがいいです。
のちのち再生不良気味になった場合にオリジナルから、その時のffmpegなどで使いやすいフォーマットに変換すればいいからです。
x264は枯れているといいきってもいいと思いますが、hevc対応ソースは発展途上といえるので特に注意が必要かなと考えています。

WAVからMP3を生成::当たり前すぎるけど、音声ファイルの変換にも使える

wav から mp3を生成する例
ffmpeg -i audio.wav audio.mp3 
記事末尾のような一括コマンドで処理すれば、カップヌードルを食べている間に100曲は処理できると思います。

ビデオとサウンドを無劣化コピーするか、変換/エンコードしてもいいのか。脳裏においておきましょう。時間の節約にもつながります。

たとえば、WindowsビデオのWMVをm2ts形式にする例文

例として、WindowsビデオのWMVをm2ts形式にしてみる。
x264エンコードしなおして、音声はそのままコピーする。
ムービーメイカー(Win7の無料のアレ)などでうまくいかなければ、別コンテナで試してみるといいかも。

ビデオコーデックと音声のそれを別々にも指定できますし、劣化なしを望むからコピーでもいいわけで。ffmpegとコンテナが対応していれば次のようにします。無劣化でコピーすると品質の担保と時間節約、両方に効果があります。

絵 は、x264/AVCでエンコード、サウンドはコピー。基本はこんなかんじ。


ffmpeg -i in.wmv -vcodec libx264 -acodec copy out.m2ts

音質とサイズバランスを考慮 libfdk-aac で最強手前のAAC/m4aを作る

穏やかな着地点というかんじ。libfdk-aacについてはググっていただくとして、音質に定評のある変換です。

ffmpeg -i "heavy.flac" -ar 48k -vn -ac 2 -ab 256k -acodec libfdk_aac -profile:a aac_he "output.m4a"

CD-DAのケースなら

-ar 44100

に差し替える。44.1k でも通るかも。

これで78点。再評価すると96点になるかも。nero AAC よりも良いのではないでしょうか。

アフターバーナー(afterburner)はこれで効いています。よって付けません。長くなるので。
このffmpeg はコンパイルが必要です。少しめんどうです。
ディストロ標準では動作しませんのでご注意を。
この項目は、2020年8月20日にコンパイルしなおした ffmpeg にて動作確認して、加筆しています。

スマホでなんでも持ち歩きたい人 :: HEVCで小さめのファイルにしたい場合

高圧縮(=サイズ小)でも粗が目立たない動画にする例。HEVCは画質が良いわけではないです。良くなるわけでもないです。サイズの割に高画質と私 は理解しています。

CPUが遅いとエンコードに笑えるほど時間がかかりますので、電気の無駄かもしれません。HEVCが正式名称ですが、あえてオプションは過去の経緯を 踏まえたものになっているのでしょうか。

ffmpeg -i in.mp4 -vcodec libx265 -acodec copy out.m4v

サイズ半分というか、40%ほど小さく圧縮ってかんじかもしれません。microSDカードのないスマホを使っている場合にどうしても保存しておきたい動画があるんだ!! みたいな場合かも。今の時代、そこまでストレージに困窮することはないはずなので。Nexus6やiPhoneですね。クラウドが常識になってきたのでそれもあまり意味はないかもしれません。
と、4年前に書いたわけですが、もうhevc は標準ですね。各種ツールも信頼してもよい。

GPUハードウェア支援・アクセラレーションを有効に

エンコーディングをx264でやり直して、audioはそのままで、m4vコンテナにする。ついでにvdpau(unix/linuxのHWアクセル)を効かせる。WindowsならDXVA2か?! HW支援は推奨されていません(というメッセージがでます。そのうち正式対応されるかも)
重箱の隅をつつく話ですが、HW支援を使わずにCPUにがんばってもらうほうが画質面では有利じゃないでしょうか。



ffmpeg -hwaccel vdpau -i in.file -vcodec libx264 -acodec copy outfile.m4v

ffmpeg -hwaccel  vaapi -i in.file -vcodec libx264 -acodec copy outfile.m4v 

ショートクリップを生成する::時間指定で範囲切り出し、抜粋

45秒から10秒切り出し。
最初に切り出し開始のスタート地点を指定する、このオプションの順番がいいかも。範囲切り出し。例文はエンコ、デコードもしないで済むファイル内容・設定なので超速いです(単なるコピー)。必要ならlixb264などでどうぞ。GUIアプリより便利かも。

ffmpeg -ss 00:00:45 -i infile -t 10 -vcodec copy -acodec copy ./cut/cut.m4v

BDAVフォーマットの「マイBlu-rayディスク」作成の予備作業

Windows7のムービーメーカーで作成したWMV形式のファイル。これを一括してビデオはH.264、音声はAC3に変換しながら、コンテナをm2ts形式にする。

たぶんですがBDAV作成でもっともトラブルがないコーデックがこの組み合わせなのではないかと思います。一時期凝ってみたがいまは飽きた。数が多い場合は、find を使うと効率的です。Windowsでは forfiles などでお願いします。

find . -name  "*.wmv" -exec ffmpeg -i {} -vcodec libx264 -acodec ac3 -ab 320k {}-x264-AC3.m2ts \; 

途中表示ではこんな風になります。

Stream mapping:
  Stream #0:2 -> #0:0 (wmv3 (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (wmav2 (native) -> ac3 (native))

※テストに使ったファイルはWindows7ムービーメーカー出力です。音声、映像共にエンコードしますので、時間がかかります。市販BDのようなかっこいい メニューのあるBDディスクを作るわけではありません。BDMVの場合は素直にWindows市販ソフトウェアを購入したほうが楽でいいかと思います。

いずれにせよ。
はなからソースファイルがm2tsという人は高機能ビデオカメラ所有者は別としてそんなに多くない気がしますので、結局のところ、トランスコード(エンコード)するわけで、結果すっげー 時間がかかるわけですね。

※ 準備作業です。この生成されたファイルをそのままBDに焼いただけでBDAVディスクになるわけはありません。 BDAVの仕様に合わせたファイルを更に生成し、ディレクトリ構造を適正にして焼き込みます。
めんどくさいです。ディレクトリ構造まで作成できるスクリプ トは組んでみましたが、とにかくフォーマットを合わせるのにCPU資源が必要なのでいまいちテンションがあがりません。

4Kアップスケール :: たとえばm2tsにしておいた2kファイルを4kにアップスケールする(カレント一括。mkvコンテナへにしちゃいます)

一括
for f in *.m2ts; do ffmpeg -i "$f" -vf scale=3840:-1 "${f%*.m2ts}.mkv"  ; done

単独

ffmpeg -i 2k.m2ts -vf scale=3840:-1 4k.mkv

※handbrake-cli 派はそちらでお願いします。当方では最近handbrakeもほとんど使いませんね。もともとffmpegの実験ニーズしかなかったので。

音声をAACにする場合のオプション指定(普通の方法)

libfdk-aacを使う生成が音質が担保できますので、既述の例をご覧ください。


少しだけオプションを書き足します。 WMV(などマイクロソフトのフォーマット)は個人的には世界から撲滅の方向で。AACが悪いわけではないですよ。標準的なフォーマットがやはりよいです。AACも標準ですが。だはは。
ffmpeg -i in.wmv -vcodec libx264 -acodec aac -strict -2 out.m4v

音声のみ、または、映像のみ抜き出す場合::たとえばyoutube

動画から音声だけを好きな形式で抜き出す。単車のエンジン音をこれで記録しています。たとえば、youtube-dl でローカルキャッシュ代わりにしてみた、動画ファイルから、音声のみ抜き出す場合には思い出してください。
最近では、VP9/opus がyoutube標準ですから opus で音声抜き出しすると無劣化です。最初から opusでダウンロードすることもできますが、本稿の範囲から外れるので書きません。

ffmpeg -i 動画 -map 0:1 out.opus
ffmpeg -i 動画 -map 0:1 out.ogg
ffmpeg -i 動画 -map 0:1 out.flac
ffmpeg -i 動画 -map 0:1 out.ac3
ffmpeg -i 動画 -map 0:1 out.mp3

いろいろ試してみてください。コンテナにどんな音声フォーマットで格納されているのかは、

mediainfoなどでも、
ffmpeg -i ファイル

とか……確認できます。 同等それ以下の音質にはなりますが、元以上の音にはなりません。当方のようにガソリンエンジン音を抜き出すみたいな用途は特殊かもしれない。

動画から映像だけを抜き出す。無劣化。無声映画・サイレント映画/トーキーみたい

ffmpeg -i 動画 -map 0:0 -vcodec copy videoonly.mp4

レースの撮影動画では、実況アナウンスやBGM(だいたいQUEENです。お約束)と排気音が入ります。
鈴鹿サーキットに限らずうるさい。^^; 無音声にして、BGMを別に載せてリビングのTVで観るのがいいかなと。

カンタンな動画の結合 :: ループファイルをつくってみたり(わりと楽しい)

ffmpeg -f concat -safe 0 -i list.txt -c copy loop.mkv

用意するファイル::ファイル名はもちろん自由です。
cat list.txt
#以下2つを結合する。同名ファイルでうまくなかったので、シンボリックリンクで別の名前をつけた。以下のa b は同じファイル。
file 'a.mkv'
file 'b.mkv'

リストを作るだけなので、とても楽。 数秒など短時間動画をすぱっとひとつのファイルに粗編集して様子をみるっていう場合なんかに便利かもしれません。

無声動画に音声(BGM)を加える。エンコーディングなしなので速い


ffmpeg -i 映像_videoonly.mkv -i audio.flac -c copy merged.mkv
https://superuser.com/questions/277642/how-to-merge-audio-and-video-file-in-ffmpeg

めんどくさいことはシェルにやらせよう。ざっくり一括変換(flac から ogg|mp3|m4a|opus)

たとえばこれらのコマンド行を1行づつファイルにして、スクリプトフォルダにおいておけば右クリックで一括変換です。
右クリックメニューの拡張 scripts nemo caja を参照してみてください。natilus でも同じことです。おすすめです。

シェルでカレント一括で処理したい場合はこんなかんじのワンライナーで。
アルバム単位ディレクトリに音楽ファイルが複数あった場合に、一括で変換するってことです。

第2案;; これのほうがエレガントですね。

FLACから各種フォーマットに変換
oggに
for flac in *.flac ; do ffmpeg -i "$flac" "${flac//flac/}ogg" ; done
mp3に
for flac in *.flac ; do ffmpeg -i "$flac" "${flac//flac/}mp3" ; done
m4aに
for flac in *.flac ; do ffmpeg -i "$flac" "${flac//flac/}m4a" ; done
opusに
for flac in *.flac ; do ffmpeg -i "$flac" "${flac//flac/}opus" ; done

HandBrakeCLI 加工例文集 コマンドラインで動画変換

ハンドブレーク:handbrake で小さな動画にしてみる


新規にターミナル(端末)CTRL+ALT+T
handbrake で幅640の小さなファイルにする。縦は無指定でも自動でアスペクト維持してくれる手抜きが許される。年齢によるが640は粗すぎる。qの数値で顕著な変化がありますので一回テストファイルで実感してみるといいです。おもしろいです。

HandBrakeCLI -e x264 --deinterlace fast -q 20 -w 640 -m -O -i in.file -o out.m4v

(ちょっと発展系) 実写フィルム系素材
HandBrakeCLI -e x264 --deinterlace fast --x264-tune film -q 20 -w 640 -m -O -i in.file -o out.m4v

FHD対応スマホでみるとしたら、960*540にしておくと画質とサイズバランスでいいかも。ストレージサイズを抑えるという意味で。

RF値による変化と効率

メモ RF値の関連 HandbrakeCLI

180秒 24.0MBのオリジナルテストファイルHEVC to x264


RF    時間  生成サイズ

10   4:55  115.0MB サイズがえらくでかくなった。
20    2:40    30.6MB 
25    2:15    19.2MB
30    2:49    12.9MB 許容(5インチ以下のスマホなら)
40    1:40      7.7MB うーん。
50    1:12      5.4MB    見るに耐えない。ありえない。表現としておもしろい。

だいぶ前にテストしたメモなのでごめんなさい。10-20の範囲を試してみるべきですね。18ぐらいでいいんじゃないかと思います。20がデフォルトのはずです。 処理時間からみれば、20-25ですかね。


あれ?! この位しか使ってなかった。というより、ffmpeg依存が強まっているようですね。
ffmpeg加工文例集は別稿に分けます。

動画変換、音声変換、コーデック、コンテナ変更 自由自在::切り貼りして即使えるffmpeg 加工例文集


右クリックメニューの拡張 scripts nemo caja コードページエラーZipの克服

Zip の憂鬱。文字化け、時々コードページエラー。そして、解決した。(2) Xarchiver 

おそらく、GUIでの展開/解凍はおおむね解決。

参考:コマンドライン・ターミナルでの操作


などがおすすめです。

ときどき難儀なShiftJIS/CP932なZIPアーカイブ対策:マウス右クリックでその「難儀」なzipを展開/解凍できるようにします。概要版。一番上のリンクをみてください。そのほうがいい。以下は記録のため残しておきます。

スクリプトフォルダーに一括解凍スクリプトなどをおきます。

  • MATEは、: ~/.config/caja/scripts
  • Cinnamonは、:~/.local/share/nemo/scripts

がスクリプト定置場です。

解凍・展開には、unarとunpを準備します。冒頭参考記事をどうぞ。unpには決め打ちしたパッチをあてます。

1種類で良いですが、unar/unpのふたつの解凍スクリプトを作成します。あえてね!と言うノリです。

以下のふたつをエディターで切り貼りして、スクリプト定置場におきます。そして、ふたつのファイルに実行属性を付けます。

右クリックメニューで表示させるため、和名でアーカイブ展開用スクリプト名をつけておくほうがいいかもしれません。

●万能解凍一括(unar)君 


#!/bin/bash
#@unarを信じて各種アーカイブを一括解凍
#ZiSH
# 一括可。
#
#
#
for arg
do
    unar "$arg"
done

exit 0

●万能解凍一括(unp)君

#!/bin/bash
#@unp(カスタム済み)を信じて各種アーカイブを一括解凍
#ZiSH
# 一括可。
#
#
#
for arg
do
    unp "$arg"
done

exit 0

これで完成です。20年位前に自分で作成した文字化けzipなどを解凍してみてください。処理過程が見えないので、当方はzenityで拡張していますが、シンプルな例題を提示します。
頻繁に発生する事態ではないと思いますが損はないと思います。ここでいう万能とは、おおむね万能です。

CinnamonとMATEで両方インストールしている場合に、scripts を共通化する

スクリプトフォルダーに簡単なプログラム/シェルスクリプトなどをおいておくと便利です。場合によっては、ターミナルオンリーより速い場合もありますね。図は当方の例ですが、たとえば、コードページで日本語が文字化けするzipを解凍するZenityスクリプトとか、一括して配下をリネームするスクリプトとか、そういうのをいれています。
~/binにはアルファベットでファイル作成して、定置場所ではシンボリックリンクに和名を付けています。順序は文字コード順*1なので、並びにこだわるなら、旧字なども使ってみるといいかも。くさび形文字もいけます。カナダ先住民族文字も。もちろんです。試してしまったのでした。



余談はさておき、

MATEは、: ~/.config/caja/scripts

Cinnamonは、:~/.local/share/nemo/scripts

です。どちらかがメインだと思うので、片方にリンクを張るだけ。

例: nemoの定置場所を基本に、cajaにはリンクを張る。

新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T
ln -s ~/.local/share/nemo/scripts ~/.config/caja/scripts


今、unityなubuntu本流はいれていないので、どこでしたっけ?! 読み替えてください。

余談
文字コード順*1=エンコードというか、ソートオーダーは、ubuntu、debianやFedora、redhat も全部、UTF-8で使っていて正しいロケール設定をしていても、SiftJIS/EUCと同じ並びの気がします。MAC OSXみたいなUTF-8の並びでもないです(これも美しいとはいえない)。気持ち悪いです。美意識の観点からも、漢数字の並びも変えたかったので、自分の環境は変えました。きれいです。
MACよりも、Windowsよりも美しい並びになりました。デフォルトはちょっと滑稽ですね。何せShiftJIS嫌いなもので。(汗)

WINE 解像度自由自在::マニアックな例 explorer.exe 仮想デスクトップ

WINEの画面解像度変更でお気に入りのWindows環境を作る

最近のWINEの完成度にはホントびっくりしますね。
ちょっとだけTIPS。といってもWIKIの通りです。仮想デスクトップでWINEのアプリケーションを使おう、という意図ですが、WINEの仮想デスクトップというとイメージが湧きにくいので実際コマンドを打ってみてください。
ほとんどの場合必要性は感じないと思いますが、解像度が限定的なゲーム(720p)の起動などに使っています。

まずマニュアル通りの方法ですが、慎重に行ってください


新規にターミナル CTRL+ALT+T
WINE 仮想デスクトップを使うとたまに便利なことがあります。サイズ固定したい。低解像度ゲームの利用時などかな。 旧型アプリで挙動がアレとか、などの理由....

次のコマンドでたいていのケースでテストできます。コピペ、エンター。

wine explorer /desktop=VD,400x400 notepad.exe

ややこしいオプションは、WINE HQの通りにすればだいじょうぶです。が、そんなに研究しても仕方ないので、以下の私のケースワーク通りでいいんじゃないかと思います。

LastFM.desktopを作成しマウスクリック起動にします。


次のようなデスクトップオブジェクト(通称アイコン)を作成しておけば、
マウスクリックで起動します。

投稿時点では1920x1200のモニターでした。
[Desktop Entry]
Name=ja
Exec=env WINEPREFIX="/home/mate/.wine" wine explorer /desktop=DJ,1920x1199 E:\\\\working\\\\lastfm.exe
Type=Application
StartupNotify=true
Path=/home/mate/.wine/dosdevices/e:/working
Icon=/usr/share/icons/Numix/64/apps/jabber.svg
Name[ja_JP]=LastFM

解説と自画自賛::オリジナルの発見::オススメ

VDという名前の仮想デスクトップで、
lastfm.exe という名前のWindowsアプリを
1920*1199で開く。1ドットあえて減らしています。これで期待通り。
発見しました。大発見でしょうか。👏

大事なファイルなので編集せずに起動テストが終わったらそのまま終了しましょう。

wine explorer /desktop=VD,800x800 notepad.exe c:\\\\windows\\\\system.ini

参考:: https://wiki.winehq.org/Explorer

それ find で!! コマンド1つで、全圧縮形式を解凍する。混沌を求めて。unar unp

最強の解凍ツールを求めて。SJIS含むが気分的には除外したい。

簡単にいうと最強も何もあったもんじゃないんですが、シフトJISが撲滅されると楽ですね。

  • unp すべての形式へのフロントエンドスクリプト(展開にはスクリプト内部でunzipなどを使います)。一部書き換えてchcp932対応にするといい。
  • unar すべての形式を解凍する便利ツール。コードページを解する。賢い。間違えたことがあまりない。数回あるけれど。そういう場合は、unzip -Ocp932 *.zip。

※すべて=だいたい。

※bash

コンビニエンスなツール・unp unar の導入

sudo apt install unp unar
ふたつ入れときます。ファイルは小さい。

■RAR形式Zip形式

ふたつ以上のzip/rarがある場合です。一つしかない場合は*の扱いが変わるので。

ディレクトリのRAR形式のファイルを一括で解凍、展開する。unar。find は手抜き書式。
#一括なら次の2行覚えておけば、ほぼ全てに対応できます。
find *.rar -exec unar {} \;
find *.zip -exec unar {} \;  
同、unrar/unzip の場合 
find *.rar -exec unrar x {} \;

#WindowsでいまどきShiftJISなファイル名格納されたZIPは個別に扱う。

unzip -Ocp932 filename.zip

■多様な形式をひとつのコマンド、書式で。unpで楽勝。

unpの場合(拡張子を変えれば万能的に使えます。zipなどにも) 発見したんだが、*.*が気軽に使えるにのがこのスクリプトの便利さかも。混沌とするかもしれませんが。
unp *.zip
unp *.rar
unp *.* 

■つまり、最強の解凍ツールunpといってもいい、かも。そうでもないが。

(ただし、「コードページの憂鬱」のある日本語環境は除外。一行書き換えればいいです)


unp *.* 
find *.rar -exec unar {} \; 
find *.zip -exec unar {} \; 

まぁ、化けるアーカイブファイルがあったら、(だいたいWindowsのものだけど)、unzip -Ocp932 *.zip を個別にかけちゃえばいいわけです。個別にunarだとかなりいい線いきますね(間違える場合もある)。

まぁ、~/Downloadsで、*.*を発行すると混沌とするだけですよね。あはは。

■最終回答(私の結論)テキトーなのであまり信じないほうがいいかも。unpの日本語対応版を作る。


unp 227行目を
        [ "unzip" ]を [ "unar" ] に書き換える。unzipをunarです。

sudo gedit `which unp`

      [ "unzip", "zip|cbz|cbr|jar|war|ear|xpi|adf", "Zip.*archive", 0,
#      [ "unzip" ] 
      [ "unar" ]

書き換えた方を、unpjとして、保存しておくといいのかも。とはいえ、自分が使うとも思えないですね。使いませんね。

これで、ほぼ当社調べ99.9%(Shift_JIS含めて)日本語環境に対応した解凍環境ができました。
unarに頼り過ぎると、RARによってはうまくいかないので、unar万能というわけでもないのです。めんどくさいな。 rarもややこしいところがあります。たぶん、形式が違うのでunrarの種別に絡みますね。めんどくさい。

おまけ:unarにコードページを強制する:unar -e cp932

alias zipsjis="unar -e cp932" #codeページ強制 解凍

SoX 活用事例::楽曲ファイルのノーマライズとアップコンバート SoX

楽曲ファイルのノーマライズとアップコンバート with SoX

オーディオに関わることなので、意図や意味については議論しませんが、楽曲ファイルを音楽ファイルのアーミーナイフといわれるSoXというツールで、ノーマライズとアップコンバート(アップサンプリング)してみます。改稿 2018/08/06

Sound eXchange SoX http://sox.sourceforge.net/
SoXは、音声ファイルに対してできない処理はありません。たぶんなんでもできます。万能ツールです。Win/Linux/OSXで使えるので一回覚えると一生モノかも。Audacityとあわせればほぼ一般ユーザーのしたいことはぜんぶカバーされていると思います。作曲は別だけど。音も鳴らせるので数秒のメロディとかコマンドで設定できますね。気力のある人なら作曲もできる。

一般ユーザーでは、アップサンプリングしたいなどという例が多いと思うので、それを想定したケースワークを示します。
  • 大きすぎる音を少し小さめに、
  • サンプリングレートを44.1kから96kに、
  • ビット深度を24bitに、
してみます。

音割れがCD収録レベルで存在すると確信するCD、これクリッピング発生してるんじゃないのと思った場合などにどうぞ。主たる目的はそれです。この手のツールはWindowsにはいろいろありますね。いろいろ演算して「何か」を作り出すツールとか。※音割れが消えるわけではないですよ。(気のせいか違う気がするかもしれませんが、私は知りません)

印象的にざらついた感じがするのなら、jack+低遅延カーネル+DeadBeefで聴いて見るのもおすすめです。プレイヤーでけっこう違いますよね。いかん、こういう話は禁句だった。

余談、14.04LTSにソース落としてきて最新バージョンをコンパイルしてみて、依存関係を無視して強制インストールしたらシステムが変になりました。(汗) やらないほうがいいです。メンテナーの皆さんのバージョンがいいと思います。

実験開始です。新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T

soxを使って楽曲ファイルをアップコンバートする。Windowsでも同じ。OS Xでも同じ。以下、対象ファイルは仮に10.flacとしています。

標準リポジトリですから、

sudo apt install sox # ubuntu


sudo pacman -S sox  # archLinux(Manjaro) 

以上でインストール可能です。

実行例

sox -S -G --norm 10.flac -r 96000 -b 24 10.flac_96k24b.flac

----
こんなかんじでノーマライズとアップコンバートが進行していきます。

sox -S -G --norm ./10.flac -r 96000 -b 24 ./10_96k24bit.flac

Input File     : './10.flac'
Channels       : 2
Sample Rate    : 44100
Precision      : 16-bit
Duration       : 00:04:35.05 = 12129852 samples = 20629 CDDA sectors
File Size      : 30.1M
Bit Rate       : 876k
Sample Encoding: 16-bit FLAC
......
In:100%  00:04:35.05 [00:00:00.00] Out:26.4M [      |      ]        Clip:0   
Done.

-----------
だいたいこんなふうになります。例
Audio
Format                                   : FLAC
Format/Info                              : Free Lossless Audio Codec
Duration                                 : 5mn 9s
Bit rate mode                            : Variable
Bit rate                                 : 3 419 Kbps
Channel(s)                               : 2 channels
Channel positions                        : Front: L R
Sampling rate                            : 96.0 KHz
Bit depth                                : 24 bits
Stream size                              : 126 MiB (98%)
Writing library                          : libFLAC 1.3.0 (UTC 2013-05-26)


効果については、個々人の心の中に。

ディレクトリまるごと。find で。全部のflacを処理。

 find . -name \*.flac -type f -exec sox.96k24bit {} \;

 sox.96k24bit は最後に示すスクリプトです。

ディレクトリ内flacまるごと。だけど、5番目の曲は変換しない。

find . -name \*.flac -not -name 5\* -type f -exec sox.96k24bit {} \;

※5でファイル名がはじまっている前提。"5 - わたしの愛のうたを聴いて❤.flac"みたいに。

楽曲管理ソフトの振り分け条件で違いますが、同一アーティストの同一アルバムなら同じディレクトリに全部あるのが普通なので、こういうのだけ覚えておけばいいかな、と。コンピアルバムとかけっこう面倒。検索すればいいだけですが。

Windows10は、2ヶ月後には、こうしたコマンドが使えるようになりますね(たぶん)。それまでは、forfiles でどうぞ。Win7/Win8は、forefilesで。 使いやすい良いコマンドです(本当の気持ち)。

sox.96k24bit いつもの適当スクリプト gedit ~/bin/sox.96k24bit

soxのオプションは英語のmanでは音関連の基礎知識がないと英語ができても厳しいと思うので、ググってみてください。いろいろ試した結果自分の場合こういうシンプルなオプションで落ち着きました。要はおまかせっていうことです。いろいろ考えても仕方がなかったです。世界ではいろんな試みがあるんだなと実感させられました。

#!/bin/bash
# -x
#@ sox でアップコンバートしてみる。ノーマライズ込。
#
#微妙な問題点、タグは引き継がれるが、カバーアートは埋め込みが必要。
#オリジナルからカバーを抜いて、格納するルーティンがあると楽かも。
#滅多に実行しないので、easyTAGでいいか。

#$1 の拡張子をとって変数に格納

if [ "$1" = "" ]; then echo nono; exit 0 ;fi #$1 が指定されてなかったら終了

basename=$1 ; targetname="${basename%.*}_96k24bit.flac" ; #echo "$filename"

if [ -f "$1" ]; then

#echo "$1 ファイルが存在します"
#echo "96k 24bit に変換。⇢ $targetname 生成。"
#echo soxsox変換するよ。

echo sox -S -G --norm "$1" -r 96000 -b 24 "$targetname"
time sox -S -G --norm "$1" -r 96000 -b 24 "$targetname"

else

echo "ファイルが存在しません"
exit 0

fi #$1 が存在してなかったら終了

echo genarated. ⇢ $targetname
echo "done"
echo " "
exit 0

前後のファイルをaudacityに読み込んでクリッピングチェック、スペクトラム表示を眺めてみるとよいです。効果があるとは思っていなかったりします。

bit深度だけなら、SoX掛けなくても、deadbeef のオプションでリアルタイム変換してプレイできます。audacious プラグインなどで Sox Resample があったり、android Poweramp でも SoX resampleがオプション指定です。幅広くSoXは活躍しています。

余談ですが、EasyTAGであまりにでかいpngを埋め込むと再生不能ファイルになりました。以前はうまくいっていたんですけどね。

それ、マウス操作で:

複数指定ならこのスクリプトを一部書き換える必要がありますが、1曲づつならそのままでもscriptsにおけばいいでしょうね。nemo/nautilus/caja で。

(日本に限らず、ヨーロッパの方(特に北のほうの国)とかもお好きだなぁという印象。アメリカ人はおおざっぱっぽい)


How to install linux-lowlatency on ubuntu/manjaro(低遅延、リアルタイムカーネル)

低遅延/リアルタイムカーネルを導入

ubuntu and manjaro Linux Real-Time Kernel

manjaroLinuxの場合/arch系

リアルタイムカーネル導入

DEによる差があるため(説明がめんどくさいため)端末からアクセスしてください。

新規にターミナル(端末)を開きます。CTRL+ALT+T
manjaro-settings-manager

セッティングマネージャーが開きます。ペンギン(カーネル/タックス)をクリック。




ペンギン(Tux)を選択クリックしました。カーネル画面になります。


この場合、Real-Timeと表示されているカーネルがおそらく最低ふたつあるはずです。どちらかに決めて(両方でもOKではあります)、右のインストールボタンを押します。それだけです。選ぶのはやはり最新にあたるLTSが無難でしょうか。再起動時に、Grubアドバンスメニューで起動したいカーネルを選択してください。

プチ知識::

LinuxカーネルのLTSとubuntuなどディストロのLTSは意味あいが違います。カーネルに関していえば、だいたい年末に新しいLTSがでます。2018/07/02現在では、4.4系列が最新のLTSだったと思います。arch系はその意味でわかりやすいです。

ubuntu/mint の場合

sudo apt install linux-lowlatency

結論は以上です。たぶんLinuxMINT 18.0 でも同じになると思います。今回の導入理由は、通常のFLACでも音が荒れるかんじがする(聴感の話ではなくて、実際ノイズものる)ので、まずJACKをいれたのですが、コンパイルしながらだとまだ荒い。そこで低遅延カーネルもいれてみました。当方だと、ハイレゾフォーマット再生以外ではニーズはほぼないです。ローレイテンシーにすると目視ですが常時10%位CPU負荷が高い気がします。電気を喰っている?! 気のせいかもしれません。

余談はさておき、Debian系列ならsynaptic(パッケージマネージャ:システム管理にある。名前はこんなかんじか)であれば、「lowlatency」を検索して、インストールすれば、マウス操作で終わります。
新規にターミナル(端末)を開きます。CTRL+ALT+T
sudo apt install linux-lowlatency

依存関係含めていいかんじに導入されます。

何も考えなくていいです。

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています              
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  linux-headers-4.4.0-18-lowlatency linux-headers-lowlatency linux-image-4.4.0-18-lowlatency
  linux-image-lowlatency thermald

提案パッケージ:
  fdutils linux-doc-4.4.0 | linux-source-4.4.0 linux-tools
以下のパッケージが新たにインストールされます:
  linux-headers-4.4.0-18-lowlatency linux-headers-lowlatency linux-image-4.4.0-18-lowlatency
  linux-image-lowlatency linux-lowlatency thermald
アップグレード: 0 個、新規インストール: 6 個、削除: 0 個、保留: 0 個。
58.5 MB のアーカイブを取得する必要があります。

 ...

Running depmod.
update-initramfs: deferring update (hook will be called later)
Examining /etc/kernel/postinst.d.




エラーがでずに終了したのを確認して、再起動します。

(grubの調整が必要な方は...そか、こんなもん読まずにいれてますね。略)
sudo reboot

Grubの選択::メニューなしの設定は見直しましょう

エントリーメニュー:上記例であれば、
linux-image-lowlatency (4.4.0.18.19) のカーネルから起動します。
※前回起動エントリーから自動起動する設定にしています。OSが7つ入っているので。


試してみた!(2) Windows Subsystem for Linux ,Ubuntu on Windows ::Zsh

目次

  1. 試してみた!(1) Windows Subsystem for Linux ,Ubuntu on W...
  2. 試してみた!(2) Zsh と起動とユーザーランド 
  3. 試してみた!(3) 予定
  4. 試してみた!(4) 予定
  5. 試してみた!(5) 予定        全5回

Zshをマウスクリックで直接起動する 

ググってもいないし、自分で調べてみての結果なので、適切かどうかはわかりません。発見したことをメモります。

コマンドプロンプトから起動する。1 bash
> bash

コマンドプロンプトから起動する。2 bash ノーマルはこれ。
>bash ~

コマンドプロンプトから起動する。3 Zshをダイレクトに起動する。
>bash -c 'zsh'

マウスクリックでZshを起動する。3b Zshをダイレクトに起動する。マウスでクリックの場合。
bash -c 'zsh'

と1行書いたテキストファイル zsh.cmd ファイルをどっか(デスクトップにでも)に作成してクリックするだけ。
このbash.exe にはパスは通っています。

zshは、/usr/bin/zsh /bin/zsh にいる。インストール済みであれば。未導入なら、
apt install zsh
で入ります。

などとubuntu上から書いていたりする。とにかくbash.exeを一回叩かないとLinuxのユーザーランドには入れないという仕様みたいですね。

そもそも、このbash.exe(Windowsバイナリ) は何なのだ(=面白い)。起動後は、/bin/bash(Linuxバイナリ)です。


Windows10 preview で導入できる、このbash.exeは、Linuxへの扉を開くトリガーと思うことにします。だいたいあっているはず。
ubuntu.exe にリネームしても動く気がする。だはは。

zshはまだまだ。残念な出来みたいですね。夏の記念大パッチ集では全体にブラッシュアップされていることを期待したいです。

mpv player のススメとハードウェアアクセラレーション設定

最近ではこんなめんどくさいことはしていません

17.10では標準でmesaがはいっています。素の状態でvaapiもvdpauも有効にしてHWDEC有効無効の動画再生テストができました。ユーザーがいれなくてもいいみたいです。カンタンにテストした範囲ですが、いいかんじです。16.04LTSはそろそろやめようかなぁと考え始めています。

⚠本稿の続編がオススメです

神々は細部に宿る::やさしいinput.conf mpv.conf 追記::2020/07/19現在。 ここまでやっておいてなんですが、vo=gpu 、hwdec=no が現代のCPU/GPU環境をお持ちの方の正解です。 多少極論します。怒らないでください。HWアクセルは遅い...

現在当方がつかっている定義ファイルを公開(神々は細部に宿る::AMD RADEON R7 360 にやさしいmpv.conf)しました。よろしければ参考にしてください。考え方として2020年版として改稿しています。

Windows10ユーザーにも、OS問わず参考にしていただけると思います。17.04,17.10上でも......20.04でも。

総括的追記2017年7月 日替わりドライバにして6ヶ月

既に書きましたが絵で示すドライバを利用しています。とても安定してきた上、速度も速いです。オススメするわけではありませんが。使っているPPAは次の通りです。とてもめんどくさいです。バッチ処理にしていましたがそれでもめんどうです。

  • http://ppa.launchpad.net/mc3man/mpv-tests/ubuntu xenial InRelease                  
  • http://ppa.launchpad.net/mc3man/xerus-media/ubuntu xenial InRelease                
  • http://ppa.launchpad.net/oibaf/graphics-drivers/ubuntu xenial InRelease

mpvを利用していて気がついている範囲で、voはvdpauが最も安定して速い。vaapiは遅い。openglはいまいちという傾向があります。現在はvdpauのみでテストしています。4K/Webm(PanasonicのビューティフルジャパンCM)をベンチマークしていますが、体感的に遅延のない円滑な再生ができるようになっています。やればできるんじゃないか?! RADEON R7 360 です。(現在はこうは思っていません。2020年8月13日)

まれに起動しなくなったりします(Xまでいかない)。いつでも戻せるようにしておくと良いです。当方は、導入ドライバ全部を日時別ディレクトリに保存するようにスクリプト処理しています。そこで、sudo dpkg -i *.deb 、再起動で戻しています。1/60ぐらいの確率でぷち不幸になれますので用意はしておくと楽ですね。

総括的追記2017年2月 ドライバアップデート

ハッピーです。ドライバがアップデートされて以前よりかなりよくなりました。2017/02/10

総括的追記2017年1月 あくまでmpv新旧でのお話です。

エントリーモデルのビデオカード/グラフィックボードで何ゆーてるんだと笑われそうですが、まだ17500円で買って1年経過していないのでもったいないです。現行品だったわけですし。

  • おそらくオープンソースで提供してもらっているRADEONドライバがあまりに遅すぎるので、4K描画にぜんぜん追いつかない(高いレベルを期待しなければOKともいいます)。
  • VDPAUもVAAPIも有効にできるので比較してみたが、ハードウェアアクセルを効かせたほうが動画再生などではフレーム落ち、遅延が激しい。現状当方では何の意味もない。
  • つまりソフトウェアデコードのほうが調子が明らかによい。FHD程度ではバレない(=顕在化しにくい)。だからHWアクセルは使わない。
  • ちなみにVLCは廃棄フレームがあるもののわりといいかんじ。そっちを使えよ、と。

ワークアラウンド

 一時的に解像度を下げて全画面再生。再生終了時に元に戻すことにした。解像度変更に伴いアイコンの位置がめためたになるのでスクリプトで保全、復元という手順を組み込んだ。(完璧ではないが、だいたいうまくいっている。この現象はポートレイト、ランドスケープの切り替えでも生じるものですね。)

以下の記述は、1920x1200解像度を使っていた時点での話です。昨年4Kモニターに変更以降は対応の仕方を変えました。フレーム破棄については目視、肉感と数字で確認しました。削除しても良いのですが記録なので残しておきます。

FHD程度時代の過去稿


日常的に使うのは、mpvになってしまいました。Windowsなら定義ファイルは、mpvディレクトリにおけばいいです。だいたいubuntuと共通化しています。

設定ファイルを載せておきますね。時点2016-04-12+2016-04-15

美しくも合理的でもないですが、参考までに。githubのお手本から作るのもいいかと思いますし、デフォルトで間に合えば何もしなくてもいいです。

ハードウェアアクセラレーションのメモ

参考:ハードウェアアクセラレーションを有効にする。 Linux MINT 18 ubuntu 16.04L...
おまけ:今朝2016-04-15のドライバがアップデートされて、vdapuが(実際に)有効になった模様です。RADEON 6550D(APU)。
mpv --vo=vdpau  *264*
   cplayer: Auto-loading profile 'vo.vdpau'
   cplayer: Playing: TEST_x264_ffmpeg.m4v
   cplayer:  (+) Video --vid=1 (*) (h264)
   cplayer:  (+) Audio --aid=1 --alang=und (*) (aac)
   cplayer:      Audio --aid=2 --alang=und (ac3)
   cplayer: AO: [alsa] 48000Hz stereo 2ch float
        vd: Using hardware decoding (vdpau).
   cplayer: VO: [vdpau] 1920x1080 vdpau
  vo/vdpau: Compositing window manager detected. Assuming timing info is inaccurate.
statusline: AV: 00:00:37 / 00:01:28 (42%) A-V:  0.000 Cache:  9s+36MB
[----------------------------------------+---------------------------------------------------------]
   cplayer:
   cplayer:
   cplayer: Exiting... (Quit)

AMD RADEON R7 360(2016-06-01)

libva info: VA-API version 0.39.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so
libva info: Found init function __vaDriverInit_0_39
libva info: va_openDriver() returns 0
   cplayer: AO: [pulse] 48000Hz 5.1 6ch s32
        vd: Using hardware decoding (vaapi).
   cplayer: VO: [opengl-hq] 1920x1080 vaapi
  term-msg: FPS: 23.976
VDPAU関連を組み込まない状態:VAAPIが有効でHWアクセルが効いているかんじがします。ffmpegでは効かない(ffmpegはvdpau必須)。

設定ファイル ~/.mpv/config 

Fluid Motion Video は無理だけど、 AMD RADEON R7 360で60frame を試行錯誤したパターン残骸あり。その他メモやら、試験過程の気づきなどもメモったままなので、見苦しいかと思います。参考にしたURLも書いてあります。今は、RADEON HD6500搭載機体です。

この設定ファイルのスタイルそのものは、過去のmpvで、今現在私が使っているものではないです。vo で長ったらしく設定する方法は1年前のバージョンまでだった気がします。

#vim: syntax=config
#mpv player config by ZiSH
#vim ~/.mpv/config #nano ~/.config/mpv/config 前者優先
# 2016-02 2015-07-24 小幅改定 初版作成 2015-03-19

#pause # クリックで再生開始。自動再生しない。自動再生の場合コメントアウト。
#https://github.com/Argon-/mpv-config/blob/master/mpv.conf
#svp そのうち考慮 input-unix-socket=/tmp/mpvsocket

# 全部キャッシュにいれる。⇒ 搭載メモリー 8GB以上前提。2GB程度のフルHD動画を3つ同時に再生するとして(笑)。
# すべてのパラメーターを検証したわけではない。gitを追っているが動かなくなるまで放置。エラーはでないが無効で意味がなくなったパラメーターもあるはず。てきとー。

#乾燥目対策。
#微妙な個人的好み。下に少しでも下げるとまぶたの位置が下がる。配置下げる。
#video-align-y=0.8
#パン pan w e 意外に便利
panscan=0.98 #19:10。

#force-window=yes

###########
# General #
###########

#save-position-on-quit
#no-border #好みで枠なし。メニューバーはMPVに不要というヒトに。qとかALT-F4で終了。右上隅がないだけです。すっきりしていて素敵。19:10(1920x1200)な画面だとメリットもあります。どっちでもいいやですね。
msg-module                              # prepend module name to log messages
msg-color                               # color log messages on terminal
term-osd-bar                            # display a progress bar on the terminal
#有能。とても便利です。use-filedir-conf                        # look for additional config files in the directory of the opened file
#pause                                   # no autoplay
#keep-open                               # keep the player open when a file's end is reached
#framedrop=vo                            # drop frames in case your computer is to slow for realtime playback
#autofit-larger=100%x95%                 # resize window in case it's larger than W%xH% of the screen
deinterlace=auto                        # 'auto' does not imply interlacing-detection
#cursor-autohide-fs-only                 # don't autohide the cursor in window mode, only fullscreen
#input-media-keys=yes                    # enable/disable OSX media keys Xのマルチメディアキーは効きますので、MACオンリーの設定でしょうか。
cursor-autohide=250 #1000                    # autohide the curser after 1s
#fs-black-out-screens


# ビデオ Video Filters いらんと思う。デフォルトでよいです。
#stop-screensaver=yes

#[default]
#profile=R7
#[R7]
#vo=opengl-hq:interpolation:scale=ewa_lanczossharp:cscale=ewa_lanczossoft:interpolation-threshold=0.0:scale=spline36:sigmoid-upscaling
hls-bitrate=max                         # use max quality for HLS streams
ytdl-raw-options=format="(bestvideo+bestaudio[height>=?1080]/best)[protocol!=rtmp]"

#########
################################################################################
# ビデオ Video Output HW支援VDPAUにはドライバと追加ファイル、設定が必要14.04、16.04
################################################################################
# HW Accel 特に必要ないなどと言ってみる。以下voに応じて、hwdecなどが変化するようにしています。コマンドライン起動の場合に便利になります。
#https://wiki.gentoo.org/wiki/VDPAU mplayerとmpvは書式がだいたい同じ。
#vo=opengl-hq #vo=opengl #vo=vdpau #vo=vaapiNG #vo=xv (xvはとても古い)

#000)低速 Low quality: Radeon HD6550/ NVIDIA 710
vo=opengl
#001)##vo=opengl:interpolation
#011)#vo=opengl:interpolation:scale=ewa_lanczossharp:cscale=ewa_lanczossoft:interpolation-threshold=0.0:scale=spline36:sigmoid-upscaling
#111)中速 Medium quality:これぐらいが通常妥当。
#vo=opengl-hq:interpolation
#222)High quality configuration:
#vo=opengl-hq:interpolation:scale=ewa_lanczossharp:cscale=ewa_lanczossoft
#333) 次で決まり。with AMD R7 360
#vo=opengl-hq:interpolation:scale=ewa_lanczossharp:cscale=ewa_lanczossoft:interpolation-threshold=0.0:scale=spline36:sigmoid-upscaling
[vo.opengl]
hwdec=no
#video-sync=display-resample
#term-playing-msg='FPS: ${fps}'
#display-fps=60
[vo.opengl-hq]
hwdec=no
video-sync=display-resample
term-playing-msg='FPS: ${fps}'
display-fps=60
#60frame にする設定の場合に有効、これだけだとだめ。
[vo.vdpau]
hwdec=vdpau
[vo.vaapi]
hwdec=vaapi
[vo.xv]
hwdec=no
#hwdec=vaapi #は早送り等で不具合 #auto #別途組み込み要す 14.04。#hwdec=auto # no # autoは役に立たない場合あり。現状明示指定すべき。

[default]
hwdec-codecs=h264,vc1,wmv3,mpeg1video,mpeg2video #hevc,h265 は適当(非対応GPU。コマ落ちGPUの場合、voを(変えた)ほうがいい。

#フレームドロップ
framedrop=decoder+vo
#framedrop=no #ドロップさせない。
#deinterlace=yes #通常autoでいい。

##### 音声 audio settings
volume=100
# Specify default audio driver (see#--ao=help for a list).
#ao=jack jack設定済み&起動済みの場合。#
ao=alsa #デフォルト(pulse)でいい。#audio-buffer=10 # ボリューム #softvol=yes #softvol-max=200 #ノイズ注意

# Disable softvol usage, and always use the system mixer if available.
#softvol=yes #システムボリュームをあげると音声ノイズがのるので無効にした。
# Scale audio tempo by playback speed without altering pitch. (By default does nothing if playback speed is not changed. May introduce artifacts.)

##af=scaletempo
# 5.1はデフォルトではない。and upmix/downmix audio with a different format.
audio-channels=2.0 #audio-channels=2.1 #audio-channels=5.1

#2015-11-07オフにした。あんまり関係ない。デフォルトでOK s16le なので無効にすべき。音楽プレイヤーとしてハイレゾ再生する場合もそのままでうまくいきます。うちでは。
demuxer-rawaudio-format=s32le
#Choices: u8 s8 u16le u16be s16le u16be u24le u24be s24le s24be u32le u32be s32le s32be floatle floatbe doublele doublebe u16 s16 u24 s24 u32 s32 float double (default: s16le)

# Disable any automatic remix, _if_ the audio output accepts the audio format. of the currently played file.
#audio-channels=empty

#
#キャッシュなどの設定、通常指定なし、デフォルトで十分

#cache-default=150000 #cache-default=5550000 大差なし150000 2147483647
#影響大
#cache=512000 #CPUが10年前でGPUが現行という組み合わせなら、めいっぱいとるといい(SWAPが発生しない範囲で)。I/O負荷がなくなるのでスムーズになるよ。
cache=1024000 #1GB #cache=2048000
#cache-secs=1500 #cache-secs=3000

# fpsを動画に合わせる correct-pts=yes


###############################################
# OSD設定 ??? なぞ
###############################################

#cursor-autohide=250
# スクリーン操作オブジェクト Luaで拡張できるみたい。サンプルあり。
#osc=yes
#フルキーボード操作が好きなら、noで。マウスでだらだらしたいなら、yes。????
#osd-font-size=40 #osd-duration=3000
#osd-duration=0         #         Integer (0 to 3600000) (default: 1000)
#osd-fractions=yes     #         Flag (default: no)
#osd-border-size=0     #300
#osd-scale-by-window=yes
#osd-level=1 #0123 1が最適。
#osd-playing-msg='FPS: ${fps}'
#osd-color=
#############
# OSD / OSC # git hubのお手本まるぱくりして、↑からさっき変えた部分。
#############
#入力値範囲は、ソースのメッセージをみて転記してみた。
osc                                     # activate on screen controls

osd-level=1                             # enable osd and display --osd-status-msg on interaction
osd-duration=2500                       # hide the osd after x ms
osd-status-msg='${time-pos} / ${duration}${?percent-pos: (${percent-pos}%)}${?vo-drop-frame-count:${!vo-drop-frame-count==0: Dropped: ${vo-drop-frame-count}}}\n${?chapter:Chapter: ${chapter}}'

#osd-font='Hiragino Maru Gothic Pro'
osd-font-size=32
osd-color='#CCFFFFFF'                   # ARGB format
osd-border-color='#99000000'            # ARGB format
osd-shadow-offset=1                    # pixel width for osd text and progress bar
#早送りとかの時に出てくるシークバーのことです。通常のコントロールではないです。
osd-bar-align-y=0                       # progress bar y alignment (-1 top, 0 centered, 1 bottom)
osd-border-size=1                       # size for osd text and progress bar
osd-bar-h=10 #max50                     # バー高さheight of osd bar as a fractional percentage of your screen height
osd-bar-w=60 #MAX100                            # バー幅width of " " "60



# 字幕オフ sub-visibility=no
# キーバインドオフ #input-default-bindings=no
input.conf  読ませて、既定値を上書きで良い。

############################################
#スクリーンショット いつのまにか、エラーになっていたので、以下でさしかえ。
############################################

#screenshot-directory= 不要
screenshot-template=~/Pictures/mpv/%F-%P
screenshot-format=png
#filename-00:24:54.993.png sキーで取得。
#ファイルネーム(拡張子なし) + 再生時間 + .png

%F-%P 以下になります。ここではPNGを指定しているので:

再生ファイル名(拡張子を取り除いた)-再生時間ミリ秒 + 指定画像フォーマット

$ mpv 再生ファイル.mp4 なら、「再生ファイル-00:00:00.454.png」
マニュアル探れば、jpgの圧縮率指定など細やかな指定もできますね。

似非FluidMotionVideo,なんちゃってです

##################
# 似非FluidMotionVideo
#以下主に中間フレームを描画するパターンの試行。重いので注意。あんまり色々やっても仕方ないです。かなり自己満足に近い世界だと思います。AMD対応GPUをもっているユーザーならWindows10でMediaPlayerClassic HomeCinnemaをblueskyさんのffdshowフィルターを通じて、FluidMotionVideoオンで再生してみれば、本来のFMVのそれなりがわかります。さてさて、どうなんでしょ?! 満足できるかどうかはユーザーの受け取り方とソースの絵作りの特性によるって気がします。
特に、この60FPSでの再生はなんだか残像感ばかりが強調されて、個人的には価値無しというかんじですが、今後ドライバが変われば違うのかな。AMD以外のグラフィックでまともな速さのGPUは所有していないのでなんともいえませんが。

#https://www.reddit.com/r/linux/comments/2u3bpw/mpv_ver_073_can_interpolate_videos_to_60fps/
#https://github.com/mpv-player/mpv/wiki/Interpolation
#https://github.com/haasn/mpv/commit/7d10c9b76f39bfd2fe606b8702b39888d117c685
#http://sheekyforums.com/thread/52247417/technology/mpv-keep-it-simple.html

#vo=opengl-hq:interpolation:glfinish
#vo=opengl-hq:scale=spline36:sigmoid-upscaling
#vo=opengl-hq:interpolation:interpolation-threshold=0.0:scale=spline36:sigmoid-upscaling
#vo=opengl-hq:interpolation:interpolation-threshold=0.9:scale=spline36:sigmoid-upscaling
#vo=opengl-hq:interpolation:interpolation-threshold=2.9:scale=spline36:sigmoid-upscaling

#999)Insane quality:意味がないほど高品質設定。意味がない。
#vo=opengl-hq:interpolation:scale=ewa_lanczossharp:cscale=ewa_lanczossoft:prescale-downscaling-threshold=1.5


こちらがmpvではオススメです。

神々は細部に宿る::やさしいinput.conf mpv.conf 追記::2020/07/19現在。 ここまでやっておいてなんですが、vo=gpu 、hwdec=no が現代のCPU/GPU環境をお持ちの方の正解です。 多少極論します。怒らないでください。HWアクセルは遅い...

試してみた!(1) Windows Subsystem for Linux ,Ubuntu on Windows

現段階の結論:遅い。今後に期待。

続き zsh:試してみた!(2) Windows Subsystem for Linux ,Ubuntu on W...
  • 遅い。遅い。遅い。(うちだけかも。期待値が高いせいかも。)
  • UTF-8
  • zshは動くが一部機能が有効にならないみたい。bashのほうがよさげ。
  • いきなり「#」
  • 今の段階では、c:/........./AppData/Local/lxss/root に、.rcfiles を設置
  • 日本語UTF-8テキストで化けたり化けなかったり。
  • ふつうに、apt install , apt-get install でパッケージ追加できる。
  • ジャンクション、シンボリックリンクがだめ。


c:/.......................AppData/Local/lxss/rootfs/bin
UoW@/bin
だいたい標準で150個ほどコマンドが入ってる。一部追加した状態のリスト。10日ほど使っている自分のubuntu16.04betaでは160個ほどなので、だいたい全部入っていると考えていい。ちゃんと動けばけっこう困らないと思います。

あ、Perlが入ってないですね。いれなきゃ。 /usr/bin/perl

ls -x  最後に列表示を追記。

bash              binlist.txt    bunzip2              busybox
bzcat              bzcmp         bzdiff              bzegrep
bzexe              bzfgrep         bzgrep              bzip2
bzip2recover          bzless         bzmore              cat
chgrp              chmod         chown              chvt
cp              cpio         dash              date
dbus-cleanup-sockets  dbus-daemon    dbus-uuidgen          dd
df              dir         dmesg              dnsdomainname
domainname          dumpkeys         echo              ed
egrep              false         fgconsole              fgrep
findmnt              fuser         fusermount              grep
gunzip              gzexe         gzip              hostname
ip              kbd_mode         kill              kmod
less              lessecho         lessfile              lesskey
lesspipe          ln         loadkeys              login
loginctl          lowntfs-3g     ls                  lsblk
lsmod              mkdir         mknod              mktemp
more              mount         mountpoint              mt
mt-gnu              mv         nano              nc
nc.openbsd          netcat         netstat              nisdomainname
ntfs-3g              ntfs-3g.probe  ntfs-3g.secaudit          ntfs-3g.usermap
ntfscat              ntfsck         ntfscluster          ntfscmp
ntfsdump_logfile      ntfsfix         ntfsinfo              ntfsls
ntfsmftalloc          ntfsmove         ntfstruncate          ntfswipe
open              openvt         pidof              ping
ping6              plymouth         plymouth-upstart-bridge  ps
pwd              rbash         readlink              red
rm              rmdir         rnano              run-parts
running-in-container  rzsh         sed              setfont
setupcon          sh         sh.distrib              sleep
ss              static-sh      stty              su
sync              tailf         tar              tempfile
touch              true         udevadm              ulockmgr_server
umount              uname         uncompress              unicode_start
vdir              which         whiptail              ypdomainname
zcat              zcmp         zdiff              zegrep
zfgrep              zforce         zgrep              zless
zmore              znew         zsh              zsh5

無意味な検証:ubuntuでWindows10x64をマウントして、UoWの標準コマンドを実行してみる。(16.04下)

/media/ORE/W10x64/Users/ORE/AppData/Local/lxss/rootfs/bin
$ ./ls | ./grep ntfs | ./sed 's|ntfs|エヌティエフエス|'



lowエヌティエフエス-3g
エヌティエフエス-3g

エヌティエフエスwipe


期待通り。14.04LTSバイナリなのでこの手のコマンド互換がなければおかしいですもんね。というか、バイナリは、ubuntu.comに取りにいっている(apt)ので、同じじゃないとおかしい。

sedサイズをみてみるとこんなかんじ。ほんとうに同じだった。diffでも同じなので、同じ

●16.04beta2
-rwxr-xr-x 1 root root 73424  2月 12 09:20 sed
●UoW 14.04LTS相当

-rwxrwxrwx 1 ore ore 73352  4月 11 02:17 sed
●Linux Mint 17.3(14.04LTS相当)
-rwxr-xr-x 1 root root 73352  2月 13  2014 sed

■速度?! 今後に期待しよう。

バイナリそのままで、POSIX⇔WIN がどの程度なのか。これが気になるところ。期待は(現時点)では裏切られた。おっせーーーーーーーー!!

マイクロソフトのシニアなんちゃらがいうほど速くない。いうほど速くない。ぜんぜん速くない。まったく速くない。へそが茶を沸かすほどだ。

がんばれ、マイクロソフト。

以下余談:

最近、AMDの5000+という10年前の過去の遺物CPUを生ubuntuでときどき使っているが、それと比較して、ファイルのリストを返して 来るっていう単純作業ですら待ち時間差が体感で大きい。

ちなみにAMD Athron 64 X2 5000+ は、Intel Core i7-4790K(4.00GHz)のだいたい1/10の速度である。笑) (Xは起動するが作業はターミナルで、放置で動かしています。RDPがうまく ないのでSSHで)。このマシンにWin10は?! 動くだろうけど触れない(気分になれない)と思う。

仮想マシン(VirtualBox)より速い。が、が、が、Xを起動せずに()、ターミナルのまま動かせば、Virtualboxのほうが速そう。(笑) いや、速いと思う(たぶん)。

■中間総括

これが今後速くなるかどうかは、マイクロソフトの技術力が試される。ubuntuが14.04LTSだからとかいうのは関係ないだろうな。

■たいてい動くんじゃないの(だいたい合ってる)

LANGは日本語に設定して、と。ドットファイルを持ってきて、と。

.zshrc(日々使っているもの)のいくつかの機能が有効にならない。まだまだらしい。便利な機能が使えない。
.bashrc(同じく)。エスケープシケーンスが違うらしく、色が違うな。ま、いいか。趣味が悪くなってしまったが訂正はしない。そのままの互換性が確保されるのだから、放置しておけば、マイクロソフトが治すはず。

Xはいらんけど、ターミナルは、Windows側が高機能になるか、なんか使いやすいのがでてきてほしい。マニアックなのは僕はいらん。→これは期待するのは間違いだな。開発しないと言っているし。この出来だとないな。

■文字コード

心配なのは、文字コード。どこまでいっても文字コード。UTF-8で空気のように扱える環境がほしい。
つまり、文字コードを意識しないでPCは使いたいのだ。

→UTF-8のターミナルとして起動される。zshでは化けて、bashでは化けないとか現象的にはあるが、過渡期だからと思うので、気にしない。

UTF-8だと正常で、SJIS、EUCで文字化けするプロンプト文字列設定にしてある.zshrcなので,utf-8でなのがよくわかってよろしい。

同じテキストページャーでも、Zshから起動すると化けて、bashから起動すると化けない日本語文書とかけっこうあって、よくわからん。 zshのせいかも。というか、同じ挙動でないのはおかしいので。そのうち修繕されるだろう。

■バイナリはどこにとりにいっているのか

ubuntuなので、/etc/apt のリストを書き換えれば違うんだけど、いまんところ、UKのCanonical管理のubuntuサーバーにつなぎにいって落として来ている(IPアドレス)。

単にデフォルトのまま。北陸先端科学技術大学院大学とか、筑波大学とか、KDDIを指定したら国内からになるんだろうな。source.list のサーバ名を書き換えるだけ。

つまり、特殊なバイナリではないってことはわかった(疑ってごめんよ)。本当にubuntu上でコンパイルされたパッケージがそのまま動く。ファイルの中身は精査していないけれど。 上記で確認した。

以下、列記リスト /bin
UoW@/bin
-----------------------------------------
bash .. 略 zsh5

モニターの縦と横を、マウスで切り替える。横着モード


新規にターミナルを開きます。CTRLALTT 
sudo apt install xrandr
Cinnamonのホットコーナーで画面のように設定すれば。コマンド叩かなくてもOK。metacityならショートカットキーをわりあてる機能がarandrには標準でありますが、当方、metacityでないので。
右下に割り当てています。

作成するコマンド switchmonitor.sh でも縦横トグル.sh でも。お好きなように。
gedit ~/bin/switchmonitor.sh においておけばいいかと思います。5行ですね。exitまで切り貼り。
考えてみれば、switchrotate.shじゃないと意味が通らないですね。モニター入れ替えるわけじゃない。ま、いいか。
初期案:廃止

CUIが役に立つ第2案 tateyoko ⬅ オススメ


便利だったので新規2案をおすすめします。 gedit /home/username/bin/tateyoko
安直に tateyoko で切り替えます。exitまでを切り取って貼り、実行属性をつけてください。

使い方::
端末を開いて、キーボードで tateyoko エンターの繰り返しです。
#!/bin/bash -x
#@ 1台だけならほとんどの場合、次のコマンドだけでOKのはず。
#@ 1920x1200 と1920x1080は共通でいける。ZiSH作成
if xrandr -q | grep -E ' connected primary 1..0x1920' ; then
    xrandr -o normal
else
    xrandr -o left
fi
exit

<<作業メモ
#if xrandr -q | grep "CRT1 connected"; then
#if xrandr -q | grep -E 'DVI-0 connected primary 1.00x1920' ; then
#if xrandr -q | grep -E 'DisplayPort-0 connected primary 1.00x1920' ; then
#if xrandr -q | grep -E 'VGA-0 connected primary 1.00x1920' ; then
#  xrandr --output LVDS --off
#  xrandr --output CRT1 --off
#  xrandr --output CRT1 --auto

#xrandr --output VGA-0 --off --output DisplayPort-0 --off --output DVI-0 --primary --mode 1920x1200 --pos 0x0 --rotate left
#xrandr --output VGA-0 --off --output DisplayPort-0 --off --output DVI-0 --primary --mode 1920x1200 --pos 0x0 --rotate normal

作業メモ
Cinnamonのホットコーナーで画面のように設定すれば。コマンド叩かなくてもOK。metacityならショートカットキーをわりあてる機能がarandr には標準でありますが、当方、metacityでないので。
右下に割っています。 
他のフレイバーの方は、コマンド叩くか、ショートカットを割り当てるか、オブジェクト(アイコン.desktop)にしてデスクトップにおいてください。マウスジェスチャーってなかったかな?!
そう煩雑に使うものではないので、ま、いいか。

2台以上の複数モニターの場合は、縦横混在では個別にしないとうまくないので、必要に応じて、

xrandr --output VGA-0 --off --output DisplayPort-0 --off --ou
tput DVI-0 --primary --mode 1920x1200 --pos 0x0 --rotate left

みたいなコマンドをモニターごとに設定するといいと思います。xrandrではじまる個別行でもいいし、一行で書いても同じです。今設定中の画面の絵は、サブ環境なので1台のみしか繋いでいません。

煩雑切り替えだとめんどうなので、コマンドシェル( CTRL+ALT+T)を起動して、tateyoko と打つだけにしたほうがいいですね。マウスは使いにくい。いいかんじになりました。

おまけ 何が書いてあるかというと、

xrandr -q でどういう環境か調べる。
接続している モニターがDVI-0なので、それが接続されていて、かつ縦(Left/Counterclockwise/左/ポートレイト)状態(1200が横幅です)になっていれば、ノーマル(ランドスケープ、横)に切り替える。横ならば、縦にする。トグルで動作します。

-o を使うことで一括、手抜きで書けます。 楽ちん。


4k/UHD の場合/ tateyoko / landcape-portrait.sh

#!/bin/bash
#@ for 4K/UHD . to change landscape/portrait.
#@
if xrandr -q | grep -E ' connected primary 2160x3840' >/dev/null ; then
xrandr -o normal
else
xrandr -o left
fi
exit



ubuntu in coming to Windows10. Ubuntu on Windows!!

“Ubuntu on Windows”搭載「Windows 10 Insider Preview」Build 14316が160406に来たぞ。

http://poor-user.blogspot.jp/2016/04/1-windows-subsystem-for-linux-ubuntu-on.html

 

以下の記事はほぼ無意味に。

たいてい動くんじゃないのリスト

apt, ssh, rsync, find, grep, awk, sed, sort, xargs, md5sum, gpg, curl, wget, apache, mysql, python, perl, ruby, php, gcc, tar, vim, emacs, diff, patch...

なんかほとんど困らない。
avconv
time \ avconv -hwaccel vdpau -i input.mp4 -vcodec copy -acodec copy vdpau_video.mkv

こういうハードウェアアクセラレーションは無理っぽい。DXVA2に読み替えてくれるなら動くかな。 この例は、ffmpeg/avconvで、ハードウェア支援を使って、コンテナを変換するコマンドです。無意味な変換例。例文です。

■たいてい動くんじゃないの。文字コードの取り扱いが不安。超不安。


自分の日々利用しているシェルスクリプトを見渡してみると、これでOK。そのまま動くはず。zshもいれたら動きそう。zshのない人生はない。

Xはいらんけど、ターミナルは、Windows側が高機能になるか、なんか使いやすいのがでてきてほしい。マニアックなのは僕はいらん。XはサポートしないとMSの中の人が言ってた。


心配なのは、文字コード。どこまでいっても文字コード。UTF-8で空気のように扱える環境がほしい。
つまり、文字コードを意識しないでPCは使いたいのだ。

■概略と予測込の今後


名称:

  • Ubuntu on Windows . UoW なんて呼ばれるのかな?! Canonical側。
  • Windows Subsystem for Linux と現段階で呼ばれてるらしい。MS側。

時期:予測込 

もう来た。“Ubuntu on Windows”は、Windows 10 Insider Preview Build 14316 に入ってる。「ubuntu入ってる」 ほうのWindowsが来たな。

だから、以下、意味なし。実践して評価するといい。


アーリアダプタ向け:
Canonicalが14.04LTSのUoWをほどなく提供するらしい。どういう形式かは不明。Windows側の対応が必須なのでCanonical単独では動作しないので、どうなるんだろう。すでにlxなんちゃとかいうのがリリースされているので、それか、それなのか。それなんだろうな。よくわからん。


ふつーの人向け:
7月あたりに、MSのストア経由で導入できる。周年アップグレードの一部ってことかも。もっと早期にでるという記事もみた。4月中か。Windows10のアレに含まれるみたい。テスト参加しないとだめだけど。


普通の人向け:
導入しません。何に使うものかよくわかりません。知ってて損はないけれど。

■どう動くのか逆WINEですよね。いうなれば。


だいたいこれまでの自分が試したソリューションでいえば、SFUの現代形だろうか。と思ったらそれも違うな。SFLだっけ。略称はこんなかんじになるのかな。SFUはShellがあれだしいきなりなんか使いにくい。なじめない。いまどきのLAMP時代にはちょっとアレなので実際使っているひとはいなかった気がする。コマンドはGNUだよね。やっぱ。SFUはCygWinと同様、独自コンパイルであることにかわりはないので、SFUの現代形といういうのは間違っているな>自分。

何度も書いてきたが、技術はあれとして、使い勝手はディスコンのCoLinuxが今回の方法に近いと想像できる。CoLinuxは開発が再開しないか気になっていた。これかなり速いんだけどそれを上回らなかったら、笑い者なのでまぁ、たぶんだいじょうぶ。

仕組み概念では「逆WINE」だろう。コンセプト的にはそうだ。CoLinuxと違うのは、今回の仕組みを実現するのにマイクロソフトのリソース(ソースと人)が使えるということで、たぶんとても高速に動くと思う。WINEが20年かけた道をざくざくと走破する。マイクロソフトが魔法といっていたけど魔法じゃないんじゃない。コンピューティングが通ってきた道そのものだ。

「bashが来る」ってのは、シンボリックな表現であって、sed、findなんかも最初から来る。というか、いろいろ読んでいると、アプリ導入コマンド aptがサポートされるので、そのままいれちゃえばいい。動かないものは、Windows側で対応される、されるべき。魔法なら特にね。

■カンファレンスの絵とその他から:推察してみる


発表されたのは、
ubuntu14.04 LTSベース。夏までの実装で16.04LTSベースになる。Canonical担当者のブログの言をまとめるとそういうことだ。ubuntu16.04LTSはちなみに現在ベータ2。4月下旬にラウンチされる。

気になるのは、Xは?!ってところだけど。たぶん時間の問題だし、自分の場合生で動かなくてもいい。そこまでできれば、MSすげーなんだけど。たぶんいろいろ面倒なことが多いのでやらないんだろうな。(やらないことで確定している様子)


http://blog.dustinkirkland.com/2016/03/ubuntu-on-windows.html


ところで、
apt-get が非推奨になりつつある中、aptがあればだいじょうぶ。aptがあるということは背後でdpkgが動いているので、パッケージ管理システムが動いている。たぶんぜんぱんに大丈夫。マイクロソフトがプレゼンで「BASHが来るよ」と大見出しにしたので、それがシンボリックなコピーだと気づかない人がメディア含めて多すぎる感があるのかも。