[mythtv-users] H264 conversion of interlaced MPEG2?

Jay Foster jayf0ster at roadrunner.com
Mon May 11 20:17:29 UTC 2015


On 5/11/2015 12:46 PM, Michael Stucky wrote:
> On Mon, May 4, 2015 at 5:30 PM, Dave MythTV <dave.mythtv at gmail.com 
> <mailto:dave.mythtv at gmail.com>> wrote:
>
>
>
>     On Sun, May 3, 2015 at 6:22 PM, Michael Stucky <mike at stucky.us
>     <mailto:mike at stucky.us>> wrote:
>
>         On Sun, May 3, 2015 at 5:46 PM, Dave MythTV
>         <dave.mythtv at gmail.com <mailto:dave.mythtv at gmail.com>> wrote:
>
>             Hello everyone.
>
>             I'm running some tests, preparing to reconfigure my
>             backend to transcode certain shows from US-broadcast ATSC
>             MPEG2 to H264 for hardware accelerated playback on our
>             various portable devices.  In doing this, I've been
>             experimenting with Mike Stucky's user job script:
>             https://www.mythtv.org/wiki/Transcode_Mpeg2_to_H264
>
>
>             However, I've hit a snag...  If I run this script on an
>             MPEG2 file with interlaced SD content, MythTV no longer
>             recognizes the resulting H264 file as being interlaced,
>             and playback in the MythTV frontend shows interlacing
>             artifacts.
>
>             I know I could modify Mike's script to specifically
>             deinterlace the content before or during the H264
>             conversion... but I didn't think this would have been
>             necessary? Shouldn't it be possible to convert interlaced
>             MPEG2 to interlaced H264, and continue using the
>             frontend's deinterlacer?
>
>
>             Additional information:
>             'mediainfo' detects the input MPEG2 file as being
>             interlaced, but shows the output H264 file as being
>             progressive scan.  So I think this might be an issue with
>             the ffmpeg conversion flagging (or encoding) the
>             non-deinterlaced output as progressive... and not an issue
>             with MythTV's player?
>
>
>             Thanks for the help.
>             - Dave
>
>
>         I have recently discovered this same behavior and I think you
>         are right about it being an ffmpeg issue. It looks like ffmpeg
>         automatically deinterlaces SD content, so I have modified the
>         "transcode" section to do a better job of deinterlacing (this
>         has the added benefit of allowing ffmpeg to do a better job of
>         compressing), this appears to be working for me, at least for
>         SD content:
>
>              task = System(path=transcoder, db=db)
>              try:
>                     output = task('-i "%s"' % tmpfile,
>                                   '-filter:v yadif=1',
>                                   '-sws_flags spline',
>                                   '-r 60000/1001',
>                                   '-c:v libx264',
>                                   '-preset:v slow',
>                                   '-crf:v 18',
>                                   '-threads 0',
>                                   '-c:a copy',
>         '-metadata:s:a:0',
>         'language="eng"',
>                                   '"%s"' % outfile,
>                                   '2> /dev/null')
>
>         If you find that this helps let me know and I will update the
>         script on the wiki.
>
>         Mike
>
>
>
>     Thanks Mike!  I'll do some experimenting with your changes this
>     evening.
>
>     A couple questions:
>     * What made you select 'spline' as the scaler method?  (just curious)
>     * Did you have a frame rate issue that required forcing the output
>     frame rate explicitly?
>
>     Also, I think there may be an issue with the yadif filter...
>     The FFmpeg docs state that the third yadif parameter (deint)
>     controls which frames to deinterlace.  The default is "all", but
>     I've been reading that applying yadif on **progressive** source
>     content will negatively impact the quality.
>     (example:
>     https://ffmpeg.org/pipermail/ffmpeg-user/2014-May/021412.html)
>
>     So I think to make your script flexible for both interlaced and
>     progressive source content, we would need to either call yadif as
>     yadif=1:-1:1 (and hope that the frames are properly flagged?), or
>     do some sort of other method (idet filter?) to detect the
>     interlacing and convert as necessary? There is a solution in the
>     message linked above using idet, but the author (Nick) reports
>     "mixed success"...  not sure what to make of that.
>
>     (Other links for reference...)
>     https://ffmpeg.org/ffmpeg-filters.html#yadif-1
>     https://ffmpeg.org/ffmpeg-filters.html#idet
>
>
>     Thanks again
>     - Dave
>
>
> Sorry for the delay, it was a busy weekend+... I am not an ffmpeg 
> expert so all the syntax came either from the original shell script or 
> searches for a better way to deinterlace. But I have done some 
> additional searching and testing have updated my script on the wiki 
> accordingly.
>
> "yadif=1" has become "yadif=0:-1:1" (mode 0 = one frame out for one 
> frame in, parity -1 = autodetect, and deint 1 = only deinterlace 
> frames marked as interlaced). "sws_flags spline" is removed (only 
> applies when scaling content?). "-r 60000/1001" is removed (this 
> actually caused every frame to be duplicated for interlaced content). 
> "threads 0" is removed (the h264 encoder uses all available threads by 
> default). "-c:a copy" replaced with "-strict -2" to use the internal 
> AAC encoder.
>
> This works and produces good quality output for all my content, 1080i, 
> 720p, and 480i all OTA to HDHomerun tuners.
>
> Mike
>
>
> _______________________________________________
> mythtv-users mailing list
> mythtv-users at mythtv.org
> http://lists.mythtv.org/mailman/listinfo/mythtv-users
> http://wiki.mythtv.org/Mailing_List_etiquette
> MythTV Forums: https://forum.mythtv.org
I took a look at the script on the wiki and had a question.  Does this 
break commercial skipping?  The script does not appear to reschedule a 
commflag job after the transcoding.
Jay
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mythtv.org/pipermail/mythtv-users/attachments/20150511/557ccd2d/attachment-0001.html>


More information about the mythtv-users mailing list