2012-06-01 4 views
0

프레임 그래버에서 가져온 H264 데이터가 있습니다. 이 데이터를 사용하여 live555를 사용하는 RTP/H264 스트리밍 서버와 ffmpeg 및 live555를 사용하는 RTP/H264 클라이언트를 작성했습니다.ffmpeg를 사용하여 H.264로 인코딩 된 데이터를 파일로 저장

내 서버에 새로운 기능을 추가하고 싶습니다. 나중에 VLC를 사용하여 비디오를 볼 수있는 형식 (avi, mp4, mkv 등)으로 인코딩 된 H264 데이터를 파일로 변환하지 않고 직접 저장할 수 있습니다. 디스플레이 클라이언트

은 기본적으로 I을 수행했다 :

1)는 FFmpeg를 사용 H264 데이터로부터 패킷을 구축/av_new_packet()

2) 디코드 H264 데이터는 FFmpeg/avcodec_decode_video2()

3) 형식는 FFmpeg/sws_scale()

누군가가 빠르게 VI 나에게 조언을 할 수

4) 디스플레이를 사용하여 프레임을 디코딩 데이터를 디코딩/트랜스 코딩하지 않고 ffmpeg를 사용하여 deo 파일 저장 기능을 사용 하시겠습니까? 그것은

1) 출력 콘텍스트를 선택 (형식)

2)는 FFmpeg를 사용 H264 데이터로부터 패킷을 구축하기에 충분/av_new_packet()

3) (는 FFmpeg/av_를 사용하여 인터리빙 된 패킷을 저장) _write_frame() (또한 av_write_trailer() 및 av_write_header())?

?

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

PKT 원시 H264 패킷입니다 :

는 당신에게 모든 일

답변

-1

참조하시기 바랍니다 ffplay.c 감사드립니다. 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); 
+1

이것은 거의 대답이 아닙니다. 질문은 패킷 화에 관한 것이지 파일에 쓰는 것에 관한 것이 아닙니다. –

0

을 나는 비슷한 일을했다; 인코딩에 ffmpeg를 사용했습니다. 나는 ffmpeg 예제를 1으로 재배정하고 나를 위해 일했다. (대답하기에는 너무 늦었지만 다른 사람들에게 도움이되기를 바랍니다.)