- 最新版FlowPlayer(1.14)では、プレイリストにflvファイルの「長さ」を指定すると、プレイリスト通りに連続再生してくれるようになっている(正確にいつのバージョンで実装されたかは不明)。しかも、Javascriptからの操作もできるようになったので、よりきめの細かい制御が可能にもなった。ということで、以下のようにしました。ほとんど付属のexmapleどおり。
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
var flowPlayer1;
function init() {
if (document.getElementById) {
flowPlayer1 = document.getElementById("FlowPlayer");
}
setFlowPlayerConfig();
}
// wait for the page to fully load before initializing
window.onload = init;
function setFlowPlayerConfig() {
flowPlayer1.setConfig(fpConf);
}
// Playlist.
var clips = [
{ name: 'dummy', url: 'a.flv', duration : 302},
{ name: 'dummy', url: 'b.flv', duration : 320},
{ name: 'dummy', url: 'c.flv', duration : 229}
];
// FlowPlayer configuration
var fpConf = {
playList: clips,
showPlayList: false,
baseURL: 'http://example.org/flv/',
autoPlay: true,
autoBuffering: true,
startingBufferLength: 5,
bufferLength: 10,
loop: true,
videoHeight: 480,
hideControls: false,
initialScale: 'fill'
}
</script>
- これで"fpConf"の"playList"という変数に指定された、"clips"というプレイリストの三つのファイルが連続再生される。"name"を全部ゴミにしているのは、タイトルに日本語がつかえないので。流し見するためには、是非ともシャッフル連続再生が欲しいところだが、そのためには"clips"の中身を適当なCGIで自動生成すればよい。そのようなCGIは、前もってflvファイルの「長さ」を含めた情報を知っている必要がある。手抜きでflvファイルの「長さ」を調べるのに、flvファイルへの変換に使った"ffmpeg"コマンドの出力を利用して、以下のようなRubyスクリプト(しょっぱくてごめん><)をでっちあげました。
#!/usr/bin/env ruby
require "open3"
require 'nkf'
FFM = "/usr/bin/ffmpeg"
Dir.glob("*.flv").each { |x|
a, b, c = Open3.popen3("#{FFM} -i #{x}")
head = c.read
duration = 0
if head =~ /^ Duration: 00:(\d*):(\d*)\./
duration = $1.to_i*60+$2.to_i
end
puts "#{x}\t#{duration}"
}
- 本当は、こんなtab区切りテキストファイルではなく、ファイルの実体、日本語のタイトル、アーティスト名、長さ等々の情報をDBにいれて、新曲も一発うpろーどで変換から登録もできて、Webからプレイリストを作成できて、とかにしたいところだが、大げさになるので、死ぬほどテンションが高くなったらやる!とか言ってw