<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>2017/02/04 on Yano&#39;s digital garage</title>
    <link>https://www.bravotouring.com/~yano/archives/2017/02/04/</link>
    <description>Recent content in 2017/02/04 on Yano&#39;s digital garage</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 04 Feb 2017 23:21:50 +0900</lastBuildDate>
    <atom:link href="https://www.bravotouring.com/~yano/archives/2017/02/04/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>NVENC実戦配備</title>
      <link>https://www.bravotouring.com/~yano/diary/it/20170204_nvenc.htm</link>
      <pubDate>Sat, 04 Feb 2017 23:21:50 +0900</pubDate>
      <guid>https://www.bravotouring.com/~yano/diary/it/20170204_nvenc.htm</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.bravotouring.com/~yano/diary/it/20170203_nvenc.htm&#34;&gt;昨日&lt;/a&gt;、NVENCに対応したUbuntuでのハードウェアエンコード環境ができたので、溜まったtsファイルをエンコードしていくことに。&lt;/p&gt;&#xA;&lt;p&gt;PT2とPT3の複数実装で録画は並列でできるものの、&lt;span class=&#34;Warning&#34;&gt;GPUエンコードは並列処理できない&lt;/span&gt;と思われるので予約録画の流れでエンコードさせる仕組みは見直し、録画スクリプトはtsファイルを&lt;span class=&#34;Path&#34;&gt;/mnt/ts_pool/10_recorded&lt;/span&gt;に移動させたところで終了とする。&#xA;&lt;blockquote class=&#34;Log&#34;&gt;&#xA;yano@GT110b:~$ ll /mnt/ts_pool/&lt;br/&gt;&#xA;total 76&lt;br/&gt;&#xA;drwxr-xr-x  6 yano family    97 Feb  3 22:00 ./&lt;br/&gt;&#xA;drwxr-xr-x 14 root root    4096 Dec  9 17:23 ../&lt;br/&gt;&#xA;drwxrwxrwx  2 yano family 49152 Feb  4 22:45 10_recorded/&lt;br/&gt;&#xA;drwxrwxrwx  2 yano family  4096 Feb  4 09:39 19_encode_failed/&lt;br/&gt;&#xA;drwxrwxrwx  2 yano family 12288 Feb  4 22:45 20_encoded/&lt;br/&gt;&#xA;drwxrwxrwx  2 yano family 16384 Feb  4 08:02 30_ts_files/&lt;br/&gt;&#xA;yano@GT110b:~$ &lt;/blockquote&gt;&#xA;&lt;p&gt;10分ごとにcronで起動する周期タスク&lt;span class=&#34;Path&#34;&gt;~/etc/cron.sh/encode_mp4.cron&lt;/span&gt;が&lt;span class=&#34;Path&#34;&gt;/mnt/ts_pool/10_recorded&lt;/span&gt;から古い順に数本ずつピックアップして、エンコードできたのは&lt;span class=&#34;Path&#34;&gt;/mnt/ts_pool/20_encoded&lt;/span&gt;に、エラーになったものは&lt;span class=&#34;Path&#34;&gt;/mnt/ts_pool/19_encode_failed&lt;/span&gt;に移動させていく仕組みに。PIDFILEを使って重複起動しないようにするのを忘れずに。&lt;/p&gt;&#xA;&lt;blockquote class=&#34;Log&#34;&gt;&#xA;yano@GT110b:~$ cat ~/etc/cron.sh/encode_mp4.cron&lt;br/&gt;&#xA;#!/bin/bash&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;PATH=/bin:/usr/bin:/sbin:/usr/sbin&lt;br/&gt;&#xA;NUM_FILES=5&lt;br/&gt;&#xA;EXT_TS=&#34;.ts&#34;&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;PIDFILE=/home/yano/run/`basename $0`.pid&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;UUID=`id | sed &#39;s/uid=\([0-9]*\)(.*/\1/&#39;`;&lt;br/&gt;&#xA;[ $UUID -eq 0 ] &amp;&amp; PIDFILE=/var/run/`basename $0`.pid;&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;if [ -e ${PIDFILE} ];&lt;br/&gt;&#xA;then&lt;br/&gt;&#xA;    exit;&lt;br/&gt;&#xA;fi&lt;br/&gt;&#xA;echo $$ &gt; ${PIDFILE}&lt;br/&gt;&#xA;trap &#34;/bin/rm -f ${PIDFILE}; exit&#34; 1 2 3 15&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;CONFIGFILE=/etc/default/epgrec&lt;br/&gt;&#xA;# source config info&lt;br/&gt;&#xA;[ -r ${CONFIGFILE} ] &amp;&amp; . ${CONFIGFILE}&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;TS_FILES=`ls -1 ${TS_RECORDED}/*${EXT_TS} | head -${NUM_FILES}`&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;for f in ${TS_FILES};&lt;br/&gt;&#xA;do&lt;br/&gt;&#xA;    /home/yano/bin/ts2mp4_nvidia.sh $f 2&gt;&amp;1 &gt; /dev/null&lt;br/&gt;&#xA;    if [ $? -eq 0 ];&lt;br/&gt;&#xA;    then&lt;br/&gt;&#xA;        chown ${OWNER} ${MP4DIR}/`basename $f ${EXT_TS}`.mp4;&lt;br/&gt;&#xA;        mv $f ${TS_ENCODED};&lt;br/&gt;&#xA;    else&lt;br/&gt;&#xA;        mv $f ${TS_ENCODE_FAILED};&lt;br/&gt;&#xA;    fi;&lt;br/&gt;&#xA;done&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;if [ -e ${PIDFILE} ];&lt;br/&gt;&#xA;then&lt;br/&gt;&#xA;    rm -f ${PIDFILE};&lt;br/&gt;&#xA;fi&lt;br/&gt;&#xA;yano@GT110b:~$ &lt;/blockquote&gt;&#xA;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
