<div dir="ltr">Well seems like the base_time of the input and output streams are 0. How can this be? Anyway to fix it maybe knowing the fps?<br><div><div class="gmail_extra">Here is kinda my main loop (Inserted in the main loop from remuxing.c and doing a avformat_network_init())<br></div><div class="gmail_extra"> <br><br> while (1) { <br> AVStream *in_stream, *out_stream; <br> if (av_read_frame(ifmt_ctx, &pkt) < 0) <br> break; <br> in_stream = ifmt_ctx->streams[pkt.stream_index]; <br> out_stream = ofmt_ctx->streams[pkt.stream_index]; <br> <br> log_packet(ifmt_ctx, &pkt, "in"); <br> /* copy packet */ <br> pkt.dts = video_dts; <br> pkt.pts = ++video_dts;<br> <br></div><div class="gmail_extra"> // Rescaling just gives 0 dts and 0 pts <br></div><div class="gmail_extra"> //av_rescale_q_rnd(++video_dts, in_stream->time_base, out_stream->time_base, <br> // AV_ROUND_PASS_MINMAX | AV_ROUND_PASS_MINMAX); <br> //ofmt_ctx->duration += pkt.duration; <br> <br> pkt.pos = -1; <br> <br> log_packet(ofmt_ctx, &pkt, "out"); <br> <br> if (av_interleaved_write_frame(ofmt_ctx, &pkt) < 0) { <br> fprintf(stderr, "Error muxing packet\n"); <br> break; <br> } <br> <br></div><div class="gmail_extra"> av_packet_unref(&pkt); <br> <br> end = clock(); <br> if ( (100.f * (double)(end - begin) / CLOCKS_PER_SEC) > 10) { <br> break; <br> } <br><br> <br> } <br><br><br><div class="gmail_quote">2016-08-29 13:09 GMT-03:00 Leandro Raffo <span dir="ltr"><<a target="_blank" href="mailto:ljraffo@gmail.com">ljraffo@gmail.com</a>></span>:<br><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote"><div dir="ltr">Seems its just working with .avi as container and using mp4 just gives me like a half-second video for the same filesize. Also I didn't have a duration when watching the result over a video player, summing to the AVFormatContext->duration for the output stream's got me a duration when playing but I'm getting like 35 secs video for a 60 secs recording (It also looks kinda accelerated and it keeps just working for .avi). <br><div><div class="gmail-h5"><div class="gmail_extra"><br><div class="gmail_quote">2016-08-29 11:01 GMT-03:00 Leandro Raffo <span dir="ltr"><<a target="_blank" href="mailto:ljraffo@gmail.com">ljraffo@gmail.com</a>></span>:<br><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote"><div dir="ltr">I finally managed to make it work using the remuxing.c example by doing an <br><br>avformat_network_init()<br><div><br></div><div>And incrementaly adding (from zero) one to pts and dts with pts + 1 = dts.<br><br></div><div>I still don't understand why is this the case. "It Just Works" and I dont like it. Can someone please enlighten me on this? Why don't I need to use the in/out stream time_base? <br>Thanks in advance<br></div><div><div><div><br><div class="gmail_quote">---------- Forwarded message ----------<br>From: <b class="gmail_sendername">Leandro Raffo</b> <span dir="ltr"><<a target="_blank" href="mailto:ljraffo@gmail.com">ljraffo@gmail.com</a>></span><br>Date: 2016-08-24 10:25 GMT-03:00<br>Subject: Dumping RTSP(H264) stream to container<br>To: <a target="_blank" href="mailto:libav-user@ffmpeg.org">libav-user@ffmpeg.org</a><br><br><br><div dir="ltr"><div><div><div>Hello,<br><br></div>As the title say I'm trying to remux(I dont know if this is the correct term) a rtsp h264 stream into a container(mp4). I've been fiddling with the remuxing example given in the documentation for ffmpeg 3.1 (<a target="_blank" href="https://www.ffmpeg.org/doxygen/3.1/remuxing_8c-example.html">https://www.ffmpeg.org/doxyge<wbr>n/3.1/remuxing_8c-example.html</a><wbr>) with no avail. <br></div>I know I can read the frames because I wrote them to disk (decode -> encoded, not in h264 might i say so.). So I'm having troubles with the writing them raw part (writing the frames without an decode/encode pipeline).<br>I'm also a bit lost with the dts and pts in this part, how would this work for an encoded stream?. <br></div><div><br></div><div>These are the errors I'm getting when remuxing from two files <br></div><div><br>[mp4 @ 0x1d869e0] Using AVStream.codec.time_base as a timebase hint to the muxer is deprecated. Set AVStream.time_base instead.<br>[mp4 @ 0x1d869e0] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.<br>[mp4 @ 0x1d869e0] Using AVStream.codec.time_base as a timebase hint to the muxer is deprecated. Set AVStream.time_base instead.<br>[mp4 @ 0x1d869e0] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.<br>[mp4 @ 0x1d869e0] track 1: codec frame size is not set<br>[mp4 @ 0x1d869e0] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly <br></div><div><br></div><div>And when remuxing from the rtsp stream<br><br>[avi @ 0x18d1fe0] Using AVStream.codec.time_base as a timebase hint to the muxer is deprecated. Set AVStream.time_base instead.<br>[avi @ 0x18d1fe0] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.<br>[avi @ 0x18d1fe0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 15 >= 6<br></div><div><br><br></div><div>Thanks in advance.<br></div></div>
</div><br></div></div></div></div>
</blockquote></div><br></div></div></div></div>
<br>______________________________<wbr>_________________<br>
Libav-user mailing list<br>
<a href="mailto:Libav-user@ffmpeg.org">Libav-user@ffmpeg.org</a><br>
<a target="_blank" rel="noreferrer" href="http://ffmpeg.org/mailman/listinfo/libav-user">http://ffmpeg.org/mailman/<wbr>listinfo/libav-user</a><br>
<br></blockquote></div><br></div></div></div>