ふと思い立ってしまって、ようつべとかニコとかからFLV DL → MP3変換
さらにはID3タグやらアートワークやら歌詞やら埋め込んでみようかという
至れり尽くせりなソフトを作ってみることに。
とりあえず FLV の DL は結構簡単。
動画が表示されるページのソース除いて
Scriptタグの "var fullscreen〜" て書いてある行から
t=HOGEHOGE を取得して
http://youtube.com/get_video.php?video_id=XXX&t=HOGEHOGE
にアクセスしてやると、get_videoと言う名の FLVファイルが返ってくるから
これを適当にどっか保存しとく。
次が問題('A`)
FLVからMP3抜き出すソフトなんて 大体、中で ffmpeg とかにキックかけて
結果もらってるだけなんだろうけど MP3 取り出すだけで ffmpeg 同根するのも
アレだったから、適当に バイナリ覗いて格闘すること2時間ちょっと。。。
キタコレΣ(゚∀゚*)
とりあえず書いていいのかわかんないけど FLV フォーマットまとめ。
先頭 9Byte は多分固定で これはFLVファイルですよ〜と宣言するヘッダ
詳しい仕様は仕様書見たほうがいいだろうけどとりあえずそんな感じ。
次の 4Byte も固定で 0x00 00 00 00。
こっからメタ・データ開始。
先頭の1バイトで内容把握
0x08 = Audio、0x09=Video、0x12=メタデータ?
今回はMP3だけ必要だからそれ以外のデータは読み飛ばし。
データの構造はこんな感じ↓
DataType - 0x08 | 0x09 | 0x12 (1Byte)
DataSize - 0xXX XX XX (3Byte)
TimeStamp - 0xXX XX XX (3Byte)
Space(?) - 0x00 00 00 00 (4Byte)
Data - 可変
Footer - 0xXX XX XX XX (4Byte)
多分これであってる?FLVの仕様書って確かMP3取り出す為とかに
使っちゃだめだった気がするからそういうことに使わない人は
ちゃんと仕様書見たほうがいいです。
んで、Audioのデータは先頭1バイト目にビットレートとか圧縮方式とかが入ってる。
(byte And 0xf0) >> 4 で求めた値が 2 だったらMP3だから
特に何も考えずに先頭から読み出せばOK。それ以外はまた今度。
これで出来上がったファイルはタグ情報も何にも無い生のMP3。
このままだとファイルプロパティとかで再生時間見たときに
ビットレートとファイルサイズとかで勝手に計算するから
全くあてにならない時間が表示されてますね。
ID3タグでTLENとか設定してやればちゃんと表示されます。
ひとまず今の進行状況↓


まだまだできてない('A`)
to Top▲