私はffmpegを使って.mkvと.mkaファイルを.mp4ファイルにマージしています。現在のコマンドは次のようになります。MKVとMKAファイルをmuxしてブラウザで再生するにはどうすればよいですか?
ffmpeg -i video.mkv -i audio.mka output_path.mp4
オーディオとビデオファイルは、Amazon S3から事前に署名されたURLです。十分なリソースを持つサーバーであっても、このプロセスは非常に遅くなります。私はffmpegに各フレームの再エンコードをスキップするように指示できる状況を研究しましたが、私の状況では実際には各フレームを再エンコードする必要があると思います。
私は2つのサンプルファイルを自分のMacBook Proにダウンロードし、自宅経由でローカルにffmpegをインストールしました。私は、コマンド
ffmpeg -i video.mkv -i audio.mka -c copy output.mp4
を実行すると、私は次のような出力が得られます。
ffmpeg version 3.3.2 Copyright (c) 2000-2017 the FFmpeg developers
built with Apple LLVM version 8.1.0 (clang-802.0.42)
configuration: --prefix=/usr/local/Cellar/ffmpeg/3.3.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. 58.100/55. 58.100
libavcodec 57. 89.100/57. 89.100
libavformat 57. 71.100/57. 71.100
libavdevice 57. 6.100/57. 6.100
libavfilter 6. 82.100/6. 82.100
libavresample 3. 5. 0/3. 5. 0
libswscale 4. 6.100/4. 6.100
libswresample 2. 7.100/2. 7.100
libpostproc 54. 5.100/54. 5.100
Input #0, matroska,webm, from '319_audio_1498590673766.mka':
Metadata:
encoder : GStreamer matroskamux version 1.8.1.1
creation_time : 2017-06-27T19:10:58.000000Z
Duration: 00:00:03.53, start: 2.831000, bitrate: 50 kb/s
Stream #0:0(eng): Audio: opus, 48000 Hz, stereo, fltp (default)
Metadata:
title : Audio
Input #1, matroska,webm, from '319_video_1498590673766.mkv':
Metadata:
encoder : GStreamer matroskamux version 1.8.1.1
creation_time : 2017-06-27T19:10:58.000000Z
Duration: 00:00:03.97, start: 2.851000, bitrate: 224 kb/s
Stream #1:0(eng): Video: vp8, yuv420p(progressive), 640x480, SAR 1:1 DAR 4:3, 30 tbr, 1k tbn, 1k tbc (default)
Metadata:
title : Video
[mp4 @ 0x7fa4f0806800] Could not find tag for codec vp8 in stream #0, codec not currently supported in container
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Stream mapping:
Stream #1:0 -> #0:0 (copy)
Stream #0:0 -> #0:1 (copy)
Last message repeated 1 times
だから、私が働いている特定のエンコーディングは、私は互換性がないと考えているVP8ビデオや作品オーディオファイル、あることが表示されます.mp4出力コンテナを使用します。私はvp8とopusを.mp4出力に最適にマージする方法をカバーしている答えに感謝します。答えはvp8 & opusと互換性のある出力メディアフォーマットの方向で私を指し示し、私はバイパスできるようにウェブとモバイルデバイスで再生できます再エンコードのステップをすべて完了します。
EDIT:
ちょうどLordNeckbeardのアドバイスに従った後のベンチマークを提供したかった:
4 min 41 second video transcoded locally on my mac
LordNeckbeard’s approach : 15 mins 55 seconds (955 seconds)
Current approach : 18 mins 49 seconds (1129 seconds)
18% speed increase
入力フォーマットがMP4出力コンテナと互換性がある場合は、単にmuxに '-c copy'を追加して再エンコードを避けてください。はるかに速くなります。 – LordNeckbeard
@ LordNeckbeardその結果、コマンドはffmpeg -i video.mkv -c copy -i audio.mka -c copy output_path.mp4になります。また、.mp4はMPEG-4で、.mkvと.mkaはMatroskaですので、互換性がないと思います。私はそこに間違っていますか? – Robert
私はffmpeg -i video.mkv -i audio.mka -c copy output.mp4を使用してドキュメントに従ってコピーしようとしましたが、0バイトのファイルを書き込んでいます。 – Robert