Open5

音声の勉強

shira79shira79

m4aを馴染みのあるmp3に変換してみる。実際mp3のほうが汎用性が高いらしい。

変換には、動画と音声を記録・変換・再生するためのツールであるffmpegを使う。

https://ja.wikipedia.org/wiki/FFmpeg

https://ffmpeg.org/ffplay.html

homebrewからインストール。

$brew install ffmpeg

$ffmpeg -version
ffmpeg version 5.0 Copyright (c) 2000-2022 the FFmpeg developers
-- 略---

$ffmpeg -i ~/Desktop/sample.m4a -ab 256k ~/Desktop/sample.mp3

コマンドから再生してみる。

ffplay ~/Desktop/sample.mp3
shira79shira79

ついでにHLS用のファイルにも変換してみる。

HLS(=HTTP Live Streaming)は、Web上で動画や音声のストリーミング配信・再生を行なうためのプロトコル。HTTPベース。

https://e-words.jp/w/HLS.html#:~:text=HLSとは、Web上,で対応している。

動画や音声を10秒ごとのMPEG-2 TS(Transport Stream)形式のファイルに分割し、再生順などを記したプレイリスト形式のインデックスファイル(.m3u8ファイル)を作成する。

早速変換してみる。

ffmpeg -i sample.mp3 -c:a copy -f hls -segment_time 60 -hls_segment_filename "sample%5d.ts" sample.m3u8

sampple.m3u8がインデックスファイルで、**.tsが一定間隔で分割されたファイルたち。

shira79shira79
ffmpeg -i baby.m4a -c:v copy -c:a copy -f hls -hls_list_size 0 -hls_time 5 baby.m3u8

-hls_timeでセグメントごとの秒数を指定。

ffplay baby.m3u8で再生されてる様子も見れる。

[hls @ 0x7fb33271e980] Opening 'baby2.ts' for reading    0B f=0/0
[hls @ 0x7fb33271e980] Opening 'baby3.ts' for reading    0B f=0/0
[hls @ 0x7fb33271e980] Opening 'baby4.ts' for reading    0B f=0/0
[hls @ 0x7fb33271e980] Opening 'baby5.ts' for reading    0B f=0/0
[hls @ 0x7fb33271e980] Opening 'baby6.ts' for reading    0B f=0/0
[hls @ 0x7fb33271e980] Opening 'baby7.ts' for reading    0B f=0/0
[hls @ 0x7fb33271e980] Opening 'baby8.ts' for reading    0B f=0/0
[hls @ 0x7fb33271e980] Opening 'baby9.ts' for reading    0B f=0/0
[hls @ 0x7fb33271e980] Opening 'baby10.ts' for reading   0B f=0/0
shira79shira79

m3u8の中身を見てみる。

cat baby.m3u8

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:5
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.013333,
baby0.ts
#EXTINF:4.992000,
baby1.ts
#EXTINF:5.013333,
baby2.ts
#EXTINF:4.992000,
baby3.ts
#EXTINF:4.992000,
baby4.ts
#EXTINF:5.013333,
baby5.ts
#EXTINF:4.992000,
baby6.ts
#EXTINF:4.992000,
baby7.ts
#EXTINF:5.013333,
baby8.ts
#EXTINF:4.992000,
baby9.ts
#EXTINF:1.493333,
baby10.ts
#EXT-X-ENDLIST

EXTは共通の頭文字。
M3Uはm3u というプレイリストを格納するファイルフォーマットでそれのutf-8に対応したものがm3u8。

https://ja.wikipedia.org/wiki/M3U

M3Uファイルは、一つ、または複数のメディアファイルのパスをプレーンテキスト(テキストファイル)で記述したものである。このファイルを、".m3u"または".m3u8"の拡張子で保存する。 M3UファイルのエンコードはWindows-1252の場合が多いものの、CP932に対応しているものも存在する。エンコードがUTF-8であることを明示するとき、拡張子M3U8を使用する。

EXT-X-VERSION :バージョン、
EXT-X-TARGETDURATION :セグメントファイルの秒数
EXT-X-MEDIASEQUENCE :何番目のコンテンツか
EXTINF :セグメントの秒数長さとファイルの位置