Я хочу обернуть H264 Nalus (в кодировке x264) в mp4 с помощью ffmpeg (SDK 2.1), но выходной файл mp4 не удалось воспроизвести. Я не знаю, как установить точки и dts. Вот мой код, использующий код из кадров Raw H264 в контейнере mpegts с использованием libavcodec и muxing.c с сайта www.ffmpeg.org. В моем потоке H264 нет B-кадра, каждый nalu начинается с 00 00 00 01, поток начинается с sps pps, затем данных h264.
Я хочу обернуть H264 Nalus (в кодировке x264) в mp4 с помощью ffmpeg (SDK 2.1), но выходной файл mp4 не удалось воспроизвести. Я не знаю, как установить точки и dts. Вот мой код, использующий код из кадров Raw H264 в контейнере mpegts с использованием libavcodec и muxing.c с сайта www.ffmpeg.org. В моем потоке H264 нет B-кадра, каждый nalu начинается с 00 00 00 01, поток начинается с sps pps, затем данных h264.
/* find the encoder */ *codec = avcodec_find_encoder(codec_id); if (!*codec) { printf("could not find encoder for '%s' \n", avcodec_get_name(codec_id)); exit(1); }
st = avformat_new_stream(oc, *codec); if (!st) { printf("could not allocate stream \n"); exit(1); } st->id = oc->nb_streams-1; c = st->codec; vi = st->index;
/* open the codec */ ret = avcodec_open2(c, codec, NULL); if (ret < 0) { printf("could not open video codec"); //exit(1); }
}
int CreateMp4(AVFormatContext *&m_pOc, void *p, int len) { int ret; const char* pszFileName = "output002.mp4"; AVOutputFormat *fmt; AVCodec *video_codec; AVStream *m_pVideoSt;
if (0x67 != get_nal_type(p, len)) { printf("can not detect nal type"); return -1; } av_register_all();
avformat_alloc_output_context2(&m_pOc, NULL, NULL, pszFileName); if (!m_pOc) { printf("Could not deduce output format from file extension: using MPEG. \n"); avformat_alloc_output_context2(&m_pOc, NULL, "mpeg", pszFileName); } if (!m_pOc) { return 1; }
if (m_pVideoSt) { open_video(m_pOc, video_codec, m_pVideoSt); }
av_dump_format(m_pOc, 0, pszFileName, 1);
/* open the output file, if needed */ if (!(fmt->flags & AVFMT_NOFILE)) { ret = avio_open(&m_pOc->pb, pszFileName, AVIO_FLAG_WRITE); if (ret < 0) { printf("could not open '%s': %s\n", pszFileName); return 1; } }
/* Write the stream header, if any */ ret = avformat_write_header(m_pOc, NULL); if (ret < 0) { printf("Error occurred when opening output file"); return 1; } }
/* write h264 data to mp4 file*/
void WriteVideo(AVFormatContext *&m_pOc,void* data, int nLen) { int ret;
if ( 0 > vi ) { printf("vi less than 0"); //return -1; } AVStream *pst = m_pOc->streams[ vi ];
Я хочу обернуть H264 Nalus (в кодировке x264) в mp4 с помощью ffmpeg (SDK 2.1), но выходной файл mp4 не удалось воспроизвести. Я не знаю, как установить точки и dts. Вот мой код, использующий код из кадров Raw H264 в контейнере mpegts с...
Я хочу обернуть Nalus H264 (кодированный x264) в MP4 с использованием FFMPEG (SDK 2.1), но выходной файл MP4 не мог воспроизводиться. Я не знаю, как установить PTS и DTS. Вот мой код, используя код из RAW H264 кадров в контейнере MPEGTS с...
Я пытался запустить репозиторий, расположенный ЗДЕСЬ. По сути, просто нацелен на SimpleVideoSummarizer.cc, который использует OpenCV для некоторой базовой обработки видео. Я использую Ubuntu 14.04. Ниже приведена часть кода для сохранения:
Я хотел бы использовать CV2 в Python, чтобы скомпилировать видео из ряда изображений. Я получил ошибку
OpenCV: FFMPEG: tag is not supported with codec id 12 and format 'mp4 / MP4
и поиск здесь для ответа, как его исправить. Я получил ответ в этом...
Я хотел бы использовать CV2 в Python, чтобы скомпилировать видео из ряда изображений. Я получил ошибку
OpenCV: FFMPEG: tag is not supported with codec id 12 and format 'mp4 / MP4
и поиск здесь для ответа, как его исправить. Я получил ответ в этом...