Ubuntu 18.04のFirefoxで.MP4ビデオを再生できると思って以来(たとえば、Firefox 43はまだ再生できず、Firefox 60は再生できます)、特にアップロードする必要がある場合は、この概念に非常に満足しています。共有するためのビデオ。 サーバーにMimeタイプを設定する 、Apacheサーバーの.htaccess
ファイルに次のようにスローする必要があります。
AddType video/mp4 .mp4
...次に、ブラウザでhttp(s):// ... mp4リンクを開くだけで、完了です。
ただし、多くの場合、字幕も追加したいと思います。たとえば、「ハード字幕」のように、ビデオをピクセルとして「焼き付け」たくないので、そのままにしておきたいと思います。個別のテキスト情報。 .mkv
コンテナがこれをサポートしていることは知っていますが、Firefoxではサポートされていません( 1422891- [再考] Firefoxでmkv | matroska | video/x-matroskaをサポート )。
だから、私はちょうどコンテナとしての.MP4が実際に別々の字幕を含むことができることを発見しました:
また、 https://en.wikipedia.org/wiki/Comparison_of_video_container_formats MP4「キャプション/字幕」に関する注記:
ttxt、プライベートobjectTypeIndicationを持つVobSubsはsceneDescription(Neroで開始)では使用できません、BIFS
VOBSUBは.bmp/pixel形式なので、興味はありませんが、ttxt
は興味深いものです。
ただし、字幕を.MP4ファイルに一度埋め込んでから、字幕ファイルをWeb上で(字幕付きで)表示できるようにしたい(できれば、JavaScriptを使用せずに正しいMIMEタイプを提供するサーバーにアップロードするだけで)。とデスクトッププレーヤー。
これにはどのような手順を使用できますか?また、その例があるので、おおよそ何が期待できるかわかりますか?
https://Apple.stackexchange.com/questions/116927/auto-add-subtitles-into-the-mp4-videos :
mp4はttxtとVobSubをサポートしていますが、srtやassはサポートしていません。
https://gpac.wp.imt.fr/mp4box/ttxt-format-documentation/
3GPPコンソーシアムは、SMIL、SVG、BIFSなどのシーンの説明とは関係なく、テキストストリーミングの標準を定義しています。3GPPTimedText ... MPEG-4 Streaming Text
テキストストリームのオーサリングを支援するために、XML形式がGPACで開発されました。これは、timed-textのTTXTと呼ばれます。拡張子はbeing.ttxtです。
FFmpegコーデックのmov_textとtx3gは同じものです: MPEG-4 Part 17 (時限テキスト)。
これに関する情報は少し散らばっているので、例を思いつくのは少し難しかったです。もちろん、これを行うためのより良い方法があるかどうか、私はまだ聞きたいです。しかし、これが私がUbuntu 18.04で行ったことです-最初に、一時ディレクトリ:
cd /tmp
mkdir videotest
cd videotest
入力ビデオを取得することから始めましょう-ビッグバックバニーの予告編:
wget http://download.blender.org/Peach/trailer/trailer_480p.mov \
-O big_buck_bunny_trailer_480p.mov
これは.mov形式ですが、問題ありません。次のように変換できます Web Gistのビデオのエンコード :
ffmpeg -i big_buck_bunny_trailer_480p.mov \
-vcodec libx264 -pix_fmt yuv420p -acodec aac \
-strict -2 -profile:v baseline -level 3 \
-vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" \
big_buck_bunny_trailer_480p.mp4
(-vf ...
オプションがないと、ffmpeg
によって「2で割り切れない幅を取得(853x480)」エラーが発生することに注意してください。
次に、この予告編の字幕を取得しましょう-私はここでそれらを見つけました:
wget https://raw.githubusercontent.com/moust/MediaPlayer/master/demo/subtitles.srt \
-O big_buck_bunny_trailer_480p.srt
この時点で、すぐにvlc big_buck_bunny_trailer_480p.mp4
を試すことができます。これでビデオが再生され、一致するファイル名で.srt
字幕が自動的に読み込まれます。
これまで、Ubuntu18.04で次のソフトウェアバージョンを使用しました。
$ vlc --version
VLC media player 3.0.4 Vetinari (revision 3.0.4-0-gf615db6332)
$ ffmpeg -version
ffmpeg version 3.4.4-0ubuntu0.18.04.1 Copyright (c) 2000-2018 the FFmpeg developers
次に、MP4Boxを取得する必要があります。これは次の方法で実行できます。
Sudo apt install gpac
https://gpac.wp.imt.fr/downloads/gpac-nightly-builds/ 現在、最新バージョンのgpac_0.7.2-DEV-rev985があります。しかし、Ubuntu18.04のバージョンは次のとおりです。
$ apt-show-versions -r ^gpac
gpac:AMD64/bionic 0.5.2-426-gc5ad4e4+dfsg5-3 uptodate
$ MP4Box -version
MP4Box - GPAC version 0.5.2-DEV-revVersion: 0.5.2-426-gc5ad4e4+dfsg5-3
これで、最初に.srt
を.ttxt
に変換できます。
MP4Box -ttxt big_buck_bunny_trailer_480p.srt \
-out big_buck_bunny_trailer_480p.ttxt
...そしてember ..ttxt
のmp4
:
MP4Box -add \
big_buck_bunny_trailer_480p.ttxt:lang=eng":name=English":layout=0x60x0x-1:group=2 \
big_buck_bunny_trailer_480p.mp4 \
-out subtitled_video.mp4
このsubtitled_video.mp4
はVLC3.0.4で字幕を表示しますが、明示的に右クリックして、VLCで字幕/サブトラック/トラック1- [英語]を選択する必要があります。 Firefox 60でsubtitled_video.mp4
を開くと、字幕は表示されず、字幕を有効にするためのボタン/コンテキストメニューも表示されません。
この時点で、Firefoxには字幕用のUIがあることに注意してください。
...ただし、WebVTT/wvtt
/.vtt
形式の字幕の場合はのみのようです。
...そして、only<video>
タグを使用したHTML5/JS経由(したがって、ビデオに字幕を埋め込んで直接http *を開くことはできません)ビデオファイルにリンクし、字幕が表示されることを期待します)。さらに、次のように:
... <video>
タグを使用しても、現在、ビデオに埋め込まれている字幕はサポートされていません(別の.vtt
字幕ファイルが必要です)-mp4を除き、MP4Box.js
JSライブラリによるものです。
このMP4Box.js
ライブラリの場合:
また、Gitリポジトリには最近のアクティビティがありますが、 https://github.com/gpac/mp4box.js/releases 個々のファイルを含む最後のアクティビティはv0.3.15(2016年3月16日)です。 、最後の.Zipはv0.3.16(2016年7月12日)です。ソースから完全なJSライブラリを構築するのは少し複雑です(grunt
を使用する必要があります)。
また、MP4Box.js
は、字幕だけでなくMP4でのより複雑なタスクを対象としており、デモページは非常に複雑で、そのすべてを示すことを目的としています。そのため、デモページを縮小し、ローカルの.mp4
ファイルを開いて再生するだけのHTMLを作成するのに少し時間がかかりました。次のとおりです。
MP4Box.js
ライブラリのv0.3.15を使用していることに注意してください(古いデモページから開発されました)。特に、新しいバージョンのライブラリ(および新しいデモページ)のAPIはわずかに異なるため、新しいライブラリで使用すると古いJSコードが破損します。
(このテストページは、ダウンロードの半分で、mp4box.releaseUsedSamples
で、x.samples
undefinedメッセージで中断することにも注意してください。ページは、このステートメントをスキップすることでこれを回避しようとします。これにより、Firefox60でダウンロードが約1秒短く完了します-つまり、ほとんどのビデオは再生可能ですが、ループすることはできません)
これを念頭に置いて、test-MP4Box.js-v0.3.15.html
をsubtitled_video.mp4
(.ttxt
サブタイトルが埋め込まれている)と同じディレクトリに配置し、Firefoxで.html
ページを開くと、JavaScriptコンソールに次のように表示されます。
[0:00:00.552] [MSE] MIME type 'video/mp4; codecs="tx3g"' not supported for creation of a SourceBuffer for track id 3 mp4box.all.js:33:6
TypeError: Argument 1 of HTMLMediaElement.addTextTrack '' is not a valid value for enumeration TextTrackKind. test-MP4Box.js-v0.3.15.html:412:20
したがって、tx3g
の.mp4
/txtt
埋め込み字幕はVLC3.0.4で表示できますが、MP4Box.js
ではサポートされていません。MP4Box.js
でサポートされている埋め込み字幕はWebVTTのみです。
ありがたいことに、WebVTTとして、MP4Box
を使用して、すでに持っている.srt
を埋め込むことができます。
MP4Box -add big_buck_bunny_trailer_480p.srt:fmt=VTT \
big_buck_bunny_trailer_480p.mp4
-out subtitled_video.mp4
...そしてFirefox60でtest-MP4Box.js-v0.3.15.html
を開くと、字幕とCCボタンが表示されます。
ただし、VLC 3.0.4でWebVTT字幕が埋め込まれたこのsubtitled_video.mp4
を開くと、残念ながら字幕を再現できないことがわかります。
ただし、このコミットでは.mp4
でのWebVTTのサポートが追加されています mux:mp4:webvttのサポートを追加・videolan/vlc @ 86f5f48・GitHub 2018年1月22日から。これを取得するには、インストールする必要がありましたsnap
として毎晩最新のVLCを介して:
Sudo snap install --channel=Edge vlc
...それは私に与えました:
$ snap run vlc --version
VLC media player 4.0.0-dev Otto Chriek (revision 4.0.0-dev-5939-gee31d91)
...そしてこのVLC4.0.0は、最終的に、WebVTT字幕が埋め込まれたsubtitled_video.mp4
の字幕を再生できます。 (ただし、 https://askubuntu.com/questions/1106832/running-a-snap-installed-side-by-side-parallel-to-a-debian-package の問題に注意してください)
上記は少し複雑なので、このテストスクリプトで記述された別のアプローチを選択しました(この投稿で同じファイルを使用します。スクリプトはfile://
プロトコルを介してローカルでも機能するはずです):
基本的に、これは単なる標準のHTML5ビデオプレーヤーであり、.srt
ファイルへのhrefを含む字幕トラックがあります。前述のように、HTML5ビデオエンジンはサポートしていません。ただし、ページの読み込み時に、.srt
ファイル名はサブタイトル<track>
のsrc
属性を介して読み取られ、ファイルはXHRを介して読み取られてから、 https ://github.com/imshaikot/srt-webvtt これは、.srt
からWebVTTをその場で生成し、それを字幕トラックに適用して、機能できるようにします。
したがって、字幕が埋め込まれたビデオをサーバーにダンプするほど簡単ではありませんが、ここで行う必要があるのは、HTML .mp4
内に.srt
と<video>
のファイル名を書き込むことだけです。プレーヤーコード。オンザフライで行われるため、変換についてこれ以上心配する必要はありません。