2017-01-31 20 views
0

アップロードするビデオファイル用のプラットフォームを作成しています。 Videojsで再生するために、mp4ファイルに/ demux mkv/flv/3gpファイルを変換します。Videojsは変換されたmp4ファイルを再生しません

私が遭遇する問題は、そのビデオ/ mkvファイルをdemuxした場合、私のコンピュータ上の "動作中の" mp4ファイルでも、エラーメッセージVideo format or mime type not supportedが表示されるということです。

私はmkvファイルがコンテナであることを理解していると思います。デマルチプレクスすると、同じビデオとオーディオコーデックが保持され、Videojs/HTML5でサポートされていない場合、ビデオは再生できません。私が間違っているなら、私を修正してください。

mkv.mkvからmkv.mp4へのこのdemuxがブラウザで再生できない理由を教えていただけますか?

➜ ~ ffmpeg -i mkv.mkv -vcodec copy -acodec copy mkv.mp4 
ffmpeg version 3.2.2 Copyright (c) 2000-2016 the FFmpeg developers 
    built with Apple LLVM version 8.0.0 (clang-800.0.42.1) 
    configuration: --prefix=/usr/local/Cellar/ffmpeg/3.2.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --disable-lzma --enable-vda 
    libavutil  55. 34.100/55. 34.100 
    libavcodec  57. 64.101/57. 64.101 
    libavformat 57. 56.100/57. 56.100 
    libavdevice 57. 1.100/57. 1.100 
    libavfilter  6. 65.100/6. 65.100 
    libavresample 3. 1. 0/3. 1. 0 
    libswscale  4. 2.100/4. 2.100 
    libswresample 2. 3.100/2. 3.100 
    libpostproc 54. 1.100/54. 1.100 
Input #0, matroska,webm, from 'mkv.mkv': 
    Metadata: 
    ENCODER   : Lavf53.24.2 
    Duration: 00:00:34.08, start: -1.400000, bitrate: 1232 kb/s 
    Stream #0:0: Video: mpeg4 (Simple Profile), yuv420p, 720x480 [SAR 1:1 DAR 3:2], 25 fps, 25 tbr, 1k tbn, 25 tbc (default) 
    Stream #0:1: Audio: aac (LC), 48000 Hz, 5.1, fltp (default) 
Output #0, mp4, to 'mkv.mp4': 
    Metadata: 
    encoder   : Lavf57.56.100 
    Stream #0:0: Video: mpeg4 (Simple Profile) ([0][0][0]/0x0020), yuv420p, 720x480 [SAR 1:1 DAR 3:2], q=2-31, 25 fps, 25 tbr, 16k tbn, 1k tbc (default) 
    Stream #0:1: Audio: aac (LC) ([64][0][0][0]/0x0040), 48000 Hz, 5.1 (default) 
Stream mapping: 
    Stream #0:0 -> #0:0 (copy) 
    Stream #0:1 -> #0:1 (copy) 
Press [q] to stop, [?] for help 
frame= 887 fps=0.0 q=-1.0 Lsize= 5130kB time=00:00:35.45 bitrate=1185.4kbits/s speed= 668x 
video:3447kB audio:1663kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.401607% 

ありがとうございました。答えが見つからないようです...

+0

このffmpegの使用方法ごとに特定のエンコーディング(h264)を強制します - https://stackoverflow.com/questions/40836206/html5-video-not-streaming-and-taking-90-seconds-to-load/40943383 #40943383 – Offbeatmammal

+0

ヒントありがとうございます。非常に有用な情報、特にmovflagsの高速起動! –

+1

現在のコーデックはMPEG-4 Part 2です。おそらくサポートされていません。 '-vcodec libx264'を使ってH.264に切り替える – Mulvya

答えて

1

はあなたがパート2のビデオ再多重化MPEG-4は言及が、それは、ご使用のブラウザでサポートされていません。あなたはH.264に再エンコードする必要があります。

ffmpeg -i input -c:v libx264 -c:a copy -movflags +faststart output.mp4 
  • -movflags +faststartは、それが完全に事前にダウンロードするファイルを必要とせずに再生を開始できるように、いくつかのデータを再配置するために追加されます。

  • デバイスまたはブラウザで5.1チャンネルがサポートされていない場合は、-ac 2でステレオにダウンミックスします。

  • また、古いデバイスをサポートする必要がある場合は、-profile:v-levelを追加する必要があります。

品質と互換性の詳細の制御については、FFmpeg Wiki: H.264を参照してください。

0

-movflags + faststartがありません。

このパラメータは、プレーヤがファイルの再生を開始するために必要とする情報を移動します。それ以外の場合は、ファイルを開始する前に完全にダウンロードする必要があります。

コマンド:コメントとして

ffmpeg -i mkv.mkv -vcodec copy -acodec copy -movflags +faststart mkv.mp4 
+0

入力はMPEG-4 Part 2ビデオです。ブラウザはそのフォーマットをサポートしていないので、再多重化すると動作しません。再エンコードする必要がありますH.264などのサポートされている形式です。 – LordNeckbeard

+0

うん、主よ、あなたは完全に正しいです。ファイルを再エンコードする必要があります。 –

関連する問題