

If you want to avoid the re-encode, you could re-encode just the inputs that don't match so they share the same codec and other parameters, then use the concat demuxer to avoid re-encoding everything. Note that this method performs a re-encode of all inputs. Use this method if your inputs do not have the same parameters (width, height, etc), or are not the same formats/codecs, or if you want to perform any filtering. Ret = av_interleaved_write_frame( m_pOc, &pkt ) Ĭould anybody help me? Thank you very much!įFmpeg has three concatenation methods: 1. If ( 0 = ( pkt.flags & AV_PKT_FLAG_KEY ) ) Pkt.flags |= ( 0 >= getVopType( data, nLen ) ) ? AV_PKT_FLAG_KEY : 0 Ret = avio_open(&m_pOc->pb, pszFileName, AVIO_FLAG_WRITE) Open_video(m_pOc, video_codec, m_pVideoSt) Īv_dump_format(m_pOc, 0, pszFileName, 1) M_pVideoSt = add_stream(m_pOc, &video_codec, fmt->video_codec) If (fmt->video_codec != AV_CODEC_ID_NONE) Void open_video(AVFormatContext *oc, AVCodec *codec, AVStream *st) If (oc->oformat->flags & AVFMT_GLOBALHEADER) If (c->codec_id = AV_CODEC_ID_MPEG1VIDEO) If (c->codec_id = AV_CODEC_ID_MPEG2VIDEO) Printf("could not find encoder for '%s' \n", avcodec_get_name(codec_id)) Ĭ->sample_fmt = (*codec)->sample_fmts ? (*codec)->sample_fmts : AV_SAMPLE_FMT_FLTP

If ( b || b || 0x01 != b )ĪVStream *add_stream(AVFormatContext *oc, AVCodec **codec, enum AVCodecID codec_id) #define STREAM_PIX_FMT AV_PIX_FMT_YUV420P /* default pix_fmt */ Here's my code, using the code from Raw H264 frames in mpegts container using libavcodec and muxing.c from My H264 stream has no B-Frame, every nalu starts with 00 00 00 01,the stream begins with sps pps then the h264 data. but it's very slow not with -codec: copy.I want to wrap the H264 Nalus(x264 encoded) into mp4 using ffmpeg(SDK 2.1), but the output mp4 file could not play. orįfmpeg -i file.mp4 -map 0 -f segment -segment_list file.m3u8 -segment_time 00:00:04 file%03d.ts. this -segment_time 00:00:04 also not work.īut when I not use -codec: copy this command can work normal.įfmpeg -i file.mp4 -start_number 0 -hls_time 4 -hls_list_size 0 -f hls m3u8/file.m3u8. In the m3u8 file also is #EXTINF:8.341667.

then I tryįfmpeg -i file.mp4 -force_key_frames "expr:gte(t,n_forced*4)" -codec: copy -start_number 0 -hls_time 4 -hls_list_size 0 -f hls m3u8/file.m3u8.įfmpeg -i file.mp4 -codec: copy -map 0 -f segment -segment_list file.m3u8 -segment_time 00:00:04 file%03d.ts. this is my command.įfmpeg -i file.mp4 -codec: copy -start_number 0 -hls_time 4 -hls_list_size 0 -f hls m3u8/file.m3u8.īut in the m3u8 file always is #EXTINF:8.341667. Sorry.I read already.But still no answer why -hls_time 2 not work. Please, just read the docs? It's not that hard. how to do can change ts time, for example 4s or shorter time.

default every ts file time always it's 8s.
