この記事は、flv.jsの作者のストーリーを読んだ後に感じたことを記録したものです。
現在、ライブ配信サービスやビデオサービスに関連するウェブ開発において、最も人気のあるのは基本的にhls.jsまたはflv.jsです。なぜなら、ブラウザのネイティブビデオはこれらの形式をサポートしていないため、自分でデコードする必要があるからです。
以前は、Flashが主流で、ほとんどの問題はFlashで解決できましたが、Flashが段々と廃止されるようになると、別の方法を考える必要がありました。Media Source Extension(MSE)は、この問題を解決するために提案されましたが、自分でファイルを読み込む必要があり、MSEについての情報はあまりないため、既存のライブラリを使用するのが最も便利な方法です。
当時最も有名だったのは、blibliのflv.jsとhls.jsでした。
flvとhlsの違い
flvは、Flashエクスポートファイル(swf)のサイズが大きすぎる問題を解決するために、インターネット上で効果的に使用できるビデオ形式として提案されました。では、なぜインターネットを介して送信できるのでしょうか?
一般的に、ウェブ上で直接RTMPで再生するには、Adobe Flashを使用してデコードする必要がありました。これはHTML5がまだ成熟していなかった解決策でした。しかし、Flashが歴史に入ると、ブラウザはFlashをブロックするようになりました。そのため、異なる方法を見つける必要がありました。RTMPプロトコルを使用すると、ファイアウォールにブロックされる可能性があるため、HTTPを使用することが最適な方法です。現在、ほとんどのライブプロトコルはhttp-flvを使用しています。
MSE
通常のビデオタグは特定のファイル形式(またはコンテナ)のみをサポートしています。したがって、RMTPやm3u8などのサポートされていない形式は、ビデオタグで直接再生することができません。
既存のオーディオとビデオにさらなる拡張機能を追加するために、ブラウザのサポートがある場合、MSEのAPIを使用してビデオのコンテンツを変更または読み取り、自分でデコードしてビデオタグで再生することができます。ただし、この取り組みにはプロトコル自体に関する理解が必要であり、ビデオエンコードに関連する基礎知識が必要であり、メンテナンスとデバッグには時間がかかります。これがflv.jsとhlsが注目される理由です。彼らは現在のフロントエンドのビデオ再生ニーズを効果的に解決しています。
ストリーミングやhlsのようなエンコードを処理することは簡単なことではありません。
開発者のストーリーについて話しましょう
これは、主要な開発者の謙虚なブログ記事です。彼は高校の頃にすでにflvをmp4に変換してウェブで再生するというアイデアを持っていましたが、私はただ見ているだけでした。
当時はすでにhlsがありましたが、hlsのアーキテクチャはflvのようなプログレッシブな解析が必要なニーズには適していなかったため、別のアーキテクチャを設計する必要がありました。開発上の最大の問題はおそらくブラウザのサポートの度合いでした。開発時点では2015年から2016年の間で、各ブラウザのサポートはまだ安定していませんでした。flv.jsの開発のために、作者はchromium/mediaのソースコードを見に行きました。
現在の仕事に飽きてしまったため、転職を申し出て、flv.jsの開発に専念しました。flv.jsはリリースされましたが、成果にあまり関心を持っていない上司以外には、最終的な成績評価はCとなりました。
"2人の従業員がいます。1人は多くの比較的簡単な業務を担当し、継続的に成果を出しています。もう1人は、独自にコアライブラリを開発し、難しく、大量の工数がかかり、開発期間が長く、最終的には外部の理由でブロックされてタイムリーにリリースできませんでした。最終的に1人目の従業員は高い評価を受け、2人目の従業員は非常に低いスコアを受けました。これは公正ですか?"
このビジネス志向の会社が技術的な成果に関心を持っていないことを知った後、著者は離職計画を立てることにしました。同時に、flv.jsをオープンソース化することを望んでいます。
また、開発者自身も人間であり、感情を持ち、現状に不満を抱くことがあります。私自身も、キャリアの初期に非常に挑戦的な会社に参加し、自分がやりたいことを達成し、さまざまな領域に関与することができて非常に幸運だと思っています。
結論
ほとんどのライブ配信サービスは現在、ほとんどがflv.jsで処理されています。flv.jsを使わなくても、自分で開発する場合でも、flvのコードを非常に参考にしていると思います。彼のソフトウェアコミュニティやライブ配信への貢献は想像できます。これは、クールなアイデアと実践から生まれたものです。
最初に読んだ感想は、少し残念でした。flv.jsを使用したことがある開発者なら、彼がHTML5ライブ領域に与えた貢献の大きさを理解しているはずですが、このような結果は会社にとってCの評価です。
同時に、私も考え始めました。現在、サポートされているAPIが増えてきており、最近では非常に人気のあるWebAssemblyもありますが、まだまだ実際の応用例を見ていません。
反省
26歳になる直前ですが、日本で働くようになって生活は確かに改善されましたが、想像していたものとは違っています。テックリードになった後は、ほとんどの時間をドキュメントの作成と進捗の確認に費やし、プログラムを書く時間がほとんどありません。長期的には、心身ともに疲れてしまっています。
幸いにも、ここでは新しいことを学ぶためのかなりの柔軟性があり、上司も自分のやりたいことをやることを奨励してくれていて、成果の評価にもあまりプレッシャーを感じません。しかし、ここ数年は、フロントエンド以外のことに触れることはなく、大きな成長はありません。
大学を卒業してからは、完全な知識体系を学ぶ時間がなくなりました。これは私にとって焦りとプレッシャーの源です。以前は技術とツールの進歩に非常に関心を持っていましたが、最近の数年間はどんどん興味を失っています。もしかしたら、将来的にはリソースが十分になったら、学校に戻って初めてちゃんと学んでいなかった基礎知識や書きたかったコードを補完することになるかもしれません。これは運任せです。