web-dev-qa-db-ja.com

mpeg-tsエンコード用のFFmpegコマンド

FFmpegエンコーダの使用を開始しました。ビデオファイルをmp4コンテナーにエンコードするコマンドがあります。

ffmpeg -i input.mp4 \
       -vcodec libx264 -s 426x240 -pix_fmt yuv420p \
       -crf 22 -minrate 200k -bufsize 400k -maxrate 400k -preset medium \
       -b:v 500000 -profile:v baseline -level 3.1 \
       -c:a aac -strict -2 -b:a 64k -ac 2 \
       output_240.mp4

Mpeg-tsエンコーディングに対応するコマンドが必要です。これをオンラインで検索しましたが、これが初めてなので、探しているものを正確に取得できませんでした。

2
Fayas B

FFmpegの場合と同様、多くの選択肢がありますが、明確な答えを作成するためにこれをもう少し絞り込みました。

1。入力ファイルのコーデックサポートされている TSコンテナ:

次のように、FFmpegを使用して入力ファイルを調べます。

ffmpeg -i input.mp4

ファイルに TSコンテナで十分にサポートされている のコーデックが含まれている場合(H.264ビデオやAACサウンドなど)、次のストリームを単純にコピーできます。

ffmpeg -i input.mp4 -c copy output.ts

出力ファイルの実際の使用(ストリーミング、特定の再生デバイスなど)に応じてこのコマンドラインを変更する必要があるかもしれませんが、これは素晴らしい結果をもたらします。

2。入力ファイルのコーデックはサポートされていません TSコンテナ内:

入力ファイルにTSコンテナで十分にサポートされていないコーデックが含まれている場合、re-encodeビデオストリームまたはオーディオストリーム、あるいはその両方が必要になります。 FFmpegおよびTSコンテナのデフォルトのコーデックは、mpeg2videoおよびmp2サウンドです。これらのデフォルトコーデックを使用して満足している場合、次のようにすれば素晴らしい結果が得られます。

ffmpeg -i input.mp4 \
       -c:v mpeg2video -qscale:v 2 \
       -c:a mp2 -b:a 192k \
       output.ts

これは確かに私のシステム上で非常に合理的な結果をもたらし、あなたのシステム上でもそうすべきです...

3。 HTTPライブストリーミング(HLS)用にファイルをセグメント化します:

最後に、HTTP Live Streaming(HLS)で使用するために、プレイリストを含むセグメント化されたTSファイルを作成することができます。これを実現する方法は常にいくつかありますが、以下のサンプルコマンドラインは、TSコンテナでコーデックがサポートされている入力ファイルに対して適切に機能します。

ffmpeg -re -i input.mp4 \
       -codec copy -map 0 \
       -f segment -segment_list playlist.m3u8 \
       -segment_list_flags +live -segment_time 10 \
       out%03d.ts

入力ファイルのコーデックを変更したい場合は、-codec copyの代わりに必要な設定を追加するだけで、H.264とAACはこのタイプのストリーミングの一般的なコーデックであると思います。 ここで説明... であるセグメントオプションを使用した実験の余地

注:

4
andrew.46