Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

最近の作業部屋活動履歴

2023-04-16
2023-03-24
2023-03-22
2023-01-25

最近のWikiの更新 (Recent Changes)

2023-04-16
2023-03-24
2023-01-25
2023-01-08
2023-01-07

Wikiガイド(Guide)

サイドバー (Side Bar)

連番 PPM または PNG から MPEG-1 ファイルを作成するエンコーダ

概要

Javascript + html5 canvas で mpeg-1 ファイルを再生してしまうすごいライブラリ jsmpeg を発見しました。 入力された mpg ファイルをデコードすることで得られる画像を 逐次canvas に描いていくことで動画再生を実現するというものですが、 入力できるMPEGデータに2つの制約があるようです。

  • 制約1. 幅が偶数であること
  • 制約2. Bフレームを含まないこと

制約1 はともかくとして、制約2がなかなかクリアできずに苦戦していました。 配布元の指示通りに ffmpeg のパラメータを指定してmpeg1動画を生成しても、 表示が大幅に崩れてしまいます。 まあ、ffmpeg を使い慣れているわけでもないですし、 動画フォーマットについてほぼ素人なので、実は正しいパラメータの指定の仕方 を知らないだけかもしれません。 結局 ffmpeg のパラメータの指定方法の詳細がなかなかつかめなかったので、別のツールを試すことにしました。

探したところ、mpeg_encodeという、連番 PPM ファイルから mpeg1 ファイルを作成できるエンコーダを発見しましたので、 ここからソースを取得し、Visual Studio でビルドできるようにソースを修正してみました。 また、ついでに png デコーダ stb_image も組み込んで、連番 PNG にも対応してみました。

前置きが長かったですが、この「エンコーダ」が今回紹介するプログラムです。 このエンコーダで作ったmpegファイルは、今のところは jsmpeg でうまく再生できてます。 他の色々なデータでも試してみて、表示が崩れないことを確認していきたいと思います。

・・・そういえば、Windows10 でこの検証をしていたのですが、 Windows10 のメディアプレイヤーで mpeg-1 ファイルが再生できませんでした。 Windows10 には mpeg-1 codec が入ってなかったりするんでしょうか?

(9/5追記) Windows10には「映画&テレビ」という名前のアプリとメディアプレイヤーが入っていて、「映画&テレビ」の方では再生できませんでしたが、メディアプレイヤーの方では再生できました。 .mpgファイルをダブルクリックすると「映画&テレビ」が起動するのに再生できないので、Windows10ではmpeg-1非対応なのかもと思った次第です。

修正履歴

  • 2015/08/24 画像ファイルを指定する行の一番右に <2> と書くと同じ画像を2枚ずつ差し込む(再生速度が半減する)機能を追加

参考サイト

ダウンロード