2012-06-01 5 views
0

У меня есть данные H264, поступающие из граббер. Используя эти данные, я уже написал потоковый сервер RTP/H264 (используя live555) и клиент RTP/H264 (используя ffmpeg и live555).Сохранение закодированных данных H.264 в файл с использованием ffmpeg

Я хочу добавить новую функцию на свой сервер: прямое сохранение данных в формате H264 в файл (без транскодирования) в любом формате (avi, mp4, mkv и т. Д.), Что позволяет позже смотреть видео с использованием VLC.

Для клиента дисплея, в основном, я выполнил:

1) Построение пакетов из данных H264 с помощью FFmpeg/av_new_packet()

2) Декодирование H264 FFmpeg данные/avcodec_decode_video2()

3) Формат декодированного кадра с использованием FFmpeg/sws_scale()

4) дисплей

Может кто-то быстро проконсультировать меня за VI deo сохранение файла без декодирования/транскодирования данных и использование ffmpeg? Достаточно

1) Выберите контекст вывода (формат)

2) Построение пакетов из данных H264 с помощью FFmpeg/av_new_packet()

3) Сохранить пакет с помощью FFmpeg/av_ (чередование) _write_frame() (а также av_write_trailer() и av_write_header())?

?

Спасибо вам каждый один

ответ

-1

Пожалуйста просмотреть ffplay.c:

static int video_thread(void *arg) 
{ 
... 
ret = get_video_frame(is, frame, &pts_int, &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); 
+1

Это вряд ли ответ, вопрос в том, что касается пакетирования, а не о записи в файл. –

0

Я сделал подобные одно; используется ffmpeg для кодирования. Я нашел пример ffmpeg remuxing 1, и это сработало для меня. (Ответ слишком поздно, но я надеюсь, что это поможет кому-то еще.)