ラベル MultiMedia の投稿を表示しています。 すべての投稿を表示
ラベル MultiMedia の投稿を表示しています。 すべての投稿を表示

2015年8月5日水曜日

MM: ハイレゾ音源データからCD形式への変換 - ちょっと面倒だけどフリーで高品質の SRC を使ってみた編 -

ハイレゾ音源データを,利便性のためにCDプレイヤーで聞きたい(音質がCD相当になるのは承知の上) という自分のニーズに応えるため,その方法をいくつか記事にしてきた.

今回は,CDの枠内でよりよい音質になるよう,サンプルレート変換(SRC: sample rate conversion)に気を使ってみる.windows 前提だが,他の OS でも参考位にはなるかもしれない.

概略,次のような手順だ.
  1. ssrc でサンプルレート変換 (*->44.1kHz)
  2. ffmpeg でチャネルをミックスダウン(5.1ch->2ch)
  3. ssrc でビット数を変換(*->16bits)
  4. ステップ間で,waveshop で保存し直して次のステップで読み込み可能にすることあり.
では,行ってみよう.

2015年2月9日月曜日

MM: ハイレゾ音源からCDを作成: コマンドライン編(ffmpeg を使う場合)

今回は,マルチチャンネルのハイレゾ音楽データを,ffmpeg をコマンドラインで使って,CD形式(2ch/44.1KHz/16bits)の wav データに変換してみる.

以前の記事「MM: ハイレゾ音源からCDを作成(データは PCM, OS はwindows の場合)」で,シェアウェアの xrecode II を使ってハイレゾ・マルチチャネルの flac を CD 形式の wav に変換する方法を述べた.今回はフリーウェアの ffmpeg を使う.やってみれば別に難しいものでもないですよ.
  1. マルチチャンネル・ハイレゾ音楽データの入手
  2. ffmpeg の入手とインストール
  3. マルチチャンネル・ハイレゾ→CD形式 wav への変換
  4. 補足
ずばり要約すると,
ffmpeg.exe -i example1.flac -bits_per_raw_sample 16 -ac 2 -ar 44100 example1.wav
で変換できるという話である.

では,行ってみよう.

2012年10月23日火曜日

fb2k: foobar2000 メモ

foobar2000 は windows 用のサウンドプレイヤー.
とてつもなくカスタマイズできる.
ASIO や WASAPI などもサポート可.

その設定ガイドを書いてみる.主に自分のメモ用.

情報自体は特に目新しくはなく,参考サイトにのっているものばかりではあるが,現状で自分の設定に必要だったもののまとめ.

まずは,日本の foobar2000 wiki に,
本体のインストール
基本操作等のチュートリアル
が述べられている.

[foobar2000 メモ トップに戻る]

参考:
hydrogen audio の foobar2000 wiki ページ
日本の foobar2000 wiki ページ
日本の foobar2000 wiki ページもう一つ
クラシックに特化したすごい設定

2010年7月3日土曜日

ALSA: samplerate_best

I am using MPD (music player daemon) for my music jukebox: a sheevaplug with an Audiophile USB attached to it.
On Ubuntu, the Audiophile USB is recognized as:

$ cat /proc/asound/cards
 1 [tm             ]: USB-Audio - Audiophile USB (tm)
                      M-Audio Audiophile USB (tm) at usb-orion-ehci.0-1, full speed

The following configuration is working well.

/etc/asound.conf:
defaults.pcm.rate_converter "samplerate_best"
pcm.!default {
        type plug
        slave.pcm hw
}

in /etc/mpd.conf:
audio_output {
        type                    "alsa"
        name                    "M-Audio Audiophile USB"
        device                  "plughw:1,0"     # optional
}

I am not very sure, but it seems that alsa is correctly avoiding needless sample rate
conversion.

Playing 48Khz source:
$ cat /proc/asound/card1/stream0
M-Audio Audiophile USB (tm) at usb-orion-ehci.0-1, full speed : USB Audio

Playback:
  Status: Running
    Interface = 2
    Altset = 5
    URBs = 2 [ 1 1 ]
    Packet Size = 192
    Momentary freq = 48000 Hz (0x30.0000)
...

Playing 44.1Khz source:

$ cat /proc/asound/card1/stream0
M-Audio Audiophile USB (tm) at usb-orion-ehci.0-1, full speed : USB Audio

Playback:
  Status: Running
    Interface = 2
    Altset = 5
    URBs = 2 [ 1 1 ]
    Packet Size = 192
    Momentary freq = 44100 Hz (0x2c.199a)
  Interface 2
...

And an MPD client, Minion, makes MPD manipulations so comfortable. :-)
The only thing I badly want for MPD is practical cue sheet support :-(



2009年8月10日月曜日

MM: BD-R での BDAV にはなるべく UDF 2.6 を!?

BDAV のディスクを作るとき,あとからムービーの変更や追加を行いたくなることがある.そんなとき,実はマルチセッションは使えない建前がある.Blu-ray Disc Association 公式サイト(JP) の 「公開仕様」のページ にリンクのある UDF 2.6 仕様書(PDF) を見ると,p.153 に, BDAV と BDMV ではマルチセッション使うなと書いてある!
これに関連して,実際に起こった出来事:
  1. BD-R に UDF 2.5 で BDAV を作った.Cyberlink Power2Go Ver.6.0.0.2325 パイオニアBDドライブ付属版
  2. その後,Cyberlink Power2Go 上からいくつかのファイルを上書きで書いてみた.
  3. PC 上で,Windows XP SP2 (+ Cyberlink のソフト一式入れたときに入ったと思われる UDF のファイルシステムドライバ)では,古い状態が見える.エクスプローラでね.
  4. Power2Go でその BD-R のセッションをインポートすると,Power2Go のエクスプローラもどきから新しい状態が見える(が,ファイルの中身にはアクセスできない).
  5. PS3 (システムソフトウェア 2.80) 上では,古い状態が見える.
ところが,同じことを BD-RE でやると,PC からも PS3 からも新しい状態が見える!
BD-R でも BD-RE でも,Power2Go の操作は同じであり,ディスクの空き容量が新ファイルを追加した分だけ減っているのも同じなのに.なーぜー見えないんですかー.
  • PS3 でもデータディスク扱いならマルチセッションを認識したりするのだろうか?
  • UDF 2.6 では Logical OverWrite (LOW) or Pseudo OverWrite (POW) がサポートされる (p.152, p.162) ので,それに則っていれば多分問題なく編集できるのだろう.
  • p.159 に,"BDAV", "BDAV1", "BDAV2", "BDAV3", "BDAV4" はBDAV Application 用に reserved だとある.BDAV に関しては,これを利用して何とかする方法ないのかな?
BDAV on BD-R は UDF2.6 で作ることにしてみよう.PS3 でももちろんちゃんと読めるし.
ちなみに,Power2Go から UDF2.6 で焼こうとすると,POW のフォーマットしますみたいなメッセージが出る.
UDF2.5 のときはその手のメッセージは出なかった.
これまで UDF2.5 で作りまくった分どうしよう‥.

  • 2012/2/6 修正
    • リンク切れ修正:Blu-ray Disc Association 公式サイトの構成が変わっていたのに対応

2008年5月1日木曜日

MM: ts でドロップフレームがある場合のエンコ時の音ズレ対策(妥協案)

※以下,内容古い.このテのものの扱いは, この辺 や Kenのムービー計画:動画狂コーナー に詳しい.aac を wav に入れるのは fakeaacwav でできる.

圧縮対象の ts ファイル中で,何らかの理由でドロップフレームがあると,先日紹介した方法 でエンコしたとき音ズレしてしまう.

ぐぐっても aac を再圧縮なしで行ける方法が見つからなかったので,そこだけはあきらめる.
1. mpeg2 の時間同期をちゃんと解釈できるプログラムに食わす.例:多分TMPGEncのどれかや,nero vision. その際,ts あるいは aac をまともにうけつけないものなら,予め音声が mpga 等の ps に vlc 等で変換しておく.
2. 上記プログラムで,huffyuv 等の可逆コーデック + linear pcm で avi 化.
3. 上記中間 avi から,お好きに圧縮.

中間ファイルの手間もさることながら,aac を展開・再圧縮するのがとても残念です.
なんとかならないだろうか.



2008年4月30日水曜日

MM: PS3用にH.264で動画を圧縮(インタレ保持)

手順だけメモ.前提となる各ツールのバージョンとかはちゃんと確認していない.古すぎると多分ダメ.

MPEG-2 TS のファイルがある場合.仮に a.ts とする.

まず,DGIndex(DGMPGDec 中のプログラム) で .d2v と音声トラックを作る.
仮に m.d2v としておこう.
コケるようなら,予め ts に mpeg2repair をかけておく.
mpeg2repair はフリーだが,1.0.1.5 より前のバージョンでは期限がどうこう言われて使えなかったりするので注意.
DGIndex で ts を開いた際,ストリームの PID を指定する必要がある場合がある.やり方は こちら を参照.

.d2v ができたら,AVISynth -> x264 に流し込む.具体的には,m.avs を用意し,m.bat を走らせる.現時点(20080430)での設定は次の通り.冗長だったり矛盾してたりはあるやも.
[m.avs]
# --------------------------------------------------------------------------------
PPath = "C:\Program Files\AviSynth 2.5\plugins\"
VFPPath = "C:\DGMPGDec\"
LoadVFAPIPlugin(VFPPath + "DGVfapi.vfp", "D2VSource")

D2VSource("m.d2v")
# Top Field First
AssumeFrameBased().ComplementParity()
FlipVertical()
Crop(0,0,1440,1080,align=true)
ConvertToYV12(interlaced=true)

return last
# --------------------------------------------------------------------------------

DGVfapi のせいなのか,縦(垂直) 1080 の元ファイルを読み込むと,縦 1088 で出てくる.
AVIUtl で開くと下に 8 ピクセル分余計なものが付いているようなので,素直に上から 1080 ピクセルを Crop で抜き出している.1088 のままだと PS3 が非対応のデータと言って再生してくれない(ファーム v2.30).横(水平)が 1440 か 1920 かはソースによる.横 1440 なら,この次の x264 のオプションで --sar 4:3 を入れる(→ARは1440*(4/3):1080=16:9).
Crop 呼び出し時に align=true はどっちでもいいのだろう.速度だけの問題?よくわからない.

次に,キャプチャした HuffYUV + wav(aacストリームを内包) な .avi がある場合.仮に m.avi とする.
このときは,AVIUtl でカット・結合して,wav は ext_bs で aac を抜き出しておく.映像成分は音声なしの .avi にしておいて,次のような AVISynth スクリプトで読み込む.
[m.avs]

# --------------------------------------------------------------------------------

OpenDMLSource("m.avi")
# Top Field First

AssumeFrameBased().ComplementParity()

ConvertToYV12(interlaced=true)


return last

# --------------------------------------------------------------------------------
AVIUtl のプロジェクトファイル (.aup) を読み込んだ方がいい時もあるかもしれない.

いずれにせよ,読み込んでインターレース保持で YV12 に変換すればいいんである.
なお,TFF (TopFieldFirst) か BFF (BottomFieldFirst) かは,AVIUtl の 60fps 読み込みなどで確認してからにするべし.

さて,.avs が用意できたら,次のようなバッチファイルを走らせる.

[m.bat]
rem --------------------------------------------------------------------------------
echo off

rem PS3 再生を目的とした設定.インタレ保持.
rem 基本的に,x264 --longhelp の順.

set INAVS="m.avs"
set OUT264="m.264"

rem ********************************************************************
rem Frame-type options
set OPT_F1=--keyint 300 --min-keyint 15 --scenecut 75 --vbv-maxrate 25000 --vbv-bufsize 62500
set OPT_F2=--bframes 1 --ref 3
set OPT_F3=--deblock -3:-1
set OPT_F4=--interlaced
set OPT_F=%OPT_F1% %OPT_F2% %OPT_F3% %OPT_F4%

rem ********************************************************************
rem Ratecontrol
set OPT_R1=--crf 22
set OPT_R2=--qpmin 12 --qpmax 28 --qpstep 8 --qcomp 0.8
set OPT_R=%OPT_R1% %OPT_R2%

rem ********************************************************************
rem Analysis
set OPT_A1=--me umh --merange 16 --subme 6 --b-rdo --bime
set OPT_A2=--no-fast-pskip --no-dct-decimate
set OPT_A3=
set OPT_A4=--deadzone-intra 4 --deadzone-inter 8
set OPT_A5=--cqm jvt
set OPT_A=%OPT_A1% %OPT_A2% %OPT_A3% %OPT_A4% %OPT_A5%

rem ********************************************************************
rem Input/Output
set OPT_IO1=--sar 4:3
set OPT_IO2=--level 4.2
set OPT_IO3=--threads 1 --progress
set OPT_IO4= -o %OUT264% %INAVS%
set OPT_IO=%OPT_IO1% %OPT_IO2% %OPT_IO3% %OPT_IO4%

rem ********************************************************************
set OPT_ALL=%OPT_P% %OPT_F% %OPT_R% %OPT_A% %OPT_IO%

echo %OPT_ALL%

c:\bin\x264.exe %OPT_ALL%
rem --------------------------------------------------------------------------------

--sar は前述のとおりソースによる.
この x264 のオプション設定は,--crf 18 くらいを念頭においているので,より大きな crf 値(より低いビットレート)ではあまり効率が良くないかもしれない.
ageha さんのところ によると,avc qp 18 == asp qp 2, avc qp 24 == asp qp 4 ということになる.
Xvid で HD の動画をエンコードする際,自分の伝統としては q=2.0 を使ってきていたから,そのままいけば x264 では qp 18 なのだろうが,いかんせんサイズが大きすぎる.
ちなみに,crf は柔軟で賢い qp 位のつもりで使っているが,いいのかな.
deblock を弱めてあるのは,確かバンディングを消すためだったと思った.昔の試行錯誤を系統的に整理していないので,オプション類の設定の根拠がよくわからんのです.

以上のような設定で,手持ちの 2 GHz 前後のマシン群ではエンコード速度が 2.5fps を超えることがないのがなんとも.
ちょっと重すぎ.コアがいっぱいあったら --threads を増やせばいいのだろう.

最後に,できた m1.264 と,音声の aac を
mp4box --fps 29.970030 -add m1.264:par=4:3 -add m1.aac:delay=-398 -new m.mp4
のように mux すればできあがり.
ただ,delay の指定の仕方とほんとに効いてるのかがよくわからない.
あと,音ズレについてまだ経験が少なくてよくわからない.
まとまっているところがあるようなので参考にしたい.

色空間はよくわからないでやってる.要調査.

なお,ツール類は, videohelp がよくカバーしているようだ.



2007年8月11日土曜日

MM: 携帯動画の変換(mp4へ)

以前の記事にも書いた携帯で録画した動画を何とかするのの続き.
YAMB は MP4Box のフロントエンドであるらしく,Options->General->MP4Box->View or Edit MP4Box Command Line. にチェックを入れると,どうやって MP4Box を呼び出しているかがわかる.
これを調べると,次のようなバッチファイルでいけそうだ.

"C:\Program Files\YAMB\MP4Box.exe" -avi 1 "%~f1"
"C:\Program Files\YAMB\MP4Box.exe" -raw 2 "%~f1"
"C:\Program Files\YAMB\MP4Box.exe" -add "%~d1%~p1%~n1_track1.avi" -add "%~d1%~p1%~n1_track2.amr" "%~f1.mp4"
del "%~d1%~p1%~n1_track1.avi"
del "%~d1%~p1%~n1_track2.amr"

この内容でバッチファイルを作り,そのショートカットを Send To フォルダに入れておく.
すると,hogehoge.3g2 を右クリックし,「送る」で hogehoge.3g2.mp4 に変換できるようになる.
このバッチファイルは,w43h で録画すると出来る .3g2 を前提にしており,track2 が amr 形式の音声トラックだと仮定している.

バッチパラメータ( %~f1 等)についてはykr さんのページや,Windows 一般に共通なのかわからないけどMicrosoft TechNetのページなどを参照.

ちなみに,track 1 の抽出を -raw 1 とすると .cmp ファイルができる.これでも .mp4 へ mux できたが,なぜか後ろの方が再生できなかったりした..avi 経由だと問題なかった.なんで??

さて,あとは mpeg2 に変換して DVD に焼くところだ.



2007年5月4日金曜日

MM: 携帯で録画した動画

MM はまるちめでぃあのつもり.

携帯(W43HにmicroSD 2GB)で録画した動画(3gpp2 ってやつ?)を,USB で PC にもってきた.
PRIVATE\AU\DF\D_MA に入っている .3g2 な動画を再生してみると,
結構長時間連続録画したはずなのに,mpc でも vlc でも,再生時間が15秒と認識されてしまう.
いわゆる断片化ということに関連した問題らしい.

いじれそうなツールとしてYAMBを使ってみた.
YAMB からは長時間の動画として認識されたので,
動画を avi に,音声を amr に抽出して,mp4 に remux.
無事に全時間分再生できた.

もちっとワンタッチなやり方があるといいんだけど.
MP4Boxを直に使ってバッチ処理とか出来るんだろうか.