0

フレームグラバーからのH264データがあります。このデータを使用して、RTP/H264 ストリーミング サーバー (live555 を使用) と RTP/H264 クライアント (ffmpeg と live555 を使用) を既に作成しています。

サーバーに新しい機能を追加したい : エンコードされた H264 データを任意の形式 (avi、mp4、mkv など) で (トランスコードせずに) ファイルに直接保存し、後で VLC を使用してビデオを視聴できるようにします。

表示クライアントについては、基本的に、次のことを実行しました。

1) ffmpeg/av_new_packet() を使用して H264 データからパケットを構築します

2) H264 データのデコード ffmpeg/avcodec_decode_video2()

3) ffmpeg/sws_scale() を使用してデコードされたフレームをフォーマットする

4) ディスプレイ

データをデコード/トランスコードせずに ffmpeg を使用せずに、動画ファイルの保存機能についてすぐに教えてもらえますか? で十分です

1) 出力コンテキスト (形式) を選択します

2) ffmpeg/av_new_packet() を使用して H264 データからパケットを構築します

3) ffmpeg/av_(interleaved)_write_frame() (および av_write_trailer() と av_write_header()) を使用してパケットを保存しますか?

?

みんなありがとう

4

2 に答える 2

-1

ffplay.cをご覧ください:

static int video_thread(void *arg)
{
...
ret = get_video_frame(is, frame, &pts_int, &pkt);
...
}

pktは生のh264パケットです。pkt.dataをファイルに保存しても問題ありません。

fwrite(pkt.data, 1, pkt.size, pf );

このファイルがmplayerで再生できない場合は、最初に追加してください:

unsigned char const start_code[4] = {0x00, 0x00, 0x00, 0x01};
fwrite(start_code, 4,1, pf );
于 2012-10-11T13:37:59.760 に答える