.tsファイルをロスレスでメインストリーム形式に変換する方法は?


13

末尾が.tsのファイルがあります(例:最初の10 MBです)。可能な場合はロスレスで(つまり、再多重化)、よりメインストリーム形式(mp4、MPEG2-PSなど)に変換したいと思います。

.tsファイルを有用なものに変換するにどうすればよいですか?」を読みました質問。avidemuxビデオとオーディオストリームの「コピー」設定と、MPEGの「PS」コンテナフォーマットを試してみました。エラーメッセージ「互換性のないオーディオ/ DVDの場合、オーディオは48 kHz MP2(ステレオ)、AC3、DTSまたはLPCM(ステレオ)である必要があります」で失敗しました。

提案されたCLIコマンドも試しました。

avconv -i 10MB.ts -vcodec copy -acodec copy 10MB.mpg

出力ファイルには正しいビデオが含まれていますが、少なくともVLCで再生された場合は音声がありません。avconvオーディオストリームを正しく検出したようですので、これはかなり不可解です。

Input #0, mpegts, from '10MB.ts':
  Duration: 00:00:06.36, start: 51523.824800, bitrate: 12563 kb/s
  Program 37888 
    Stream #0.0[0x100]: Video: mpeg2video (Main), yuv420p, 1440x1080 [PAR 4:3 DAR 16:9], 20000 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x110]: Audio: aac, 0 channels, fltp, 144 kb/s
    Stream #0.2[0x130]: Data: [6][0][0][0] / 0x0006
    Stream #0.3[0x138]: Data: [6][0][0][0] / 0x0006
    Stream #0.4[0x140]: Data: [13][0][0][0] / 0x000D
    Stream #0.5[0x160]: Data: [13][0][0][0] / 0x000D
    Stream #0.6[0x161]: Data: [13][0][0][0] / 0x000D
    Stream #0.7[0x162]: Data: [13][0][0][0] / 0x000D
    Stream #0.8[0x170]: Data: [13][0][0][0] / 0x000D
    Stream #0.9[0x171]: Data: [13][0][0][0] / 0x000D
    Stream #0.10[0x172]: Data: [13][0][0][0] / 0x000D
Output #0, mpeg, to '10MB.mpg':
  Metadata:
    encoder         : Lavf54.20.4
    Stream #0.0: Video: mpeg2video, yuv420p, 1440x1080 [PAR 4:3 DAR 16:9], q=2-31, 20000 kb/s, 90k tbn, 90k tbc
Stream mapping:
  Stream #0:0 -> #0:0 (copy)

別の質問のコメントで提案されているCLIコマンドも試しました。

avconv -i 10MB.ts -c:v copy -c:a libfaac 10MB.mp4

繰り返しますが、出力ファイルには音がありません。

編集:@Danielの提案に従ってVLCを試しました。ほぼ完璧でした。それは高速でユーザーフレンドリーでした。「変換/保存」をクリックし、入力ファイルを追加し、MP4プロファイルを選択し、ビデオコーデックとオーディオコーデックを「元のビデオ/オーディオトラックを保持する」に設定し、宛先ファイルを選択して、「開始」をクリックするだけでした。ビデオは完璧に見えましたが、オーディオはどういうわけか少し破損していますが、それは私のビデオのオーディオストリームに非常にエキゾチックな何かが原因である可能性があります。


VLCを試しましたか?videolan.org/vlc/index.html
Daniel

可能であれば再エンコードするのではなく、再多重化することを望んでいるとおっしゃいました。VLCが再多重化しているだけですか?
llogan

@LordNeckbeardいいね!どうすれば確認できますか?
ラクトンは、

VLCの変換についてはよく知りませんが、を使用して回答を追加しましたffmpeg
llogan

VLCは、あらゆるものを優れた損失のないものに変換します。基本的に、選択した形式によって制限されます。
Daniel

回答:


22

マトロスカ(MKV)

これにより、すべてのストリームがストリームコピー(re-mux)されます。

ffmpeg -i input -map 0 -c copy output.mkv

この-map 0オプションは、すべてのストリームを含めるために使用されます。それ以外の場合は、デフォルトのストリーム選択動作を使用するため、ストリームタイプごとに1つのストリームのみが選択されます。Matroskaは私が含めたほとんどの任意のストリームを処理できるので-map 0

MP4

これにより、すべてのストリームがストリームコピー(re-mux)されます。

ffmpeg -i input -map 0 -c copy output.mp4
  • 入力形式がMP4と互換性がない場合、エラーが発生します。
  • プレーヤー/デバイスは、たとえMP4でサポートされていても、任意の、あまり一般的ではない、またはレガシーフォーマットをすべてサポートしているとは限りません。
  • 疑わしい場合は、以下に示すようにH.264 + AACに再エンコードします。

これにより、ビデオがH.264に再エンコードされ、オーディオがストリームコピーされます。

ffmpeg -i input.ts -c:v libx264 -c:a copy output.mp4

次の例では、ビデオとオーディオの両方を再エンコードします。

ffmpeg -i input.ts -c:v libx264 -c:a aac output.mp4

ロスレスH.264の例:

ffmpeg -i input.ts -c:v libx264 -crf 0 -c:a copy output.mp4

ロスレスファイルは巨大になります。

詳細については、FFmpeg Wiki:H.264を参照してください。


あなたはロスレスMP4ファイルをエンコードしたい場合は、追加のいずれか-qp 0または-crf 0、FFMPEGのwikiページ上で述べたように:trac.ffmpeg.org/wiki/Encode/H.264
SuperSluether

2
@SuperSluether Losslessは巨大なファイルを作成します。「ロスレス」とは、ラクトンが「リマックス」を意味すると私は信じています。
llogan

私が提供したサンプルファイルは実際に切り捨てられています。再多重化したい実際のファイルが大きすぎて簡単に共有できません。
ラクトン

1
@lacton matroskaに多重化してみてくださいffmpeg -i 10MB.ts -c copy output.mkv。エラーが発生します:Error parsing AAC extradata, unable to determine samplerate。これが、私のMKVの例でオーディオを再エンコードした理由です。#4472:エンコードなしのストリームからのAACコピーが失敗しlavf / mkv:AAC再多重化を修正するも参照してください。ただし、これは切り捨てられていない大きな入力ファイルには適用されず、期待どおりに動作する可能性があります。
llogan

1
@LordNeckbeard ffmpeg -i input -c:v copy -c:a aac output.mkvは完璧に機能しました。ビデオは再多重化され、オーディオはオリジナルと同じように聞こえますが、VLCで変換するときに少し破損することはありません。
ラクトン

3

VideoLAN(VLC- http: //www.videolan.org/vlc/index.html )は、ほぼすべてを簡単に何かに変換します。

試してみます。Linux、Windows、Mac OS Xで動作し、非常にユーザーフレンドリーなインターフェースを備えています。


ビデオ変換にVLCを使用したので、お勧めします。この提案をありがとう。私の.tsファイルでは、ほとんど機能しました。ビデオは完璧に見えましたが、オーディオはどういうわけかわずかに壊れていました。それは私のビデオのオーディオストリームに非常にエキゾチックな何かが原因である可能性があります。これを含めるために元の質問を編集しました。
ラクトン

ええ、mp4内のオーディオに別のサブコンテナーを使用する方がうまくいくかもしれません。おそらくRAW。
Daniel

0

@lloganによる他の回答の補足として-とにかくストリームコピーが望ましいので:

私は長い間、いくつかのコマンドを使用して、ファイルマネージャーのコンテキストメニューに統合するために、ファイルの名前を変更せずにオーディオを抽出します。

したがって、ファイル名を変更せずに「デマルチプレクサとマルチプレクサ」を使用するには、次のようにします。

ffmpeg -i "$0" -map 0 -c copy "${0%%.*}".mkv

ThunarのカスタムアクションとFileManagerアクション設定ツール(Nautilus、Nemo、Caja、PCManFM)に次のように追加しました。

sh -c 'ffmpeg -i "$0" -map 0 -c copy "${0%%.*}".mkv' %f

Thunarおよびvideo/mp2tFileManagerアクションでは「* .ts」に制限します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.