febrero 29, 2016

Cambiar la página de Inicio de Google Chrome


Si quieres cambiar la página de inicio de Google Chrome, y poner como página de inicio, por ejemplo, la de tu motor de búsqueda preferido, entonces sigue estos pasos:

En la última versión de Google Chrome (22.0.1)

  • Abre Google Chrome
  • Haz clic en el botón con tres rayas horizontales (o llave inglesa en la versión 19.0.1), situado en la esquina superior derecha, y selecciona "Configuración > Configuración"
  • En el apartado "Al iniciar", selecciona la casilla "Abrir una página específica o un conjunto de páginas" y haz clic en "Establecer páginas"
  • Pega la dirección de Google: http://www.google.es/ y haz clic en "Aceptar"

En versiones anteriores de Google Chrome

  • Abre Google Chrome
  • Haz clic en la llave inglesa situada en la esquina superior derecha y selecciona Opciones
  • En la ventana que se abre, ingresa a la pestaña "Básicas", luego en "Abrir esta página" ingresa la dirección de la página que deseas que se abra automáticamente cada vez que abras Chrome:
  • Finalmente haz clic en el botón Cerrar.
  • Y listo! En adelante cada vez que inicies Chrome se abrirá automáticamente la página que hayas elegido.
Fuente: http://es.ccm.net/faq/4542-cambiar-la-pagina-de-inicio-de-google-chrome


febrero 24, 2016

OCR online

Pasar de imagen a texto

http://www.onlineocr.net/

febrero 23, 2016

Error al dividir un mkv en varios archivos usando mkvtoolnix

Si da un error al dividir un mkv en varios archivos usando mkvtoolnix usando capítulos lo más seguro es que falte instalar la herramienta MediaInfo de aquí https://mediaarea.net/en/MediaInfo

Dividir un mkv en varios archivos usando mkvtoolnix


The purpose of this HowTo is to split videofiles which contain more than one episode of a tv show into single-episode files. So they show up individually within plex, can be played individually and don't produce any of the weird things that multi-episode files are plagued with.
The tool used is MKVtoolnixGUI
it is freely available for all major PC operating systems.
Therefore the container format of the output files will be MKV.
The input format can be a multitude of containers like AVI, MP4, MKV, MPEG, TS, DIVX and several more.
The quality of the files will remain the same, because mkvtoolnix only remuxes the files, it doesn't re-encode them.
This HowTo will use the newer MKVToolnixGUI that is available from V8.0.0 of MKVtoolnix on.
(The older MKVmergeGUI has been deprecated and will be unavailable soon.)
right on:
- start up MKVtoolnixGUI
(depending on your operating system, this might look a little bit different)

  • drag the multi-episode file into the window marked by my crude arrow
  • the video, audio and subtitle tracks it contains will appear in the window underneath it
  • you may want to revise the language code that is assigned to the audio track(s) and the language and 'forced' attribute of subtitle tracks so the Plex interface informs you correctly about the languages available. Plex's automatic audio and subtitle track selection feature relies also on these tags to work correctly.
  • change to the Output tab:
  • change 'Split mode' to 'after specific timecodes'
  • input the timecode of the episode break into the field 'timecodes' (you can input several timecodes [separated by comma] if your source videofile contains more than two episodes) (I chose to split after 25 seconds, because my example file is only 59 seconds long)
  • revise the path and filename in 'Output file' to your needs
  • click Start muxing
You should find 2 or more MKV files in the destination path, their file names appended by a three figure number ('DVD Introduction-scene-001.mkv' and 'DVD Introduction-scene-002.mkv' for our example file in the screenshots)
Now rename the split episode files according to the Plex naming guide for tv show episodes and add them into your library.
Done.

Fuente: https://forums.plex.tv/discussion/173648/howto-splitting-multi-episode-files-with-mkvtoolnix-gui

Comandos más usados en PostgreSQL



quick link

create postgres user   kill process  

Postgres Home
Postgres Online Manual
Postgres Wiki
Postgres FAQ

Postgres Commands

pg_ctl stop 
pg_ctl stop -m immediate  # master db
pg_ctl stop -m fast    # standby db

pg_ctl start 
pg_ctl start -D /db/d/edb/v3/table/EDBD1
pg_ctl start -l /.../mydb.log -w -o -i
pg_ctl restart -w -o -i

pg_ctl status

g_ctl reload   cf: pg_reload_conf()  --> reload server configuration file;


PGDATA=/.../data
PGPORT=5436
PG_HOME=/.../9.2.0

PGUSER=dbpsvn
PGLOG="/db/p/svn/v1/admin/SVNP1/log/svnp1.log"

psql -d postgres -U postgres
psql -U my_username -d my_database_name -h myhostname -p 5436
psql --help

psql -d mydb -U my_login_user -e -L mylog.log -f my_script.sql 2>my_error.err

psql -d mydb -U my_login_user -e -f my_script.sql>mylog.log 2>&1

view owner:
\dt *.*
\dv *.*
alter table xxxx owner to yyyy;
alter view  xxxx owner to yyyy;

\l  --> list databases  ===> select datname from pg_database;

\c database
\c database username

\p  --> print buffer
\e  --> edit buffer

\o xxx -> spool to a file or spool off
\o

\i my_postgres_01.sql

\df *cancel*.* --> find a function

\g ---> postgrees vertical output
select datname,pg_database_size(datname) from pg_database;

\h
\set VERBOSITY verbose

*** set schema search path
SET search_path = new_schema
search_path = '$user,public,sys,dbo'    # schema names 

Postgres Data Dictionary

select * from pg_stat_activity;
select pg_cancel_backend(9999);   --- safe way to kill a process

-- --------------------------------------------------------------------------

\du
\du+

create user my_username with password 'my_username_pass';

grant select on cred_status to snacreadonly;
revoke insert,update,delete on cred_status from snacreadonly;
grant insert,update,delete on cred_status to snacreadwrite;

grant select               on all tables in schema public to snacreadonly;
grant insert,update,delete on all tables in schema public to snacreadwrite;

grant snacreadonly to my_username;
grant snacreadwrite to my_username;
grant snacreports to my_username;
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT SELECT ON TABLES TO PUBLIC;
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT INSERT ON TABLES TO webuser;
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE SELECT ON TABLES FROM PUBLIC;
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE INSERT ON TABLES FROM webuser;
ALTER DEFAULT PRIVILEGES FOR ROLE admin REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC;
create or replace function function kill_pid(procpid integer)
 returns void
security definer
as
$$
  declare
    var1 text;
  begin
    select pg_cancel_backend(procpid) into var1;
  end;
$$ language plpgsql;

revoke execute on function kill_pid(procpid integer) from public;
grant execute on function kill_pid(procpid integer) to eubo017;
-- ---------------------------------------------------------------------------

select procpid, query_start, current_query from pg_stat_activity where current_query <> '' order by query_start desc ;

select procpid, client_addr, client_port, usename, query_start, current_query from pg_stat_activity where current_query <> '';

select datid, datname, procpid, usesysid, usename, waiting, xact_start, query_start, backend_start, client_addr, client_port from pg_stat_activity;

select datid, datname, procpid, usesysid, usename, current_query, waiting, xact_start, query_start, backend_start, client_addr, client_port from pg_stat_activity;

select query_start,procpid, datname, usename, client_addr,  current_query from pg_stat_activity where current_query!='' order by query_start;

select
pg_stat_activity.datname,
pg_class.relname,
pg_locks.mode,
pg_locks.granted,
pg_stat_activity.usename,
-- substr(pg_stat_activity.current_query,1,30),
pg_stat_activity.query_start,
age(now(),
pg_stat_activity.query_start) as "age",
pg_stat_activity.procpid
from
pg_stat_activity,
pg_locks left outer join pg_class
on (pg_locks.relation = pg_class.oid)
where
pg_locks.pid=pg_stat_activity.procpid
and  pg_stat_activity.usename <> 'dbpsnac'
order by query_start;

select
 procpid, usename,
 query_start,
 current_query
from
pg_stat_activity
where usename in ( 'jewettdx' )
order by query_start desc ;


select
pg_locks.pid, pg_class.relname,pg_locks.locktype,
pg_locks.transactionid
from pg_locks, pg_class
where pg_locks.relation=pg_class.oid
order by 2,1;

select pg_stat_activity.datname,pg_class.relname,pg_locks.transactionid,
pg_locks.mode, pg_locks.granted,pg_stat_activity.usename,
substr(pg_stat_activity.current_query,1,30),
pg_stat_activity.query_start, age(now(),
pg_stat_activity.query_start) as "age",
pg_stat_activity.procpid
from
pg_stat_activity,pg_locks left outer join pg_class
on (pg_locks.relation = pg_class.oid)
where pg_locks.pid=pg_stat_activity.procpid
order by query_start;


select * from pg_locks;

select t.relname,l.locktype,page,virtualtransaction,pid,mode,granted 
from 
pg_locks l, pg_stat_all_tables t 
where l.relation=t.relid order by relation asc;

select * from pg_class limit 1;
select * from pg_locks limit 1;

select * from pg_stat_activity;

select * from session_waits;

select * from pg_listener;

Table Maitenance

analyze table_name;
vaccum tabl_name;

EXPLAIN ANALYZE query;
EXPLAIN query;

Postgres Setting: postgresql.conf

show all;

select name,setting from pg_settings;
select name,setting from pg_settings where name like '%log%' order by 1;

# $log_directory/$log_filename
select a.setting || '/' || b.setting cmd from pg_settings a, pg_settings b where a.name='log_directory' and b.name = 'log_filename';

psql -A -t -q -c "select a.setting || '/' || b.setting cmd from pg_settings a, pg_settings b where a.name='log_directory' and b.name = 'log_filename'"
-e: echo commands
-a: all to output
-q: quite mode
-c: command
-P tuples_only=on,footer=off,border=0 --> don't work
-P tuples_only=on --> working
-L logfile.txt --> -L logfile
-t, --tuples-only        print rows only


select name,setting from pg_settings where name like '%redirect%' order by 1;
select name,setting from pg_settings where name like '%stderr%' order by 1;

shared_buffers = 2GB                  # min 128kB
work_mem = 2MB                                # min 64kB
maintenance_work_mem = 2GB            # min 1MB
max_stack_depth = 8MB                 # min 100kB
effective_io_concurrency = 8          # 1-1000. 0 disables prefetching
seq_page_cost = 1.0                   # measured on an arbitrary scale
random_page_cost = 1.0                        # same scale as above
cpu_tuple_cost = 0.5  # same scale as abov
cpu_index_tuple_cost = 0.005          # same scale as above
cpu_operator_cost = 0.05              # same scale as above
effective_cache_size = 4GB

work_mem                        | 2MB
temp_buffers                    | 1024
shared_buffers                  | 1GB
effective_cache_size            | 128MB
autovacuum                      | on
                                        
shared_buffers = 2048MB                 # min 128kB or max_connections*16kB
                                        # (change requires restart)

temp_buffers = 256MB                    # min 800kB
temp_buffers                    | 32768

effective_cache_size            | 40GB       | Sets the planner's assumption about
maintenance_work_mem            | 512MB

Postgres function

select pg_rotate_logfile();
select pg_reload_conf();
select pg_cancel_backend(9999);

select name, setting from pg_settings where name like '%log%';
select pg_current_xlog_location() ;

select pg_switch_xlog(); # switch a logfile

hotstandby monitoring:
check if recovery is running:

SELECT pg_is_in_recovery();
SELECT txid_current_snapshot();

select pg_current_xlog_location(); --> on primary
select pg_last_xlog_receive_location(); --> on standby

Postgres db creation

$PG_HOME/bin/initdb -D $PGDATA
createdb -U login_username -O new_db_owner MY_NEW_DB 

hot backup

step 1): begin backup
#!/bin/bash
tag="HOT_BACKUP_`date +%Y%m%d_%H:%M:%S`"
psql -p 5444 -v 'ON_ERROR_STOP=on' <\c template1
PSQL>checkpoint;
PSQL>pg_startup_backup();
PSQL> SELECT pg_startup_backup();

step 2): backup datafile

step 3): end backup
#!/bin/bash
psql -p 5444 -v 'ON_ERROR_STOP=on' < roles.sql
pg_dumpall -h $SOCKET -p 5432 --tablespaces-only > tablespaces.sql 

pg_restore -h $SOCKET -p 5432 -C -Fc -d postgres startingDump.dump # only work for pg_dump -Fc

Postgres Extension

1): CREATE LANGUAGE plpgsql;

2):
drop extension pgcrypto;
create extension pgcrypto;
CREATE EXTENSION pgcrypto;

table and text file conversion

COPY weather FROM ./home/user/weather.txt.;

other notes

UNIX: 
dtrace -ln transaction-start


EXPLAIN select * from pg_stat_activity;



postgres:
SELECT relname,relnamespace,reltype,pg_relation_filepath(oid), relpages FROM pg_class order by relpages;

SELECT relname, relpages FROM pg_class ORDER BY relpages DESC;


http://pgedit.com/node/20


-- Revoke all privileges from user manuel on view kinds:
REVOKE ALL PRIVILEGES ON kinds FROM manuel;

http://pgedit.com/public/sql/acl_admin/acl_admin.html

http://pgedit.com/public/sql/acl_admin/acl_admin.txt

http://pgedit.com/public/sql/acl_admin/index.html


-- ----------
-- Turn off headers:
\t
-- Use SQL to build SQL:
SELECT 'REVOKE ALL ON public.' || table_name || ' FROM PUBLIC;'
FROM information_schema.tables
  WHERE table_type = 'BASE TABLE' AND table_schema='public';
-- If the output looks good, write it to a file and run it:
\g out.tmp
\i out.tmp 
-- ------------


http://www.ntchosting.com/postgresql/create-user.html

create user george with password 'password';
DROP USER cashier;

grant all privileges on database money to cashier;
REVOKE ALL PRIVILEGES ON money FROM cashier;

create role newuser with login nosuperuser nocreatedb nocreaterole noinherit password 'newpassword';

revoke all privileges on database database1, database3 from newuser;
REVOKE CONNECT ON DATABASE your_db FROM user;

Create Postgres User

\l   --> list db
\du  --> list user --> default user name is lower case, has some permision info
\du+ -->

\c my_database ---> set permission on default db
\c database username

\set VERBOSITY verbose

create user my_username with password 'my_username_pass';
drop user my_username;

grant  select on cred_status               to   snacreadonly;
revoke insert,update,delete on cred_status from snacreadonly;
grant  insert,update,delete on cred_status to   snacreadwrite;

grant all privileges on database money to   my_username;
REVOKE ALL PRIVILEGES ON money         FROM my_username;

grant select               on all tables in schema public to my_username_or_my_role;
grant insert,update,delete on all tables in schema public to my_usenrame_or_my_role;

grant snacreadonly  to my_username;
grant snacreadwrite to my_username;
grant snacreports   to my_username;

ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT SELECT ON TABLES TO PUBLIC;
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT INSERT ON TABLES TO webuser;

verify connection:
psql --help
psql -U my_username -d my_database_name -h myhostname -p 5436
PostgreSQL grants
PostgreSQL grant Default Privileges 

Kill Process

select * from pg_stat_activity;
select pg_cancel_backend(9999);   --- safe way to kill a process

Fuente: http://quickdbasupport.com/most_used_postgres.php

Matar procesos en PostgreSQL



Kill Process

select * from pg_stat_activity;
select pg_cancel_backend(9999);   --- safe way to kill a process
 
Fuente: http://quickdbasupport.com/most_used_postgres.php 

Matar procesos en linux


Kill Process in Linux or Terminate a Process in UNIX / Linux Systems

I am a new Linux system user. How do I kill process on Linux based server using command line options? How can I kill running process on Unix?

Linux and Unix-like operating system come with the kill command to terminates stalled or unwanted processes without having to log out or restart the server.
The kill command sends the specified signal such as kill process to the specified process or process groups. If no signal is specified, the TERM signal is sent. Please note that kill command can be internal as part of modern shells built-in function or external located at /bin/kill. Usage and syntax remain similar regardless internal or external kill command.

A list of common Term signals

Linux and Unix-like operating system supports the standard terminate signals listed below:
  1. SIGHUP (1) – Hangup detected on controlling terminal or death of controlling process. Use SIGHUP to reload configuration files and open/close log files.
  2. SIGKILL (9) – Kill signal. Use SIGKILL as a last resort to kill process. This will not save data or cleaning kill the process.
  3. SIGTERM (15) – Termination signal. This is the default and safest way to kill process.

What is a PID?

A Linux or Unix process is running instance of a program. For example, Firefox is a running process if you are browsing the Internet. Each time you start Firefox browser, the system is automatically assigned a unique process identification number (PID). A PID is automatically assigned to each process when it is created on the system. To find out PID of firefox or httpd process use the following command:
pidof httpd
pidof apache2
pidof firefox
OR use the combination of ps command and grep command:
ps aux | grep httpd
ps aux | grep apache2
ps aux | grep  firefox
Sample outputs:
Fig.01: Find the process ID (PID) of a running firefox program and apache2 server.
Fig.01: Find the process ID (PID) of a running firefox program and apache2 server.

kill command syntax

The syntax is:
kill [signal] PID
kill -15 PID
kill -9 PID
kill -SIGTERM PID
kill [options] -SIGTERM PID

What Linux or Unix permissions do I need to kill a process?

Rules are simple:
  1. You can kill all your own process.
  2. Only root user can kill system level process.
  3. Only root user can kill process started by other users.

kill command examples

In this example, I am going to kill lighttpd server.

Step #1: Find out the PID (process id)

Use the ps or pidof command to find out PID for any program. For example, if process name is lighttpd, you can use any one of the following command to obtain process ID:
pidof lighttpd
Sample outputs:
3486
OR
ps aux | grep lighttpd
Sample outputs:
lighttpd  3486  0.0  0.1   4248  1432 ?        S    Jul31   0:00 /usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf
lighttpd  3492  0.0  0.5  13752  3936 ?        Ss   Jul31   0:00 /usr/bin/php5-cg

Step #2: kill the process using a PID

The PID # 3486 is assigned to the lighttpd process. To kill the lighttpd server, you need to pass a PID as follows:
# kill 3486
OR
$ sudo kill 3486
This will terminate a process with a PID of 3486.

How do I verify that the process is gone / killed?

Use the ps or pidof command:
$ ps aux | grep lighttpd
$ pidof lighttpd

A note about sending stronger signal # 9 (SIGKILL)

If no signal specified in the kill command, signal # 15 (SIGTERM), is sent by default. So the kill 3486 command is same as the following command:
# kill -15 3486
# kill -SIGTERM 3486

OR
$ sudo kill -15 3486
$ sudo kill -SIGTERM 3486

Sometime signal # 15 is not sufficient. For example, lighttpd may not be killed by signal #15 due to open sockets. In that case process (PID) # 3486 would be killed with the powerful signal # 9:
# kill -9 3486
# kill -SIGKILL 3486

OR
$ sudo kill -9 3486
$ sudo kill -SIGKILL 3486

Where,
  • -9 or -SIGKILL – A special kill signal that nearly guarantee to kill the process with the iron fist.

How can I kill two or more PIDs?

The syntax is as follows to kill two or more PIDs as required can be used in a single command:
kill  pid1 pid2 pid3
kill -15  pid1 pid2 pid3
kill -9  pid1 pid2 pid3
kill  -9 3546 5557 4242

Say hello to killall command

This is a Linux only command. to kill processes by name. So no need to find the PIDs using the ‘pidof process’ or ‘ps aux | grep process’ command. Do not use killall command on Unix operating systems. This is a Linux specific command.

The syntax is

killall Process-Name-Here
To kill the lighttpd server, enter:
# killall -15 lighttpd
OR
# killall -9 lighttpd
To kill the Firefox web-browser process, enter:
# killall -9 firefox-bin
As I said earlier, the killall command on UNIX-like system does something else. It kills all process and not just specific process. Do not use killall on UNIX system.



Fuente: http://www.cyberciti.biz/faq/kill-process-in-linux-or-terminate-a-process-in-unix-or-linux-systems/

febrero 12, 2016

Copiar archivos y directorios al home linux shell




#!/bin/bash
UHOME="/home"
FILEPATH="/etc/skel/.procmailrc"
FILENAME=".procmailrc"
FOLDER1PATH="/etc/skel/spamassassin"
FOLDER1NAME="spamassassin"
FOLDER2PATH="/etc/skel/.spamassassin"
FOLDER2NAME=".spamassassin"
# get list of all users
_USERS="$(awk -F':' '{ if ( $3 >= 500 ) print $1 }' /etc/passwd)"
for u in $_USERS
do
_dir="${UHOME}/${u}/"
if [ -d "$_dir" ]
then
/bin/cp $FILEPATH $_dir
/bin/cp -a $FOLDER1PATH $_dir
/bin/cp -a $FOLDER2PATH $_dir
chown $(id -un $u):$(id -un $u) $_dir${FILENAME}
chown -R $(id -un $u):$(id -un $u) $_dir${FOLDER1NAME}
chown -R $(id -un $u):$(id -un $u) $_dir${FOLDER2NAME}
fi
done



Fuente: http://www.cyberciti.biz/tips/linux-unix-shell-batch-copy.html

¿Que versión de Sendmail tengo?

Which sendmail version do I run?
To find out which version of sendmail is installed on your system, you can try the following commands:

sendmail -d0.4 -bv root
should tell you its version and some basic settings.

telnet localhost 25

sendmail should greet you with its welcome message and tell you the version of its binary and config file. Enter QUIT to leave this mode.

Fuente: http://www.sendmail.org/~ca/email/lfaq.html

febrero 08, 2016

Unir archivos m2ts o mts

Unir archivos m2ts o mts

el 8 septiembre 2008 en Guías
Si has llegado directamente desde un buscador u otra página a este artículo, mírate antes esto, es muy importante
Una de las grandes dudas que tiene normalmente la gente, es como unir archivos m2ts o mts (el primero normalmente serán archivos de Blu-ray y el segundo de la cámaras AVCHD)
Todo el mundo prueba a hacerlo con el tsMuxer, y casi todos hacen el mismo comentario, esto no funciona, me superpone los videos… pues bueno, comentaré que Sí se hace con el tsMuxer, lo que sucede es que no lo hacen de forma correcta.

Comenzaremos con el Tutorial de Unir archivos m2ts o mts.
Si tienes un archivo m2ts, continua leyendo. Si lo que tienes es un archivo mts, por ejemplo 00023.mts, tienes que renombrarlo a 00023.m2ts, de esta forma, el tsMuxer lo reconocerá, si no, nos dará un error de archivo.

Ahora, si no tienes el tsMuxer, lógicamente bájatelo, lo encontraras en la sección de Pack de Software.

o también aquí

 http://www.videohelp.com/software/tsMuxeR

Una vez instalado, lo abrimos:
abierto_tsMuxer_2
Apretamos en ‘Add’
boton_add_tsMuxer2
y seleccionaremos nuestro primer archivo de video m2ts (recuerdo que si tus archivos son mts, deberás primero renombrarlos a m2ts o no los veras y aunque fuerces que los veas, te dará un error de archivo)

una vez que hayamos seleccionado el primer archivo m2ts, veremos que nos deja seleccionar otro botón, que es el ‘append’
boton_append_tsmuxer2
Éste es el botón que deberemos utilizar (botón ‘append’) y vais añadiendo los archivos m2ts uno a uno.
Una vez que los tengáis todos cargados, os saldrá una imagen parecida a esta:

archivos_con_append_tsmuxer
Si delante de cada archivo no os sale ++, como en la imagen, es que lo habéis hecho mal, habéis apretado ‘add’ en vez de ‘append’ así que no os funcionará.
Ahora, si queréis hacer un Blu-ray, seleccionáis ‘Create Blu-ray disk’ y apretando en Browse, le decís donde queréis guardarlo, y apretáis en ‘Start muxing’ (Si queréis crear capítulos mirar un poco más abajo ates de continuar)

seleccion_blu-ray
start_muxing_tsmuxer
Cuando acabe, (tarda muy poco), ya lo podréis grabar en el Blu-ray con vuestro software grabador que soporte este tipo de discos.
Si lo que quereis es grabarlo en diferentes DVD’s, en la sección tutoriales encontraréis como hacerlo.

Si queréis, antes de crear la estructura Blu-ray, podéis crear capítulos.
Para ellos, apretaremos en la pestaña Blu-ray.
pestana_blu_ray
Veremos los siguiente:
ventana_blu_ray_capitulos
Por defecto, el tsMuxer, crea capítulos cada 5 minutos.
Si queremos, ya que es un video de nuestras vacaciones, podemos poner los capítulos que deseemos.
Seleccionaremos ‘Custom chapters list” y simplemente escribiremos lo tiempos debajo directamente, lógicamente, estos tiempos son donde queremos poner una marca de tiempo para que cuando apretemos en el mando a distancia ‘Siguiente capítulo’, ir al siguiente vídeo. La estructura de tiempo que vemos es 00:00:00.000 que esto significa lo siguiente; HORAS:MINUTOS:SEGUNDOS.CENTÉSIMAS
Un saludo

Fuente: http://www.peliculasfullhd.com/2008/09/08/unir-archivos-m2ts-o-mts/
Se ha producido un error en este gadget.