ffmpeg
Zeranoe FFmpeg
lame
RareWares
→MP3→LAME Bundles
2014年12月14日日曜日
[mp3] フォルダ内にある mp3 ファイルのCBR 48 kbps, Sampling rate 44.1 KHz, Monaural に一括変換
フォルダ内にある mp3 ファイルのCBR 48 kbps, Sampling rate 44.1 KHz, Monaural に一括変換する bat ファイル
for %%a in (*.mp3) do ( rem mp3 ファイルを CBR 48 kbps, 44.1 KHz, mono に変更する rename "%%a" "back_%%a" lame.exe -b 48 -a --resample 44.1 "back_%%a" "%%a" )
[mp3] flv ファイルから音声を抜き出して mp3 に変換する
- flv ファイルから音声を抜き出し wav に書き出す
ffmpeg.exe -i .\test.flv test.wav
- wav ファイルを mp3 に変換する
lame.exe test.wav test.mp3
lame.exe -b 48 -a --resample 44.1 test.wav test.mp3フォルダ内にある flv ファイルを mp3 に変換する bat ファイル
for %%a in (*.flv) do ( rem flv ファイルから音声を抜き出して wav ファイルに書き出す ffmpeg.exe -i "%%a" temp.wav rem wav ファイルを CBR 48 kbps, 44.1 KHz, mono にして mp3 に書き出す rem %%~na はファイル名部分のみ切り出している lame.exe -b 48 -a --resample 44.1 temp.wav "%%~na.mp3" del temp.wav )
2014年12月9日火曜日
[awk]BEGINブロック, ENDブロック
- BEGIN ブロック
- 初期化用のコードを定義する
- END ブロック
- 入力ファイルのすべての行の処理が終了した後に実行される。一般的には最終的な計算や、出力ストリームの最後に合計を出力するために使用される。
test02.awk
BEGIN { } { print $1 } END { }a.txt
500 1000 1000 500 1001 1001 500 1002 1002 550 1500 1500 550 1500 1500 645 1800 1800 720 2000 2000実行結果
> awk -f test02.awk a.txt 500 500 500 550 550 645 720入力ファイルがコロン ":" で区切られている場合。
d.txt
500:1000:1000 500:1001:1001 500:1002:1002 550:1500:1500 550:1500:1500 645:1800:1800 720:2000:2000実行結果
> awk -f .\test02.awk .\d.txt 500:1000:1000 500:1001:1001 500:1002:1002 550:1500:1500 550:1500:1500 645:1800:1800 720:2000:2000BEGIN ブロックで FS (Field Separator) を使って区切り文字を指定する。
test03.awk
BEGIN { FS=":" } { print $1 } END { }実行結果
> awk -f .\test03.awk .\d.txt 500 500 500 550 550 645 720
[awk]スクリプトを指定
-f で awk スクリプトを指定する。
test01.awk に記載されたスクリプトに a.txt を入力し、結果を a_new.txt に出力する。
awk -f test01.awk a.txt > a_new.txt
[awk]基本文法
printコマンドがa.txtの各行に対し順次実行される。
awk "{ print }" a.txta.txt
1 Hello 2 Good morning 3 Good night実行結果
> awk "{ print }" a.txt 1 Hello 2 Good morning 3 Good night
2014年6月29日日曜日
[Python][SQLite]データ登録後 Commit を不要にする
DB を開く時に isolation_level=None を指定することでデータ登録後に Commit を実行する必要がなくなる。
con = sqlite3.connect("data.db", isolation_level=None)
[Python][SQLite]使い方
Python 2.5 から SQLite3 が標準で使えるようになっている。
# -*- coding: utf-8 -*- import sqlite3 needCommit = 0 # Database を開く if needCommit == 1: con = sqlite3.connect("data.db"); else: con = sqlite3.connect("data.db", isolation_level=None); # Commit 不要 # Table 作成 sql = u"CREATE TABLE test(ID INT PRIMARY KEY, NAME TEXT NOT NULL);" con.execute(sql) # データ登録 sql = u"INSERT INTO test(ID, NAME) values (0, 'aaa');" con.execute(sql) # データ登録 その 2 sql = u"INSERT INTO test(ID, NAME) values (?, ?);" con.execute(sql, (1, "bbb")) con.execute(sql, (2, "ccc")) if needCommit == 1: con.commit() # レコード取得 c = con.cursor() c.execute("SELECT * FROM test") for row in c: print row[0], row[1] # Database を閉じる con.close();実行結果
> python sqlite.py 0 aaa 1 bbb 2 ccc各処理を関数化、テーブルが作成済みの場合は最初に drop する処理を追加
# -*- coding: utf-8 -*- import sqlite3 # Database を開く def connectDb(): print "Connect DB" con = sqlite3.connect("data.db", isolation_level=None); return con # Table 作成 def createTable(con, name): print "Create table"; sql = "CREATE TABLE %s(ID INT PRIMARY KEY, NAME TEST NOT NULL);" % name con.execute(sql) # データ登録 def addData(con, id, name): print "Add data (%d %s)" % (id, name) sql = "INSERT INTO test(ID, NAME) values(%d, '%s');" % (id, name) print sql; con.execute(sql) # 全レコード表示 def showAllRecord(con): c = con.cursor() c.execute("SELECT * FROM test") for row in c: print row[0], row[1] # Database を閉じる def closeDb(con): print "Close database" con.close() # テーブル一覧表示 def showAllTables(con): c = con.cursor() c.execute("SELECT NAME FROM sqlite_master WHERE type='table'") for row in c: print row[0] # テーブル作成済みか確認 def alreadyCreatedTable(con, name): c = con.cursor() c.execute("SELECT NAME FROM sqlite_master WHERE type='table'") for row in c: if row[0] == name: print "Found %s" % name; return 1 return 0 # Drop table def dropTable(con, name): print "Drop table %s" % name sql = "DROP TABLE %s;" % name con.execute(sql) # メイン処理 con = connectDb() showAllTables(con) if alreadyCreatedTable(con, 'test') == 1: dropTable(con, 'test') createTable(con, 'test') showAllTables(con) alreadyCreatedTable(con, 'test') addData(con, 0, 'aaa') addData(con, 1, 'bbb') addData(con, 2, 'ccc') showAllRecord(con) closeDb(con)実行結果
> python sqlite2.py Connect DB Create table test Found test Add data (0 aaa) INSERT INTO test(ID, NAME) values(0, 'aaa'); Add data (1 bbb) INSERT INTO test(ID, NAME) values(1, 'bbb'); Add data (2 ccc) INSERT INTO test(ID, NAME) values(2, 'ccc'); 0 aaa 1 bbb 2 ccc Close database > python sqlite2.py Connect DB test Found test Drop table test Create table test Found test Add data (0 aaa) INSERT INTO test(ID, NAME) values(0, 'aaa'); Add data (1 bbb) INSERT INTO test(ID, NAME) values(1, 'bbb'); Add data (2 ccc) INSERT INTO test(ID, NAME) values(2, 'ccc'); 0 aaa 1 bbb 2 ccc Close database
[Python]FTP - カレントディレクトリのファイルをアップロードする
ソースコード
# -*- coding: utf-8 -*- import os import re import ftplib # カレントディレクトリのファイルをアップロードする ## Upload files def uploadFiles(top, exp): for filename in os.listdir(top): if re.search(exp, filename): print top + filename f = file(filename, 'rb') ftp.storbinary('STOR ' + filename, f) f.close() # カレントディレクトリのファイル一覧を取得 user='username' password='password' server='servername' currentDir = '' dstDir = '' ftp = ftplib.FTP(server) ftp.login(user, password) uploadFiles('./', 'txt$') ftp.quit()実行結果
> python test02.py ./test.txt ./test02.txt ./test03.txt
[Python]FTP - サーバーにファイルを置く
ソースコード
# -*- coding: utf-8 -*- import ftplib # サーバーにファイルを置く (STOR) user='username' password='password' server='servername' filename='test.txt' ftp = ftplib.FTP(server) ftp.login(user, password) f = file(filename, 'rb') ftp.storbinary('STOR ' + filename, f) f.close() ftp.quit()実行結果
> python test01.py
[Python]FTP - サーバーログイン/ログアウト
ソースコード
# -*- coding: utf-8 -*- import ftplib # サーバーにログインしファイルリストを取得する (LIST) user='username' password='password' server='servername' ftp = ftplib.FTP(server) ftp.login(user, password) ftp.retrlines('LIST') ftp.quit()実行結果
> python test00.py drwxr-xr-x 19 username 503 4096 Sep 14 11:44 . drwxr-xr-x 19 username 503 4096 Sep 14 11:44 .. -rw-r--r-- 1 username 503 4802 Sep 14 11:45 index.html
[MySQL][Python]MySQLdb
使い方
データ挿入 (INSERT) 後は commit しないと DB に登録されないので注意。
# -*- coding:utf-8 -*- import MySQLdb # DB に接続 db = MySQLdb.connect(user="user", passwd="password", db="test", charset="utf8") # SELECT db.query("SELECT * FROM score") result = db.store_result() # 表示 num = result.num_rows() for row in result.fetch_row(num): print row # INSERT q = "INSERT INTO `test`.`score` (`id`, `user_id`, `score`)" q += " VALUES (NULL, '1', '97');" print "%s" % (q) db.query(q) # データ挿入後は commit db.commit() # Close db.close()
2014年1月20日月曜日
[CentOS] Postfix (MTA: Mail transfer agent) インストール
- yum を使ってパッケージをインストールする
# yum -y install postfix
- postfix の設定 (/etc/postfix/main.cf)
- サーバーのホスト名を追加
# INTERNET HOST AND DOMAIN NAMES # # The myhostname parameter specifies the internet hostname of this # mail system. The default is to use the fully-qualified domain name # from gethostname(). $myhostname is used as a default value for many # other configuration parameters. # #myhostname = host.domain.tld #myhostname = virtual.domain.tld myhostname = testserver.local ★
- ドメイン名を追加
# The mydomain parameter specifies the local internet domain name. # The default is to use $myhostname minus the first component. # $mydomain is used as a default value for many other configuration # parameters. # #mydomain = domain.tld mydomain = local ★
- ローカルからメールを送る時に送信元メールアドレスの @ 以降に追加するドメイン名を指定
# SENDING MAIL # # The myorigin parameter specifies the domain that locally-posted # mail appears to come from. The default is to append $myhostname, # which is fine for small sites. If you run a domain with multiple # machines, you should (1) change this to $mydomain and (2) set up # a domain-wide alias database that aliases each user to # user@that.users.mailhost. # # For the sake of consistency between sender and recipient addresses, # myorigin also specifies the default domain name that is appended # to recipient addresses that have no @domain part. # myorigin = $myhostname ★ #myorigin = $mydomain
- メールボックス形式を Maildir にする
# DELIVERY TO MAILBOX # # The home_mailbox parameter specifies the optional pathname of a # mailbox file relative to a user's home directory. The default # mailbox file is /var/spool/mail/user or /var/mail/user. Specify # "Maildir/" for qmail-style delivery (the / is required). # #home_mailbox = Mailbox home_mailbox = Mail/ ★
- 外部からのメール受信を許可する
# The inet_interfaces parameter specifies the network interface # addresses that this mail system receives mail on. By default, # the software claims all active interfaces on the machine. The # parameter also controls delivery of mail to user@[ip.address]. # # See also the proxy_interfaces parameter, for network addresses that # are forwarded to us via a proxy or network address translator. # # Note: you need to stop/start Postfix when this parameter changes. # #inet_interfaces = all #inet_interfaces = $myhostname #inet_interfaces = $myhostname, localhost #inet_interfaces = localhost inet_interfaces = all ★
- 自ドメイン宛メールを受信できるようにする
# The mydestination parameter specifies the list of domains that this # machine considers itself the final destination for. # # These domains are routed to the delivery agent specified with the # local_transport parameter setting. By default, that is the UNIX # compatible delivery agent that lookups all recipients in /etc/passwd # and /etc/aliases or their equivalent. # # The default is $myhostname + localhost.$mydomain. On a mail domain # gateway, you should also include $mydomain. # # Do not specify the names of virtual domains - those domains are # specified elsewhere (see VIRTUAL_README). # # Do not specify the names of domains that this machine is backup MX # host for. Specify those names via the relay_domains settings for # the SMTP server, or use permit_mx_backup if you are lazy (see # STANDARD_CONFIGURATION_README). # # The local machine is always the final destination for mail addressed # to user@[the.net.work.address] of an interface that the mail system # receives mail on (see the inet_interfaces parameter). # # Specify a list of host or domain names, /file/name or type:table # patterns, separated by commas and/or whitespace. A /file/name # pattern is replaced by its contents; a type:table is matched when # a name matches a lookup key (the right-hand side is ignored). # Continue long lines by starting the next line with whitespace. # # See also below, section "REJECTING MAIL FOR UNKNOWN LOCAL USERS". # #mydestination = $myhostname, localhost.$mydomain, localhost mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, # mail.$mydomain, www.$mydomain, ftp.$mydomain
- サーバーのホスト名を追加
- sendmail を停止する
# /etc/rc.d/init.d/sendmail stop sm-client を停止中: [ OK ] sendmail を停止中: [ OK ] # chkconfig sendmail off # chkconfig --list sendmail sendmail 0:off 1:off 2:off 3:off 4:off 5:off 6:off
- システムで使用するメールサーバー機能を sendmail から Postfix に切り替える
# alternatives --config mta 2 プログラムがあり 'mta' を提供します。 選択 コマンド ----------------------------------------------- *+ 1 /usr/sbin/sendmail.sendmail 2 /usr/sbin/sendmail.postfix Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2
- Postfix 起動
# /etc/rc.d/init.d/postfix start postfix を起動中: [ OK ]
- Postfix を自動起動するように設定する
# chkconfig postfix on # chkconfig --list postfix postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off
2014年1月12日日曜日
[CentOS] vsftpd インストール
- yum を使ってパッケージをインストールする
# yum -y install vsftpd
- vsftpd の設定 (/etc/vsftpd/vsftpd.conf)
- 変更前
# Allow anonymous FTP? (Beware - allowed by default if you comment this out). anonymous_enable=YES
- 変更後 (anonymous ユーザーのログインを禁止する)
# Allow anonymous FTP? (Beware - allowed by default if you comment this out). anonymous_enable=NO
- 変更前
- vsfptd 起動
# /etc/rc.d/init.d/vsftpd start vsftpd 用の vsftpd を起動中: [ OK ]
- vsftpd を自動起動するように設定する
# chkconfig --list vsftpd vsftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off # chkconfig vsftpd on # chkconfig --list vsftpd vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
- 動作確認
FTP クライアントソフトを使用してサーバーに FTP 接続できることを確認する
[CentOS] yum で proxy を使う
- /etc/yum.conf に以下を記載
# proxy setting proxy=http://proxyserver.local:8080 proxy_username=username proxy_password=password
- 動作確認
# yum update
登録:
投稿 (Atom)