<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Sun, May 3, 2015 at 6:22 PM, Michael Stucky <span dir="ltr"><<a href="mailto:mike@stucky.us" target="_blank">mike@stucky.us</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div class="h5">On Sun, May 3, 2015 at 5:46 PM, Dave MythTV <span dir="ltr"><<a href="mailto:dave.mythtv@gmail.com" target="_blank">dave.mythtv@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><div><div><div>Hello everyone.<br></div><br></div>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:<br></div><a href="https://www.mythtv.org/wiki/Transcode_Mpeg2_to_H264" target="_blank">https://www.mythtv.org/wiki/Transcode_Mpeg2_to_H264</a><br><br><br></div>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.<br><br></div>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?<br><div><div><br><br></div><div>Additional information:<br></div><div>'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?<br><br><br></div><div>Thanks for the help.<span><font color="#888888"><br></font></span></div><span><font color="#888888"><div>- Dave<br></div><div><br></div></font></span></div></div></blockquote><div><br></div></div></div><div>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:</div><div><br></div><div>     task = System(path=transcoder, db=db)</div><div>     try:<br></div><div>            output = task('-i "%s"' % tmpfile,</div><div>                          '-filter:v yadif=1',</div><div>                          '-sws_flags spline',<br></div><div>                          '-r 60000/1001',</div><div>                          '-c:v libx264',</div><div>                          '-preset:v slow',</div><div>                          '-crf:v 18',</div><div>                          '-threads 0',<br></div><div>                          '-c:a copy',</div><div>                          '-metadata:s:a:0',</div><div>                          'language="eng"',</div><div>                          '"%s"' % outfile,</div><div>                          '2> /dev/null')</div><div><br></div><div>If you find that this helps let me know and I will update the script on the wiki.</div><div><br></div><div>Mike</div></div></div></div><br></blockquote><div><br><br></div><div>Thanks Mike!  I'll do some experimenting with your changes this evening.  <br><br>A couple questions:<br></div><div>* What made you select 'spline' as the scaler method?  (just curious)<br></div><div>* Did you have a frame rate issue that required forcing the output frame rate explicitly?<br><br></div><div>Also, I think there may be an issue with the yadif filter...<br></div><div>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.<br>(example: <a href="https://ffmpeg.org/pipermail/ffmpeg-user/2014-May/021412.html">https://ffmpeg.org/pipermail/ffmpeg-user/2014-May/021412.html</a>)<br><br></div><div>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.<br><br></div><div>(Other links for reference...)<br></div><div><a href="https://ffmpeg.org/ffmpeg-filters.html#yadif-1">https://ffmpeg.org/ffmpeg-filters.html#yadif-1</a>   <br></div><div><a href="https://ffmpeg.org/ffmpeg-filters.html#idet">https://ffmpeg.org/ffmpeg-filters.html#idet</a><br><br></div><div><br></div><div>Thanks again<br></div><div>- Dave<br></div><div><br></div></div></div></div>