On 11/25/2015 10:10 PM, Claudiu Rad wrote:
On 11/24/2015 3:21 PM, Claudiu Rad wrote:hello warriors, so maybe this is obvious for some but not for me.i have some recordings produced by adobe's flash media server technologies, encoding originally done by their flash media live encoder in h264 + mp3/aac. only some of them exhibit a bad playback behavior when trying to -c copy them to mp4/HLS.
it seems that issues only exist with recordings made with h264 main profile. baseline works properly.
bad playback means stuttering in some players like the fps went down, but on apple playing runtimes i really don't know the term or how to describe it, it's like the image jumps forward/backward a few frames a couple of times per second while the audio runs fine.after searching a bit, i think what i am seeing is somewhat the same as described here: https://trac.ffmpeg.org/ticket/502 - jumping frames, frames not played in the right orderapple playing runtimes means: quicktime or safari on os x or iOS playing MP4 or HLS generated with ffmpeg.from my initial investigations, the difference between a well behaving adobe recording and a badly behaving one is related to PTS/DTS values, visually i guess its like apple plays back based on DTS not PTS, please observe how the frames are constantly interlaced:frame,pkt_pts_time,best_effort_timestamp_time,pkt_dts_time,pict_type *frame,0.000000,0.040000,0.000000,I* frame,0.080000,0.080000,0.080000,B frame,0.120000,0.120000,0.120000,B frame,0.160000,0.160000,0.160000,B *frame,0.040000,0.200000,0.200000,P* frame,0.240000,0.240000,0.240000,B frame,0.280000,0.280000,0.280000,B frame,0.320000,0.320000,0.320000,B *frame,0.200000,0.360000,0.360000,P* frame,0.400000,0.400000,0.400000,B ...BTW, what does 'best_effort_timestamp_time' mean?VLC plays both the original recording and ffmpeg outputs just fine.if i reencode with ffmpeg everything is then perfect, PTS/DTS are aligned, but i want to avoid that.what ideas do you have? how can i work on timestamps with ffmpeg and correct them via -c copy? basically a reorganizing / re-timestamping so that we have monotonically increasing PTS i assume should be enough. is this possible?
anyone? i really need to find a solution without re-encoding the whole data. please, we are speaking about TB..
why is this correctly played by flash player or VLC?
to put it in another way: can ffmpeg reorder frames in the video stream based on some criteria, in my case based on PTS? or does anybody know other tools that could do that? i would really try this to see if anything changes or re-timestamping is really necessary.a bad recording sample is here: http://www.datafilehost.com/d/6a22a099
i realized that even i don't know how to download that. re-posted the sample input here:
http://88.198.6.138/tsissue/in.f4f and the output of running the below command here: http://88.198.6.138/tsissue/out.mp4
ffmpeg output: ffmpeg -y -i in.f4f -c copy out.mp4ffmpeg version N-76816-g188a1a1-static Copyright (c) 2000-2015 the FFmpeg developersbuilt with gcc 4.7 (Debian 4.7.2-5)configuration: --prefix=/root/ffmpeg_build --extra-cflags='-I/root/ffmpeg_build/include -static' --extra-ldflags='-L/root/ffmpeg_build/lib -lm -static' --pkg-config-flags=--static --bindir=/root/bin --enable-gpl --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-nonfree --extra-version=static --disable-debug --disable-shared --enable-static --extra-cflags=--static --disable-doc --enable-pthreads --enable-postproc --enable-runtime-cpudetect --enable-version3 --disable-deviceslibavutil 55. 9.100 / 55. 9.100 libavcodec 57. 16.100 / 57. 16.100 libavformat 57. 19.100 / 57. 19.100 libavdevice 57. 0.100 / 57. 0.100 libavfilter 6. 15.100 / 6. 15.100 libswscale 4. 0.100 / 4. 0.100 libswresample 2. 0.101 / 2. 0.101 libpostproc 54. 0.100 / 54. 0.100[mov,mp4,m4a,3gp,3g2,mj2 @ 0x335fa40] multiple edit list entries, a/v desync might occur, patch welcomeLast message repeated 3 times Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'in.f4f': Metadata: major_brand : f4v minor_version : 1 compatible_brands: isommp42m4v creation_time : 2015-01-04 18:02:32 Duration: 00:05:24.98, start: 0.000000, bitrate: 368 kb/s Stream #0:0(eng): Data: none (amf0 / 0x30666D61), 0 kb/s (default) Metadata: creation_time : 2015-01-04 18:02:32 handler_name : MainConceptStream #0:1(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv), 426x240 [SAR 1:1 DAR 71:40], 200 kb/s, 25 fps, 25 tbr, 1k tbn, 50 tbc (default)Metadata: creation_time : 2015-01-04 18:02:32 handler_name : MainConcept encoder : AVC CodingStream #0:2(eng): Audio: mp3 (.mp3 / 0x33706D2E), 44100 Hz, stereo, s16p, 127 kb/s (default)Metadata: creation_time : 2015-01-04 18:02:32 handler_name : MainConcept Stream #0:3(eng): Data: none (rtmp / 0x706D7472), 338 kb/s Metadata: creation_time : 2015-01-04 18:02:32 handler_name : Adobe Systems Inc. Hint Handler[mp4 @ 0x34103e0] Codec for stream 0 does not use global headers but container format requires global headers [mp4 @ 0x34103e0] Codec for stream 1 does not use global headers but container format requires global headersOutput #0, mp4, to 'out.mp4': Metadata: major_brand : f4v minor_version : 1 compatible_brands: isommp42m4v encoder : Lavf57.19.100Stream #0:0(eng): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 426x240 [SAR 1:1 DAR 71:40], q=2-31, 200 kb/s, 25 fps, 25 tbr, 16k tbn, 1k tbc (default)Metadata: creation_time : 2015-01-04 18:02:32 handler_name : MainConcept encoder : AVC CodingStream #0:1(eng): Audio: mp3 (i[0][0][0] / 0x0069), 44100 Hz, stereo, 127 kb/s (default)Metadata: creation_time : 2015-01-04 18:02:32 handler_name : MainConcept Stream mapping: Stream #0:1 -> #0:0 (copy) Stream #0:2 -> #0:1 (copy) Press [q] to stop, [?] for helpframe= 8125 fps=0.0 q=-1.0 Lsize= 13238kB time=00:05:25.00 bitrate= 333.7kbits/s video:7972kB audio:5067kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.525306%thank you. -- Claudiu_______________________________________________ ffmpeg-user mailing list [email protected] http://ffmpeg.org/mailman/listinfo/ffmpeg-user -- Claudiu
_______________________________________________ ffmpeg-user mailing list [email protected] http://ffmpeg.org/mailman/listinfo/ffmpeg-user
