PT2で録画したデータをエンコードしてiPhoneで再生する
前回に続き、foltia導入の準備。今回はfoltiaのGUI環境のインストールではなく、録画したTSファイルをiPhoneで再生できるようにエンコードする部分のメモ。WEBやDBなどを一度に設定すると動作しなかった時に原因の切り分けに時間がかかるので、先に録画→エンコードの動作を確認しておく。この記事から読まれる方は、一度前回の記事を参照して欲しい。
目次
- リポジトリの追加
- wine、mplayer、ImageMagick、yasm、ffmpegのインストール
- MP4Boxのインストール
- TsSplitter.exe、tss.py、neroAacEncの保存
- エンコードテスト
- ffmpegのエンコード設定を確認
リポジトリの追加
wineやmplayerなど、公式リポジトリではインストールできないソフトをインストールできるようにするため、リポジトリを追加する。
[foltia@foltiadev ~]$ su - パスワード: [root@foltiadev ~]# vi /etc/yum.repos.d/CentOS-Dag.repo [root@foltiadev ~]# cat /etc/yum.repos.d/CentOS-Dag.repo [dag] name=CentOS-$releasever - Dag baseurl=http://ftp.riken.jp/Linux/dag/redhat/el$releasever/en/$basearch/dag http://apt.sw.be/redhat/el$releasever/en/$basearch/dag gpgcheck=1 enabled=0 gpgkey=http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
常にdagリポジトリを使用する場合、上記ファイルのenabled=0をenabled=1に変更する。今回はインストールの都度、リポジトリを指定することとして、enabled=0としている。
wine、mplayer、ImageMagick、yasm、ffmpegのインストール
yumでインストールできるソフトウェアをインストールする。一度にインストールして問題ない。例としてwineのインストールログを残す。
[root@foltiadev ~]# yum --enablerepo=dag install wine Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * addons: ftp.riken.jp * base: ftp.riken.jp * dag: ftp.riken.jp * extras: ftp.riken.jp * updates: ftp.riken.jp dag | 1.1 kB 00:00 dag/primary | 3.7 MB 00:45 dag 10271/10271 Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package wine.i386 0:1.0.1-1.el5.rf set to be updated --> Processing Dependency: wine-twain = 1.0.1-1.el5.rf for package: wine --> Processing Dependency: wine-esd = 1.0.1-1.el5.rf for package: wine --> Processing Dependency: wine-jack = 1.0.1-1.el5.rf for package: wine --> Processing Dependency: wine-capi = 1.0.1-1.el5.rf for package: wine --> Processing Dependency: wine-nas = 1.0.1-1.el5.rf for package: wine --> Processing Dependency: wine-core = 1.0.1-1.el5.rf for package: wine --> Processing Dependency: wine-ldap = 1.0.1-1.el5.rf for package: wine --> Processing Dependency: wine-cms = 1.0.1-1.el5.rf for package: wine --> Running transaction check ---> Package wine-capi.i386 0:1.0.1-1.el5.rf set to be updated ---> Package wine-cms.i386 0:1.0.1-1.el5.rf set to be updated ---> Package wine-core.i386 0:1.0.1-1.el5.rf set to be updated ---> Package wine-esd.i386 0:1.0.1-1.el5.rf set to be updated ---> Package wine-jack.i386 0:1.0.1-1.el5.rf set to be updated ---> Package wine-ldap.i386 0:1.0.1-1.el5.rf set to be updated ---> Package wine-nas.i386 0:1.0.1-1.el5.rf set to be updated ---> Package wine-twain.i386 0:1.0.1-1.el5.rf set to be updated --> Finished Dependency Resolution Dependencies Resolved ================================================================================================================ Package Arch Version Repository Size ================================================================================================================ Installing: wine i386 1.0.1-1.el5.rf dag 3.0 k Installing for dependencies: wine-capi i386 1.0.1-1.el5.rf dag 16 k wine-cms i386 1.0.1-1.el5.rf dag 65 k wine-core i386 1.0.1-1.el5.rf dag 36 M wine-esd i386 1.0.1-1.el5.rf dag 43 k wine-jack i386 1.0.1-1.el5.rf dag 13 k wine-ldap i386 1.0.1-1.el5.rf dag 252 k wine-nas i386 1.0.1-1.el5.rf dag 12 k wine-twain i386 1.0.1-1.el5.rf dag 23 k Transaction Summary ================================================================================================================ Install 9 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 37 M Is this ok [y/N]: y Downloading Packages: (1/9): wine-1.0.1-1.el5.rf.i386.rpm | 3.0 kB 00:00 (2/9): wine-nas-1.0.1-1.el5.rf.i386.rpm | 12 kB 00:00 (3/9): wine-jack-1.0.1-1.el5.rf.i386.rpm | 13 kB 00:00 (4/9): wine-capi-1.0.1-1.el5.rf.i386.rpm | 16 kB 00:00 (5/9): wine-twain-1.0.1-1.el5.rf.i386.rpm | 23 kB 00:00 (6/9): wine-esd-1.0.1-1.el5.rf.i386.rpm | 43 kB 00:00 (7/9): wine-cms-1.0.1-1.el5.rf.i386.rpm | 65 kB 00:01 (8/9): wine-ldap-1.0.1-1.el5.rf.i386.rpm | 252 kB 00:02 (9/9): wine-core-1.0.1-1.el5.rf.i386.rpm | 36 MB 07:07 ---------------------------------------------------------------------------------------------------------------- Total 86 kB/s | 37 MB 07:14 警告: rpmts_HdrFromFdno: ヘッダ V3 DSA signature: NOKEY, key ID 6b8d79e6 dag/gpgkey | 1.6 kB 00:00 Importing GPG key 0x6B8D79E6 "Dag Wieers (Dag Apt Repository v1.0) <dag@wieers.com>" from http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt Is this ok [y/N]: y Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : wine-core 1/9 Installing : wine-cms 2/9 Installing : wine-jack 3/9 Installing : wine-twain 4/9 Installing : wine-esd 5/9 Installing : wine-nas 6/9 Installing : wine-capi 7/9 Installing : wine-ldap 8/9 Installing : wine 9/9 Installed: wine.i386 0:1.0.1-1.el5.rf Dependency Installed: wine-capi.i386 0:1.0.1-1.el5.rf wine-cms.i386 0:1.0.1-1.el5.rf wine-core.i386 0:1.0.1-1.el5.rf wine-esd.i386 0:1.0.1-1.el5.rf wine-jack.i386 0:1.0.1-1.el5.rf wine-ldap.i386 0:1.0.1-1.el5.rf wine-nas.i386 0:1.0.1-1.el5.rf wine-twain.i386 0:1.0.1-1.el5.rf Complete!
以下、同様にしてmplayer、ImageMagick、yasm、ffmpegをインストールする。
MP4Boxのインストール
MP4Boxはyumではインストールできないため、ソースをコンパイルしてインストールする。ダウンロード、解凍と順調に進んでいたが、コンパイル時にエラーが発生したので修正する。
[foltia@foltiadev ~]$ wget http://downloads.sourceforge.net/gpac/gpac-0.4.5.tar.gz --2010-04-04 11:17:14-- http://downloads.sourceforge.net/gpac/gpac-0.4.5.tar.gz downloads.sourceforge.net をDNSに問いあわせています... 216.34.181.59 downloads.sourceforge.net|216.34.181.59|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 302 Found 場所: http://jaist.dl.sourceforge.net/project/gpac/GPAC/GPAC%200.4.5/gpac-0.4.5.tar.gz [続く] --2010-04-04 11:17:15-- http://jaist.dl.sourceforge.net/project/gpac/GPAC/GPAC%200.4.5/gpac-0.4.5.tar.gz jaist.dl.sourceforge.net をDNSに問いあわせています... 150.65.7.130 jaist.dl.sourceforge.net|150.65.7.130|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 4269054 (4.1M) [application/x-gzip] `gpac-0.4.5.tar.gz' に保存中 100%[======================================================================>] 4,269,054 107K/s 時間 31s 2010-04-04 11:17:46 (137 KB/s) - `gpac-0.4.5.tar.gz' へ保存完了 [4269054/4269054] [foltia@foltiadev ~]$ tar xvzf gpac-0.4.5.tar.gz gpac/ 〜(中略)〜 [foltia@foltiadev ~]$ cd gpac [foltia@foltiadev gpac]$ sh ./configure which: no wx-config in (/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/foltia/bin) ** System Configuration Install prefix: /usr/local Source path: /home/foltia/gpac C compiler: gcc make: make CPU: x86 Big Endian: no ** GPAC 0.4.5 Core Configuration ** debug version: no GProf enabled: no Memory tracking enabled: no read-only version: no fixed-point version: no IPV6 Support: yes IsoMedia MovieFragments support: yes SVG Support disabled: no ** Detected libraries ** zlib: system OSS Audio: yes ALSA Audio: yes Jack Audio: no PulseAudio Audio: no X11 Shared Memory support: yes (path: /usr/X11R6) X11 XVideo support: yes SDL Support: yes OpenGL support: yes TinyGL support: no OpenSSL support: yes Mozilla XUL/GECKO support: no Joystick support: no Renoir enabled: no DVB Support: yes XMLPRC Support: no wxWidgets support: no ** Extra Libraries used ** SpiderMonkey: no FreeType: system JPEG: system OpenJPEG: no PNG: system MAD: no FAAD: no XVID: no FFMPEG: no Xiph OGG: system Xiph Vorbis: system Xiph Theora: no A52 (AC3): no Creating config.mak Done - type 'make help' for make info, 'make' to build [foltia@foltiadev gpac]$ make make -C src all make[1]: ディレクトリ `/home/foltia/gpac/src' に入ります gcc -O3 -fno-strict-aliasing -Wno-pointer-sign -I/home/foltia/gpac/include -I../ -DGPAC_HAVE_CONFIG_H -c -o utils/os_divers.o utils/os_divers.c 〜(中略)〜 gcc -O3 -fno-strict-aliasing -Wno-pointer-sign -w -I/home/foltia/gpac/include -c -o mcrypt/sha1.o mcrypt/sha1.c ar cr ../bin/gcc/libgpac_static.a utils/os_divers.o utils/os_net.o utils/os_module.o utils/os_thread.o utils/list.o utils/base_encoding.o utils/bitstream.o utils/color.o utils/configfile.o utils/downloader.o utils/error.o utils/math.o utils/path2d.o utils/path2d_stroker.o utils/module.o utils/token.o utils/uni_bidi.o utils/url.o utils/utf.o utils/xml_parser.o mcrypt/cbc.o mcrypt/cfb.o mcrypt/ctr.o mcrypt/des.o mcrypt/ecb.o mcrypt/g_crypt.o mcrypt/ncfb.o mcrypt/nofb.o mcrypt/ofb.o mcrypt/rijndael-128.o mcrypt/rijndael-192.o mcrypt/rijndael-256.o mcrypt/stream.o mcrypt/tripledes.o mcrypt/sha1.o scenegraph/base_scenegraph.o scenegraph/mpeg4_animators.o scenegraph/commands.o scenegraph/mpeg4_nodes.o scenegraph/mpeg4_valuator.o scenegraph/vrml_interpolators.o scenegraph/vrml_proto.o scenegraph/vrml_route.o scenegraph/vrml_script.o scenegraph/vrml_smjs.o scenegraph/vrml_tools.o scenegraph/x3d_nodes.o scenegraph/svg_attributes.o scenegraph/svg_types.o scenegraph/svg_smjs.o scenegraph/smil_anim.o scenegraph/smil_timing.o scenegraph/svg_properties.o scenegraph/dom_events.o scenegraph/dom_smjs.o scenegraph/xbl_process.o scenegraph/xml_ns.o ietf/rtcp.o ietf/rtp.o ietf/rtp_packetizer.o ietf/rtp_pck_3gpp.o ietf/rtp_pck_mpeg12.o ietf/rtp_pck_mpeg4.o ietf/rtsp_command.o ietf/rtsp_common.o ietf/rtsp_response.o ietf/rtsp_session.o ietf/sdp.o ietf/rtp_depacketizer.o bifs/arith_decoder.o bifs/bifs_codec.o bifs/bifs_node_tables.o bifs/com_dec.o bifs/com_enc.o bifs/conditional.o bifs/field_decode.o bifs/field_encode.o bifs/memory_decoder.o bifs/predictive_mffield.o bifs/quantize.o bifs/script_dec.o bifs/script_enc.o bifs/unquantize.o isomedia/avc_ext.o isomedia/box_code_3gpp.o isomedia/box_code_apple.o isomedia/box_code_base.o isomedia/box_code_isma.o isomedia/box_code_meta.o isomedia/box_dump.o isomedia/box_funcs.o isomedia/data_map.o isomedia/hint_track.o isomedia/hinting.o isomedia/isma_sample.o isomedia/isom_intern.o isomedia/isom_read.o isomedia/isom_store.o isomedia/isom_write.o isomedia/media.o isomedia/media_odf.o isomedia/meta.o isomedia/movie_fragments.o isomedia/sample_descs.o isomedia/stbl_read.o isomedia/stbl_write.o isomedia/track.o isomedia/tx3g.o odf/desc_private.o odf/descriptors.o odf/ipmpx_code.o odf/ipmpx_dump.o odf/ipmpx_parse.o odf/oci_codec.o odf/odf_code.o odf/odf_codec.o odf/odf_command.o odf/odf_dump.o odf/odf_parse.o odf/qos.o odf/slc.o media_tools/av_parsers.o media_tools/avilib.o media_tools/gpac_ogg.o media_tools/img.o media_tools/ismacryp.o media_tools/isom_hinter.o media_tools/isom_tools.o media_tools/media_export.o media_tools/media_import.o media_tools/mpeg2_ps.o media_tools/text_import.o media_tools/saf.o media_tools/mpegts.o media_tools/vobsub.o scene_manager/loader_bt.o scene_manager/loader_isom.o scene_manager/loader_qt.o scene_manager/loader_xmt.o scene_manager/scene_dump.o scene_manager/scene_manager.o scene_manager/scene_stats.o scene_manager/swf_parse.o scene_manager/swf_bifs.o scene_manager/text_to_bifs.o scene_manager/encode_cbk.o scene_manager/encode_isom.o scene_manager/loader_svg.o terminal/channel.o terminal/clock.o terminal/decoder.o terminal/term_node_init.o terminal/inline.o terminal/input_sensor.o terminal/media_control.o terminal/media_manager.o terminal/media_memory.o terminal/media_object.o terminal/media_sensor.o terminal/network_service.o terminal/object_browser.o terminal/object_manager.o terminal/terminal.o terminal/svg_external.o compositor/audio_input.o compositor/audio_mixer.o compositor/audio_render.o compositor/bindable.o compositor/camera.o compositor/compositor.o compositor/compositor_2d.o compositor/compositor_3d.o compositor/compositor_node_init.o compositor/drawable.o compositor/events.o compositor/font_engine.o compositor/hardcoded_protos.o compositor/mesh.o compositor/mesh_collide.o compositor/mesh_tesselate.o compositor/mpeg4_animstream.o compositor/mpeg4_audio.o compositor/mpeg4_background.o compositor/mpeg4_background2d.o compositor/mpeg4_bitmap.o compositor/mpeg4_composite.o compositor/mpeg4_form.o compositor/mpeg4_geometry_2d.o compositor/mpeg4_geometry_3d.o compositor/mpeg4_geometry_ifs2d.o compositor/mpeg4_geometry_ils2d.o compositor/mpeg4_gradients.o compositor/mpeg4_grouping.o compositor/mpeg4_grouping_2d.o compositor/mpeg4_grouping_3d.o compositor/mpeg4_layer_2d.o compositor/mpeg4_layer_3d.o compositor/mpeg4_layout.o compositor/mpeg4_lighting.o compositor/mpeg4_path_layout.o compositor/mpeg4_sensors.o compositor/mpeg4_sound.o compositor/mpeg4_text.o compositor/mpeg4_textures.o compositor/mpeg4_timesensor.o compositor/mpeg4_viewport.o compositor/navigate.o compositor/offscreen_cache.o compositor/svg_base.o compositor/svg_font.o compositor/svg_geometry.o compositor/svg_grouping.o compositor/svg_media.o compositor/svg_paint_servers.o compositor/svg_text.o compositor/texturing.o compositor/texturing_gl.o compositor/visual_manager.o compositor/visual_manager_2d.o compositor/visual_manager_2d_draw.o compositor/visual_manager_3d.o compositor/visual_manager_3d_gl.o compositor/x3d_geometry.o laser/lsr_enc.o laser/lsr_dec.o laser/lsr_tables.o ranlib ../bin/gcc/libgpac_static.a gcc -shared "-Wl,-soname,libgpac.so" -Wl --warn-common -o ../bin/gcc/libgpac.so utils/os_divers.o utils/os_net.o utils/os_module.o utils/os_thread.o utils/list.o utils/base_encoding.o utils/bitstream.o utils/color.o utils/configfile.o utils/downloader.o utils/error.o utils/math.o utils/path2d.o utils/path2d_stroker.o utils/module.o utils/token.o utils/uni_bidi.o utils/url.o utils/utf.o utils/xml_parser.o mcrypt/cbc.o mcrypt/cfb.o mcrypt/ctr.o mcrypt/des.o mcrypt/ecb.o mcrypt/g_crypt.o mcrypt/ncfb.o mcrypt/nofb.o mcrypt/ofb.o mcrypt/rijndael-128.o mcrypt/rijndael-192.o mcrypt/rijndael-256.o mcrypt/stream.o mcrypt/tripledes.o mcrypt/sha1.o scenegraph/base_scenegraph.o scenegraph/mpeg4_animators.o scenegraph/commands.o scenegraph/mpeg4_nodes.o scenegraph/mpeg4_valuator.o scenegraph/vrml_interpolators.o scenegraph/vrml_proto.o scenegraph/vrml_route.o scenegraph/vrml_script.o scenegraph/vrml_smjs.o scenegraph/vrml_tools.o scenegraph/x3d_nodes.o scenegraph/svg_attributes.o scenegraph/svg_types.o scenegraph/svg_smjs.o scenegraph/smil_anim.o scenegraph/smil_timing.o scenegraph/svg_properties.o scenegraph/dom_events.o scenegraph/dom_smjs.o scenegraph/xbl_process.o scenegraph/xml_ns.o ietf/rtcp.o ietf/rtp.o ietf/rtp_packetizer.o ietf/rtp_pck_3gpp.o ietf/rtp_pck_mpeg12.o ietf/rtp_pck_mpeg4.o ietf/rtsp_command.o ietf/rtsp_common.o ietf/rtsp_response.o ietf/rtsp_session.o ietf/sdp.o ietf/rtp_depacketizer.o bifs/arith_decoder.o bifs/bifs_codec.o bifs/bifs_node_tables.o bifs/com_dec.o bifs/com_enc.o bifs/conditional.o bifs/field_decode.o bifs/field_encode.o bifs/memory_decoder.o bifs/predictive_mffield.o bifs/quantize.o bifs/script_dec.o bifs/script_enc.o bifs/unquantize.o isomedia/avc_ext.o isomedia/box_code_3gpp.o isomedia/box_code_apple.o isomedia/box_code_base.o isomedia/box_code_isma.o isomedia/box_code_meta.o isomedia/box_dump.o isomedia/box_funcs.o isomedia/data_map.o isomedia/hint_track.o isomedia/hinting.o isomedia/isma_sample.o isomedia/isom_intern.o isomedia/isom_read.o isomedia/isom_store.o isomedia/isom_write.o isomedia/media.o isomedia/media_odf.o isomedia/meta.o isomedia/movie_fragments.o isomedia/sample_descs.o isomedia/stbl_read.o isomedia/stbl_write.o isomedia/track.o isomedia/tx3g.o odf/desc_private.o odf/descriptors.o odf/ipmpx_code.o odf/ipmpx_dump.o odf/ipmpx_parse.o odf/oci_codec.o odf/odf_code.o odf/odf_codec.o odf/odf_command.o odf/odf_dump.o odf/odf_parse.o odf/qos.o odf/slc.o media_tools/av_parsers.o media_tools/avilib.o media_tools/gpac_ogg.o media_tools/img.o media_tools/ismacryp.o media_tools/isom_hinter.o media_tools/isom_tools.o media_tools/media_export.o media_tools/media_import.o media_tools/mpeg2_ps.o media_tools/text_import.o media_tools/saf.o media_tools/mpegts.o media_tools/vobsub.o scene_manager/loader_bt.o scene_manager/loader_isom.o scene_manager/loader_qt.o scene_manager/loader_xmt.o scene_manager/scene_dump.o scene_manager/scene_manager.o scene_manager/scene_stats.o scene_manager/swf_parse.o scene_manager/swf_bifs.o scene_manager/text_to_bifs.o scene_manager/encode_cbk.o scene_manager/encode_isom.o scene_manager/loader_svg.o terminal/channel.o terminal/clock.o terminal/decoder.o terminal/term_node_init.o terminal/inline.o terminal/input_sensor.o terminal/media_control.o terminal/media_manager.o terminal/media_memory.o terminal/media_object.o terminal/media_sensor.o terminal/network_service.o terminal/object_browser.o terminal/object_manager.o terminal/terminal.o terminal/svg_external.o compositor/audio_input.o compositor/audio_mixer.o compositor/audio_render.o compositor/bindable.o compositor/camera.o compositor/compositor.o compositor/compositor_2d.o compositor/compositor_3d.o compositor/compositor_node_init.o compositor/drawable.o compositor/events.o compositor/font_engine.o compositor/hardcoded_protos.o compositor/mesh.o compositor/mesh_collide.o compositor/mesh_tesselate.o compositor/mpeg4_animstream.o compositor/mpeg4_audio.o compositor/mpeg4_background.o compositor/mpeg4_background2d.o compositor/mpeg4_bitmap.o compositor/mpeg4_composite.o compositor/mpeg4_form.o compositor/mpeg4_geometry_2d.o compositor/mpeg4_geometry_3d.o compositor/mpeg4_geometry_ifs2d.o compositor/mpeg4_geometry_ils2d.o compositor/mpeg4_gradients.o compositor/mpeg4_grouping.o compositor/mpeg4_grouping_2d.o compositor/mpeg4_grouping_3d.o compositor/mpeg4_layer_2d.o compositor/mpeg4_layer_3d.o compositor/mpeg4_layout.o compositor/mpeg4_lighting.o compositor/mpeg4_path_layout.o compositor/mpeg4_sensors.o compositor/mpeg4_sound.o compositor/mpeg4_text.o compositor/mpeg4_textures.o compositor/mpeg4_timesensor.o compositor/mpeg4_viewport.o compositor/navigate.o compositor/offscreen_cache.o compositor/svg_base.o compositor/svg_font.o compositor/svg_geometry.o compositor/svg_grouping.o compositor/svg_media.o compositor/svg_paint_servers.o compositor/svg_text.o compositor/texturing.o compositor/texturing_gl.o compositor/visual_manager.o compositor/visual_manager_2d.o compositor/visual_manager_2d_draw.o compositor/visual_manager_3d.o compositor/visual_manager_3d_gl.o compositor/x3d_geometry.o laser/lsr_enc.o laser/lsr_dec.o laser/lsr_tables.o -lm -L/usr/local/lib -L/usr/X11R6/lib -lGL -lglut -lz -lssl -lcrypto -ljpeg -lpng -lpthread -ldl /usr/bin/ld: cannot find -lglut collect2: ld はステータス 1 で終了しました make[1]: *** [libgpac.so] エラー 1 make[1]: ディレクトリ `/home/foltia/gpac/src' から出ます make: *** [lib] エラー 2
libgpac.soがないためにエラーが発生した模様。libglut.soが存在するか確認し、シンボリックリンクを作成してコンパイルが通るようにする。
[foltia@foltiadev gpac]$ ls /usr/lib | grep glut libglut.so.3 libglut.so.3.8.0 [foltia@foltiadev gpac]$ su - パスワード: [root@foltiadev ~]# ln -s /usr/lib/libglut.so.3 /usr/lib/libglut.so [root@foltiadev ~]# exit logout
これで再度インストール。
[foltia@foltiadev gpac]$ make clean 〜(ログは省略)〜 [foltia@foltiadev gpac]$ make 〜(中略)〜 make[2]: ディレクトリ `/home/foltia/gpac/modules/x11_out' から出ます make[1]: ディレクトリ `/home/foltia/gpac/modules' から出ます [foltia@foltiadev gpac]$ su - パスワード: [root@foltiadev gpac]# make install install -d "/usr/local" install -d "/usr/local/bin" install -m 755 bin/gcc/MP4Box "/usr/local/bin" make -C applications install make[1]: ディレクトリ `/home/foltia/gpac/applications' に入ります set -e; for i in mp4client ; do make -C $i install; done make[2]: ディレクトリ `/home/foltia/gpac/applications/mp4client' に入ります rm -f main.o extract.o ../../bin/gcc/MP4Client make -override BUILD_INSTALL=yes all make[3]: ディレクトリ `/home/foltia/gpac/applications/mp4client' に入ります gcc -O3 -fno-strict-aliasing -Wno-pointer-sign -I/home/foltia/gpac/include -DGPAC_MODULES_PATH=\"/usr/local/lib/gpac\" -c -o main.o main.c gcc -O3 -fno-strict-aliasing -Wno-pointer-sign -I/home/foltia/gpac/include -DGPAC_MODULES_PATH=\"/usr/local/lib/gpac\" -c -o extract.o extract.c gcc -Wl --warn-common -o ../../bin/gcc/MP4Client main.o extract.o -L../../bin/gcc -lgpac -lz -L/usr/X11R6/lib -lGL -lglut -L/usr/local/lib -ljpeg -lpng make[3]: ディレクトリ `/home/foltia/gpac/applications/mp4client' から出ます install -m 755 ../../bin/gcc/MP4Client "/usr/local/bin" make[2]: ディレクトリ `/home/foltia/gpac/applications/mp4client' から出ます make[1]: ディレクトリ `/home/foltia/gpac/applications' から出ます install -d "/usr/local/lib/gpac" install bin/gcc/*.so "/usr/local/lib/gpac" rm -f /usr/local/lib/gpac/libgpac.so rm -f /usr/local/lib/gpac/nposmozilla.so strip bin/gcc/libgpac.so install -m 755 bin/gcc/libgpac.so /usr/local/lib/libgpac-0.4.5.so ln -sf libgpac-0.4.5.so /usr/local/lib/libgpac.so ldconfig || true install -d "/usr/local/man" install -d "/usr/local/man/man1" if [ -d doc ] ; then \ install -m 644 doc/man/mp4box.1 /usr/local/man/man1/ ; \ install -m 644 doc/man/mp4client.1 /usr/local/man/man1/ ; \ install -m 644 doc/man/gpac.1 /usr/local/man/man1/ ; \ install -d "/usr/local/share/gpac" ; \ install -m 644 doc/gpac.mp4 /usr/local/share/gpac/ ; \ fi [root@foltiadev gpac]# exit logout
TsSplitter.exe、tss.py、neroAacEncの保存
TSファイルを分割して不要なストリームを削除するTsSplitter.exeとtss.py、AACエンコードを行うためのneroAacEncを準備する。これらはダウンロードして、ファイルを格納するだけ。neroAacEncはコマンドのみでは不可能なので、まとめてGUI環境で操作してしまった(そのうち追記できたら追記する)。
TsSplitter.exe
下記URLからダウンロードし、解凍する。
http://2sen.dip.jp/cgi-bin/dtvup/source/up0140.zip
tss.py
下記URLからダウンロードし、tss.pyにリネームする。
http://10.dtiblog.com/a/allegro/file/tss.py.txt
neroAacEnc
下記URLからダウンロードし、解凍したフォルダからneroAacEncを探す。
http://www.nero.com/jpn/technologies-aac-codec.html
後でfoltiaを導入することを考慮して、ファイルは3つのファイルは全て、/home/foltia/perl/tool 配下に格納しておく。以降、エンコードテストはこのフォルダ配下で行う。
エンコードテスト
準備は整ったのでエンコードテスト。foltiaの動作の順番で実行する。まず録画から。
[foltia@foltiadev tool]$ recpt1 --b25 --strip 211 20 test.m2t using B25... enable B25 strip pid = 15328 C/N = 16.450137dB Recording... Recorded 21sec
次に録画したTSファイルをH.264でエンコードする。オプションはfoltiaのipodtranscode.plを参考に、iPhoneで再生できるように指定した。
[foltia@foltiadev tool]$ ffmpeg -y -i test.m2t -croptop 6 -cropbottom 6 -cropleft 8 -cropright 8 -s 640x352 -deinterlace -r 29.97 -vcodec libx264 -vpre default -g 100 -b 600000 -level 13 -sc_threshold 60 -rc_eq 'blurCplx^(1-qComp)' -refs 3 -maxrate 700000 -async 50 -f h264 test.264 FFmpeg version 0.5, Copyright (c) 2000-2009 Fabrice Bellard, et al. configuration: --prefix=/usr --libdir=/usr/lib --shlibdir=/usr/lib --mandir=/usr/share/man --incdir=/usr/include --enable-libamr-nb --enable-libamr-wb --enable-libdirac --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libtheora --enable-libx264 --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-shared --enable-swscale --enable-x11grab libavutil 49.15. 0 / 49.15. 0 libavcodec 52.20. 0 / 52.20. 0 libavformat 52.31. 0 / 52.31. 0 libavdevice 52. 1. 0 / 52. 1. 0 libswscale 0. 7. 1 / 0. 7. 1 libpostproc 51. 2. 0 / 51. 2. 0 built on Nov 6 2009 19:05:03, gcc: 4.1.2 20080704 (Red Hat 4.1.2-46) Seems stream 0 codec frame rate differs from container frame rate: 59.94 (60000/1001) -> 29.97 (30000/1001) Input #0, mpegts, from 'test.m2t': Duration: 00:00:19.20, start: 14981.095711, bitrate: 19097 kb/s Program 211 BS11 Stream #0.0[0x140]: Video: mpeg2video, yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], 24000 kb/s, 29.97 tbr, 90k tbn, 59.94 tbc Stream #0.1[0x141]: Audio: aac, 48000 Hz, stereo, s16, 183 kb/s Output #0, h264, to 'test.264': Stream #0.0: Video: libx264, yuv420p, 640x352 [PAR 44:45 DAR 16:9], q=10-51, 600 kb/s, 90k tbn, 29.97 tbc Stream mapping: Stream #0.0 -> #0.0 [libx264 @ 0x9bd8130]using SAR=44/45 [libx264 @ 0x9bd8130]frame MB size (40x22) > level limit (396) [libx264 @ 0x9bd8130]DPB size (3 frames, 1013760 bytes) > level limit (2 frames, 912384 bytes) [libx264 @ 0x9bd8130]MB rate (26373) > level limit (11880) [libx264 @ 0x9bd8130]using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64 [libx264 @ 0x9bd8130]VBV maxrate specified, but no bufsize. [libx264 @ 0x9bd8130]profile Baseline, level 1.3 Press [q] to stop encoding [mpeg2video @ 0x9b8f430]ac-tex damaged at 47 63=18.95 bitrate= 669.6kbits/s [mpeg2video @ 0x9b8f430]Warning MVs not available [mpeg2video @ 0x9b8f430]concealing 600 DC, 600 AC, 600 MV errors frame= 574 fps= 15 q=-11059904.7 Lsize= 1556kB time=19.15 bitrate= 665.7kbits/s video:1556kB audio:0kB global headers:0kB muxing overhead 0.000000% [libx264 @ 0x9bd8130]slice I:8 Avg QP:24.24 size: 16868 [libx264 @ 0x9bd8130]slice P:566 Avg QP:26.67 size: 2576 [libx264 @ 0x9bd8130]mb I I16..4: 15.8% 0.0% 84.2% [libx264 @ 0x9bd8130]mb P I16..4: 2.3% 0.0% 2.4% P16..4: 53.1% 9.4% 2.9% 0.0% 0.0% skip:30.0% [libx264 @ 0x9bd8130]final ratefactor: 25.69 [libx264 @ 0x9bd8130]coded y,uvDC,uvAC intra:50.5% 58.4% 23.0% inter:10.4% 15.9% 0.4% [libx264 @ 0x9bd8130]ref P L0 76.7% 14.1% 9.2% [libx264 @ 0x9bd8130]kb/s:665.4
録画したTSファイルから音声を抜き出す。
[foltia@foltiadev tool]$ mplayer test.m2t -vc null -vo null -ao pcm:file=test.wav:fast MPlayer SVN-r29417-4.1.2 (C) 2000-2009 MPlayer TeamCan't open joystick device /dev/input/js0: No such file or directory Can't init input joystick mplayer: could not connect to socket mplayer: No such file or directory Failed to open LIRC support. You will not be able to use your remote control. Playing test.m2t. TS file format detected. VIDEO MPEG2(pid=320) AUDIO AAC(pid=321) NO SUBS (yet)! PROGRAM N. 211 VIDEO: MPEG2 1920x1080 (aspect 3) 29.970 fps 24000.0 kbps (3000.0 kbyte/s) ========================================================================== Forced video codec: null Opening video decoder: [null] Null video decoder VDec: vo config request - 1920 x 1080 (preferred colorspace: BGR 24-bit) VDec: using Planar YV12 as output csp (no 0) Movie-Aspect is undefined - no prescaling applied. VO: [null] 1920x1080 => 1920x1080 Planar YV12 Selected video codec: [null] vfm: null (NULL codec (no decoding!)) ========================================================================== ========================================================================== Opening audio decoder: [faad] AAC (MPEG2/4 Advanced Audio Coding) Unsupported LATM configuration: 3 programs/ 55 subframes, 2 layers, allstreams: 1 Unsupported LATM configuration: 3 programs/ 45 subframes, 7 layers, allstreams: 1 FAAD: compressed input bitrate missing, assuming 128kbit/s! AUDIO: 48000 Hz, 2 ch, s16le, 128.0 kbit/8.33% (ratio: 16000->192000) Selected audio codec: [faad] afm: faad (FAAD AAC (MPEG-2/MPEG-4 Audio)) ========================================================================== [AO PCM] File: test.wav (WAVE) PCM: Samplerate: 48000Hz Channels: Stereo Format s16le [AO PCM] Info: Faster dumping is achieved with -vc null -vo null -ao pcm:fast [AO PCM] Info: To write WAVE files use -ao pcm:waveheader (default). AO: [pcm] 48000Hz 2ch s16le (2 bytes per sample) Starting playback... A:14984.1 V:14983.9 A-V: 0.220 ct: -0.254 77/ 77 0% 0% 1.6% 70 0 ************************************************ **** Your system is too SLOW to play this! **** ************************************************ Possible reasons, problems, workarounds: - Most common: broken/buggy _audio_ driver - Try -ao sdl or use the OSS emulation of ALSA. - Experiment with different values for -autosync, 30 is a good start. - Slow video output - Try a different -vo driver (-vo help for a list) or try -framedrop! - Slow CPU - Don't try to play a big DVD/DivX on a slow CPU! Try some of the lavdopts, e.g. -vfm ffmpeg -lavdopts lowres=1:fast:skiploopfilter=all. - Broken file - Try various combinations of -nobps -ni -forceidx -mc 0. - Slow media (NFS/SMB mounts, DVD, VCD etc) - Try -cache 8192. - Are you using -cache to play a non-interleaved AVI file? - Try -nocache. Read DOCS/HTML/en/video.html for tuning/speedup tips. If none of this helps you, read DOCS/HTML/en/bugreports.html. TS_PARSE: COULDN'T SYNC: 0.262 ct: -0.345 545/545 0% 0% 1.3% 492 0 FAAD: error: Maximum number of bitstream elements exceeded, trying to resync! FAAD: error: Unable to find ADTS syncword, trying to resync! FAAD: error: Unable to find ADTS syncword, trying to resync! FAAD: error: Unable to find ADTS syncword, trying to resync! FAAD: error: Unable to find ADTS syncword, trying to resync! 〜(中略)〜 FAAD: error: Unable to find ADTS syncword, trying to resync!1.2% 492 0 FAAD: error: Unable to find ADTS syncword, trying to resync! FAAD: error: Unable to find ADTS syncword, trying to resync! FAAD: error: Unable to find ADTS syncword, trying to resync! FAAD: error: Unable to find ADTS syncword, trying to resync! FAAD: error: Unable to find ADTS syncword, trying to resync! FAAD: error: Unable to find ADTS syncword, trying to resync! FAAD: error: Unable to find ADTS syncword, trying to resync! FAAD: error: Unable to find ADTS syncword, trying to resync! FAAD: error: Unable to find ADTS syncword, trying to resync! FAAD: Failed to decode frame: Unable to find ADTS syncword A:15000.1 V:15000.2 A-V: -0.027 ct: -0.295 564/564 0% 0% 1.2% 492 0 Exiting... (End of file)
なんだかエラーが発生しているようだが、WAVファイルは生成され、再生もできていたのでひとまずOKとして先に進む。引き続き、AACにエンコードする。
[foltia@foltiadev tool]$ ./neroAacEnc -br 128000 -if test.wav -of test.aac ************************************************************* * * * Nero AAC Encoder * * Copyright 2009 Nero AG * * All Rights Reserved Worldwide * * * * Package build date: Feb 18 2010 * * Package version: 1.5.4.0 * * * * See -help for a complete list of available parameters. * * * ************************************************************* Processed 18 seconds...
ここまで実行すると、元のm2tファイルから264ファイル、wavファイル、aacファイルが生成されていることが確認できる。後はmp4ファイルにするだけ。
[foltia@foltiadev tool]$ ls -aFl 合計 51368drwxrwxr-x 2 foltia foltia 4096 4月 4 14:23 ./ drwxrwxr-x 3 foltia foltia 4096 4月 4 12:54 ../ -rwxrwxrwx 1 foltia foltia 192512 3月 11 22:36 TsSplitter.exe* -rwxrwxr-x 1 foltia foltia 910988 3月 11 22:36 neroAacEnc* -rw-rw-r-- 1 foltia foltia 1593729 4月 4 14:22 test.264 -rw-rw-r-- 1 foltia foltia 313962 4月 4 14:23 test.aac -rw-rw-r-- 1 foltia foltia 45842672 4月 4 14:20 test.m2t -rw-rw-r-- 1 foltia foltia 3649580 4月 4 14:22 test.wav -rwxrwxr-x 1 foltia foltia 3124 3月 11 22:37 tss.py*
MP4Boxコマンドでmp4ファイルを生成する。
[foltia@foltiadev tool]$ MP4Box -fps 29.97 -add test.264 -new test.base.mp4 AVC-H264 import - frame size 640 x 352 at 29.970 FPSImport results: 574 samples - Slices: 8 I 566 P 0 B - 1 SEI - 8 IDR Saving test.base.mp4: 0.500 secs Interleaving [foltia@foltiadev tool]$ MP4Box -fps 29.97 -add test.aac test.base.mp4 IsoMedia import - track ID 1 - Audio (SR 48000 - 2 channels)Saving test.base.mp4: 0.500 secs Interleaving [foltia@foltiadev tool]$ MP4Box -ipod test.base.mp4 Setting up iTunes/iPod file...Forcing AVC/H264 SAR to 1:1... Saving test.base.mp4: 0.500 secs Interleaving
最後に生成されたファイルをiPhoneに転送し、再生できることを確認する。が、このままでは再生できなかった・・・。
ffmpegのエンコード設定を確認
iPhoneで再生できるH.264のプロファイルはベースラインプロファイルでなければならない。試行錯誤の結果、下記のプリセットを変更することで、iPhoneで再生できるようになった。
[root@foltiadev ~]# cat /usr/share/ffmpeg/libx264-default.ffpreset coder=1 ←ここを0に変更 flags=+loop cmp=+chroma partitions=+parti8x8+parti4x4+partp8x8+partb8x8 me_method=hex subq=6 me_range=16 g=250 keyint_min=25 sc_threshold=40 i_qfactor=0.71 b_strategy=1 qcomp=0.6 qmin=10 qmax=51 qdiff=4 directpred=1 flags2=+fastpskip
ここのオプションに関してはもっと適切な対処法があるかもしれない。この部分はffmpegを詳しく調べてみないとわからない部分だが、foltia実行の上では最低限の設定はできた!ということで。