BufferedReader   
reader = new BufferedReader(new FileReader("src/player.txt"));
          Manjaro LXQt-17.0.1 非公式日本語(x86_64) - Manjaro JP   

2017-6-19

Manjaro LXQt-17.0.1 非公式日本語(x86_64) リリース

manjaro-lxqt-17.01-x86_64-ja.iso; インストール用イメージ manjaro-lxqt-17.01-x86_64-pkgs-ja.txt; パッケージ一覧(インストールには不要です。)

特長

このisoファイルは、Manjaro Linux 開発チームが配布している、Manjaro-toolsツール (https://github.com/manjaro/manjaro-tools )を使用して、パッケージ構成や個人設定を編集し、構成したものです。プロジェクトの位置づけは非公式Remixになります。 Linux カーネル 4.9.31-1

公式版に無いもので、追加されたアプリケーション(主なもの)

fcitx 4.2.9.1-2 fcitx-mozc 2.20.2673.102-2 firefox-i18n-ja 53.0.3-1 poppler-data 0.4.7-1 vim 8.0.0586-2 (デフォルトで alias vi='vim') ttf-migmix 20150712-1 (非公式リポジトリ) ttf-vlgothic 20141206-1 (非公式リポジトリ) (デスクトップ環境のデフォルトのフォント) otf-ipaexfont 003.01-1 (非公式リポジトリ) qterminal 0.7.1-2 rxvt-unicode-patched 9.22-8 (非公式リポジトリ)

インストール方法

ダウンロードしたisoイメージを、適切なソフトウェアでDVDディスク、USBメモリ等に書き込みます。 作成したDVDディスク等でマシンをブートします。 操作を選択する画面が現れます。この画面上で、tz(タイムゾーン)、keytable(キーボード配列)、lang(言語)などの項目が設定できます。各項目でリターンキーあるいは右矢印キーを押せば、選択メニューが現れます。 Live-DVD環境のデスクトップにインストーラーが置かれています。それをクリックするとインストーラーが起動します。 インストール作業には10分程度かかります。その間、インストーラーのウィンドウは最大化しておいてください。作業後、Live-DVD等のメディアを抜いたあとでマシンを再起動させます。新しくインストールされたシステムが起動します。

その他注意事項

ホームディレクトリ内に「Downloads」「Music」などのユーザーディレクトリが作成されています。これらのディレクトリを日本語に変更したい場合は、端末上で「xdg-user-dirs-update --force」を実行してください。元の英語名のディレクトリは残るので手動で削除してください。 manjaroの公式リポジトリに無いパッケージをプリインストールするために、非公式リポジトリ(local-repo: www.rago1975.net/localrepo/$arch)を使用しています。この非公式リポジトリを削除したい場合は、root権限で/etc/pacman.confを編集し、削除してください。

          /Binary Distribution/3.17.0/Whatsnew.txt   
/Binary Distribution/3.17.0/Whatsnew.txt
          /Source Distribution/3.17.0/Whatsnew.txt   
/Source Distribution/3.17.0/Whatsnew.txt
          /Binary Distribution/3.16.0/Whatsnew.txt   
/Binary Distribution/3.16.0/Whatsnew.txt
          /Source Distribution/3.16.0/Whatsnew.txt   
/Source Distribution/3.16.0/Whatsnew.txt
          /Binary Distribution/3.15.4/Whatsnew.txt   
/Binary Distribution/3.15.4/Whatsnew.txt
          /Source Distribution/3.15.4/Whatsnew.txt   
/Source Distribution/3.15.4/Whatsnew.txt
          /Binary Distribution/3.15.3/Whatsnew.txt   
/Binary Distribution/3.15.3/Whatsnew.txt
          /Source Distribution/3.15.3/Whatsnew.txt   
/Source Distribution/3.15.3/Whatsnew.txt
          /Binary Distribution/3.15.2/Whatsnew.txt   
/Binary Distribution/3.15.2/Whatsnew.txt
          /Source Distribution/3.15.2/Whatsnew.txt   
/Source Distribution/3.15.2/Whatsnew.txt
          /Source Distribution/3.15.1/Whatsnew.txt   
/Source Distribution/3.15.1/Whatsnew.txt
          /Binary Distribution/3.15.1/Whatsnew.txt   
/Binary Distribution/3.15.1/Whatsnew.txt
          /Binary Distribution/3.15.0/Whatsnew.txt   
/Binary Distribution/3.15.0/Whatsnew.txt
          /Source Distribution/3.15.0/Whatsnew.txt   
/Source Distribution/3.15.0/Whatsnew.txt
          /Source Distribution/3.14.1/Whatsnew.txt   
/Source Distribution/3.14.1/Whatsnew.txt
          /Source Distribution/3.14.0/Whatsnew.txt   
/Source Distribution/3.14.0/Whatsnew.txt
          /Source Distribution/3.13.1/Whatsnew.txt   
/Source Distribution/3.13.1/Whatsnew.txt
          /Source Distribution/3.13.0/Whatsnew.txt   
/Source Distribution/3.13.0/Whatsnew.txt
          Trillium Asset Management Decreased Its Minerals Technologies (MTX) Stake, DE Shaw & Company Boosted ... - UtahHerald.com   

Weekly Register

Trillium Asset Management Decreased Its Minerals Technologies (MTX) Stake, DE Shaw & Company Boosted ...
UtahHerald.com
D-E Shaw & Company Inc increased Whirlpool Corp (Put) (WHR) stake by 259.89% reported in 2016Q4 SEC filing. D-E Shaw & Company Inc acquired 140,600 shares as Whirlpool Corp (Put) (WHR)'s stock rose 1.07%. The D-E Shaw & Company Inc holds ...
Whirlpool Corporation - WHR - Stock Price Today - ZacksZacks Investment Research
Bitzer Marc R - SEC.govSEC.gov

all 95 news articles »

          Alpha Windward Boosted Its Ameren (AEE) Position; DE Shaw & Company Has Trimmed Metlife (Call) (MET) Stake By ... - UtahHerald.com   

Weekly Register

Alpha Windward Boosted Its Ameren (AEE) Position; DE Shaw & Company Has Trimmed Metlife (Call) (MET) Stake By ...
UtahHerald.com
D-E Shaw & Company Inc decreased Metlife Inc (Call) (MET) stake by 5.2% reported in 2016Q4 SEC filing. D-E Shaw & Company Inc sold 30,100 shares as Metlife Inc (Call) (MET)'s stock declined 4.70%. The D-E Shaw & Company Inc holds 548,500 shares ...
Ameren Corporation - AEE - Stock Price Today - ZacksZacks Investment Research
<SEC-DOCUMENT>0001002910-17-000071.txt : 20170302 <SEC-HEADER>0001002910-17-000071.hdr.sgml ...SEC

all 75 news articles »

          Klingenstein Fields & Co Increased Its Union Pacific (UNP) Stake; DE Shaw & Company Trimmed Himax Technologies ... - NormanObserver.com   

KL Daily

Klingenstein Fields & Co Increased Its Union Pacific (UNP) Stake; DE Shaw & Company Trimmed Himax Technologies ...
NormanObserver.com
D-E Shaw & Company Inc decreased Himax Technologies Inc (HIMX) stake by 59.36% reported in 2016Q4 SEC filing. D-E Shaw & Company Inc sold 61,745 shares as Himax Technologies Inc (HIMX)'s stock declined 2.59%. The D-E Shaw & Company Inc ...
Union Pacific Corporation - UNP - Stock Price Today - ZacksZacks Investment Research
Card Andrew H JR - SEC.govSEC.gov
Whited Elizabeth F - SEC.govSEC.gov

all 123 news articles »

          GOLY S7   

Categories:

ROM Phone GOLY S7 – ROM Android 5.1 ONLY MT6735M Official ROM GOLY S7 version: L1_H9_BT_4G_V1.0_20170621 – KM-user 5.1 LMY47D Gapps not include -  No Rooted Language support : EN/CN   Install ROM : - Unpack FlashTools, and Click on Flash_tool.exe - Select "scatter-Loading" and search MT6735M_Android_scatter.txt in ROM - Wait file to be added into Flash Tool - Select [...]

(Read more...)


          VIOS VMP0617   

Categories:

ROM Phone VIOS VMP0617 – ROM Android 7.0 ONLY MT6737M Official ROM VIOS VMP0617 version: VMP0617_11_1.01_170615 – VIOS-user 7.0 NRD90M – 20170615_183625_16GB+2GB_hd720_3M_America Gapps include – No Rooted Language support: Multilang   ROM Install : - Unpack FlashTools, and Click on Flash_tool.exe - Select "scatter-Loading" and search MT6737M_Android_scatter.txt in ROM - Wait file to be added into Flash Tool [...]

(Read more...)


          Get-Zip.ps1   
  1. <# 
  2. .SYNOPSIS 
  3.     This script demonstrates the use of the Zip lib in .NET 
  4. .DESCRIPTION 
  5.     This script is a re-write of an MSDN sample, using PowerShell 
  6. .NOTES 
  7.     File Name  : Show-ZIP.ps1 
  8.     Author     : Thomas Lee - tfl@psp.co.uk 
  9.     Requires   : PowerShell Version 3.0 
  10. .LINK 
  11.     This script posted to: 
  12.         http://www.pshscripts.blogspot.com 
  13.     MSDN sample posted to: 
  14.          http://msdn.microsoft.com/en-us/library/system.io.compression.zipfile.aspx 
  15. .EXAMPLE 
  16.     PSH> .\Show-Zip 
  17.      
  18.     Directory: C:\example 
  19. Mode        LastWriteTime  Length Name                                                                                                                            
  20. ----        -------------  ------ ----                                                                                                                            
  21. d---- 7/29/2013   4:35 PM        extract                                                                                                                         
  22. d---- 7/29/2013   4:29 PM        start                                                                                                                           
  23. -a--- 7/29/2013   4:35 PM   1668 result.zip                                                                                                                      
  24.  
  25.  
  26.     Directory: C:\example\extract 
  27. Mode        LastWriteTime  Length Name                                                                                                                            
  28. ----        -------------  ------ ----                                                                                                                            
  29. -a---  7/29/2013  4:28 PM    5609 d1.txt                                                                                                                          
  30. -a---  7/29/2013  4:29 PM   67308 d2.txt                                                                                                                          
  31. -a---  7/29/2013  4:29 PM   67308 d3.txt                                                                                                                          
  32. -a---  7/29/2013  4:29 PM   67308 d4.txt                                                                                                                          
  33. -a---  7/29/2013  4:29 PM   67308 d5.txt                                                                                                                          
  34.  
  35.  
  36.     Directory: C:\example\start 
  37. Mode        LastWriteTime     Length Name                                                                                                                            
  38. ----        ------------     ------ ----                                                                                                                            
  39. -a---  7/29/2013  4:28 PM    5609 d1.txt                                                                                                                          
  40. -a---  7/29/2013  4:29 PM   67308 d2.txt                                                                                                                          
  41. -a---  7/29/2013  4:29 PM   67308 d3.txt                                                                                                                          
  42. -a---  7/29/2013  4:29 PM   67308 d4.txt                                                                                                                          
  43. -a---  7/29/2013  4:29 PM   67308 d5.txt                                                                                                                          
  44. #> 
  45.  
  46. # Load the compression namespace  
  47. # And yes, I know this usage is obsolete - but it works.  
  48. # Ignore the output  
  49. [System.Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem') | out-null 
  50.  
  51. # Set locations 
  52. $startPath = "c:\example\start" 
  53. $zipPath = "c:\example\result.zip" 
  54. $extractPath = "c:\example\extract" 
  55. Remove-Item $zipPath -ea SilentlyContinue 
  56. Remove-Item -Path $extractPath -inc * -Recurse -ea SilentlyContinue 
  57.  
  58. # Create the zip file 
  59. [System.IO.Compression.ZipFile]::CreateFromDirectory($startPath, $zipPath
  60.  
  61. # Extract from zip and show what's all there 
  62. [System.IO.Compression.ZipFile]::ExtractToDirectory($zipPath,$extractPath); 
  63. ls c:\example -Recurse 
  64.          

          Re: [PATCH 1/3] arm64: dts: rockchip: add ARM Mali GPU node for rk3399   
Heiko Stuebner writes: (Summary) Hi Jacob,
Hi Jacob,
Am Samstag, 1. Juli 2017, 20:56:08 CEST schrieb Jacob Chen: + compatible = "rockchip,rk3399-mali", "arm,mali-t860", "arm,mali-midgard"; this is missing a separate patch adding rockchip,rk3399-mali to Documentation/devicetree/bindings/gpu/arm,mali-midgard.txt Documentation/devicetree/bindings/gpu/arm,mali-midgard.txt Also arm,mali-midgard is not part of the binding. But the driver should bind against the arm,mali-t860 alone, not the mali-midgard.
the mali-midgard.
the mali-midgard.
Heiko
Heiko
Heiko

          Comentariu la Robots.txt – comenzi si informatii utile de Dulan Gabi   
Setarile propuse sunt corecte. Poti sa faci si un fisier robots.txt gol si rezultatul este acelasi. Ar mai merge si: User-agent: * Allow: /
          Comentariu la Robots.txt – comenzi si informatii utile de Dana   
Buna ziua, interesant si util articolul, acum l-am descoperit. Am o intrebare scurta pentru nepriceputi, ca sa permiti tuturor robotilor (google, yahoo, msn, etc) acces la intreg website fara exceptie, atat continut cat si imagini, este nevoie sa precizezi fiecare motor de cautare in parte sau este suficient sa pui in fisierul robots.txt doar atat? User-agent: * Disallow: http://www.site.ro/sitemap.xml Ma refer la un site blogger. Multumesc!
          本文のテキストだけを取り出す方法 <!DOCTYPE> <html> <head> </head> <body> <div...   
本文のテキストだけを取り出す方法 <!DOCTYPE> <html> <head> </head> <body> <div class="main_text"><br /></div><br /> 本文<br /> 本文<br /> 本文<br /> </div> <div class="bibliographical_information"><br /> <br /> </div> </body> </html> というHTMLファイルがあり本文部分のhtml部分だけを取り出したいと思っています。 ---------- htmlfile = "aaaa.html" textfile = "aaaa.txt" html = File.read(htmlfile) File.open(textfile, "w") do |f| in_header = true html.each_line do |line| if in_header && /<div class="m...
          Schoolmusical: Het Infernaat, een schoolfeestje - van Patrick Bernauw & Guy Didelez   


 Price: Free! 


 

Schoolmusical: Het Infernaat

Cover for 'Schoolmusical: Het Infernaat'
ByCompagnie de Ballade
Published by De Scriptomanen

ISBN: 9781301822188


Short description

Een kindermusical waarin de hele basisschool aan bod kan komen, met uitgebreide regie-aanwijzingen en tips voor het ensceneren en organiseren van een origineel schoolfeest, grootouderfeest... De teksten zijn van de bekende jeugdschrijvers Patrick Bernauw en Guy Didelez. Het script werd trouwens geïnspireerd door hun gelijknamige kinderboek. De muziek is van Fernand Bernauw.

Extended description

Om (gedeelten uit) deze kindermusical op te voeren, hebt u de toestemming van de auteurs en uitgever nodig, de MP3’s van vocale en instrumentale liedjes, en eventueel ook de illustraties van de fabelwezens. Deze worden u samen met een Word document van de toneelbrochure via de mail toegestuurd (gratis) zodra u het ingevulde formulier ‘Overeenkomst voor een opvoering van het Infernaat’ hebt bezorgd aan een contact emailadres dat u in dit ebook vindt. Hiermee geeft u te kennen de opvoeringsrechten van de musical te zullen betalen aan Sabam, op de vermelde datum. Het opvoeringsrecht bedraagt 125 euro.

Tags

musicaltheaterscriptscenariosketchespatrick bernauwjeugdromanjeugdboektoneelstuk,toneelscriptkinderboektoneelguy didelezbasisschoolgrootouderfeestmuzische vorming,schoolfeestkindermusicalkindertheaterkindertoneelschoolmusicalbernauw en didelez,expressiehet infernaattoneelstukjes

Available ebook reading formats

This book is free. How to download ebooks to e-reading devices and apps. 
FormatFull Book
Online Reading (HTML, good for sampling in web browser)View
Kindle (.mobi for Kindle devices and Kindle apps)Download
Epub (Apple iPad/iBooks, Nook, Sony Reader, Kobo, and most e-reading apps including Stanza, Aldiko, Adobe Digital Editions, others)Download
PDF (good for reading on PC, or for home printing)Download
RTF (readable on most word processors)Download
LRF (Use only for older model Sony Readers that don't support .epub)Download
Palm Doc (PDB) (for Palm reading devices)Download
Plain Text (download) (flexible, but lacks much formatting)Download
Plain Text (view) (viewable as web page)View

          iconos sociales para blogger   
Hey hola que tal colegas, hoy vamos a hablar sobre los iconos sociales para blogger, de donde podemos conseguirlos y como podemos implementarlos en nuestros blogs de una manera muy fácil, segura y rápida.

¿Donde consigo iconos sociales para blogger ?

iconos sociales para blogger

En realidad es una muy buena pregunta, pues en internet se encuentra muchos proveedores de iconos sociales para blogger, pero cabe recalcar que muchos no te enseñan como implementarlo tal es así que si deseas hacer este procedimiento procederemos a explicártelo paso a paso en nuestros tutoriales así como nadie te lo ha explicado.


A mi particularmente me gustan mucho los [ iconos sociales de Bootstrap, ] . En ellas puedo hacer muchas modificaciones siguiendo los parámetros que traen en los paquetes, además hay muchos tutoriales de como poder implementarlos.

¿Porque son importantes los iconos sociales en un blog ?


Lo iconos sociales en blogger se han convertido últimamente en una sensación, pagina web que no tiene estos botones simplemente se esta perdiendo dentro de las millones de búsquedas del gran <<maestro google >> , pues cabe recalcar que estos ayudan para compartir contenidos y prácticamente hacerse muy conocidos en la red.

¿ Que iconos sociales no debo dejar de tener en mi blog. ?

Muchas personas que hacen SEO  y Marketing social afirman que cuanto mas contenido sea compartido en internet, mejor será la autoridad de dominio de un sitio , esto quiere decir a nuestra forma de entender, que podemos utilizar cuanto icono o boton social que nos permita compartir nuestros contenidos, y a continuación te voy a mostrar todas las redes sociales y si me olvido de alguna pues te ruego que lo menciones en los comentarios.

También te puede interesar leer : Seo blogger para principiantes

Botones sociales para blogger :


  • Reddit
  • Tumblr
  • Twitter
  • Facebook
  • Vimeo
  • Linkedin
  • Instagram
  • Google Plus
  • Flickr
  • Foursquare
  • Yahoo!
  • nuzzel

Como puedes ver son muchas las redes sociales que hay y que las puedes utilizar como botones ya sean en la cabecera de tu blog o en el pie de cada artículo, esto hará que muchos usuarios compartan tus contenidos cuando estos sean leídos .

Como insertar boton de twitter en blogger : 

En nuestro próximo capítulo vamos a ver cada una de las implementaciones, ahora solo hemos hablado de la importancia que tienen las redes sociales y como influyen estos en el posicionamiento web y el seo de las páginas.

Implementar icono de twitter en blogger

Bueno voy a enseñarles como implementar el icono de twitter para su blog de blogger, ya que en realidad este no es un proceso que toma mucho tiempo pues tan solo tienes que subir tus iconos a blogger, utilizarlos como un servidor ya que tan solo necesitas la ruta SRC de la imagen.


Como insertar boton pinterest en blogger :

Bueno vamos a seguir el mismo procedimiento tal y como lo hemos hecho para los botones de facebook, igual necesitas subir tus iconos personalizados a tu blog, y una vez hecho todo esto tan solo copias la ruta de la imagén.

Implementar icono de pinterest en blogger


Bueno espero que les siga gustando mis artículos, si desean que suba mas iconos por favor tan solo escríbeme al correo o en los comentarios.

          porque es importante el seo en blogger   
Hoy hablaremos sobre un tema muy importante, y aprenderemos el porque es importante el seo en blogger, pues esto como parte de nuestro primer curso de posicionamiento web que va dirigido prácticamente para el público en general, espero les guste.

seo blogger

Porque es importante el SEO en blogger y como posicionar una web.


Pero si nos ponemos a indagar aún mucho más nos vamos a dar cuenta que muy pocos sitios solo brindan información general con respecto a como debemos hacer para posicionar una pagina web o blog, y que estrategias plantear para lograr primeros resultados en los buscadores. Ahora he aquí esta pregunta.


Porque necesito tener seo en mi pagina web.


Necesitas seo por la simple y llana razón, "Tener tráfico orgánico", a partir de ello ya podemos comenzar con muchas cosas como por ejemplo "Tráfico social", "Tráfico directo" y otras cosas más si nos proponemos.

En un principio cuando empecé a optimizar mis propias paginas web, me he dado cuenta que esto del SEO es muy importante, pues con decir esa palabra IMPORTANTE, ya te he mencionado en términos generales que esto no tienes que dejarlo de lado.

Vamos a dejar en claro secretos de seo muy bien explicados.


Por lo general soy amante de experimentar o curiosear muchas cosas, he tenido la oportunidad de aprender de programar, hacer diseño web, diseño gráfico, ser un mentor de contenidos virales en internet, principalmente en facebook, google plus, twitter, flickr, etc y así muchas cosas.

¿He intentado de todo, no te voy a mentir?, pero tuvieron que pasar 2 años para darme cuenta que sin tráfico orgánico no somos nada, y más aún para los que vivimos de adsense.

Bueno espero que te hayan sido de mucha utilidad estos primeros consejos, en pocos días seguiré ampliando mas el tema y te enseñare como conseguir tráfico web por las redes sociales y como hacer campañas muy importantes en Facebook, twitter, Google plus, etc . Espero que nos puedas seguir visitando muy seguido.

Aquí una pequeña lista de tutoriales blogger seo

Seo blogger para principiantes

Aquí veremos un tema muy importante sobre el seo, algunas sugerencias de optimización y sobre todo una configuración sobre robots.txt que forman parte de un pequeño experimento que hice.

Plantillas seo para blogger

Aquí hablo sobre las mejores plantillas seo para blogger, completamente optimizadas con etiquetas muy bien puestas en su lugar, y con una maquetación excelente. Disfrútala.

Plantillas responsive seo para blogger

Porque la gran parte de nuestro trafico web viene también de dispositivos móviles te traigo un excelente tutorial sobre plantillas o themes responsive seo para blogger, te estoy dando las mejores que siempre estoy utilizando en mis proyectos, espero las puedas disfrutar.

Redireccionamiento de dominios en blogger

Una gran parte para tener un blog bien optimizado es que puedas decirle a los motores de búsqueda como tienen que indexar tu dominio, aquí un pequeño tutorial para que te hagas un referencia de como hacer esta pequeña configuración.


  • Nunca te olvides de las redirecciones canonical, como último consejo.


Bueno disfruten de este pequeño artículo, mientras preparo otros mas como parte de nuestra formación para bloggers.

          Seo para blogs de blogger para principiantes   
Hola amigos hoy aprenderemos un tutorial sobre seo para blogs de blogger para principiantes que están iniciando su mundo en la optimización de páginas web o blogs, recuerden que vamos a iniciar con pequeños experimentos.

Aprendiendo seo para blogs de blogger para principiantes.


Se que muchos de ustedes están buscando información sobre posicionamiento web, o quizás como hacer seo en blogger, ahora bien como ya les mencione pasaré a brindar algunos consejos muy importantes y puestos en práctica sobre seo en blogger.

Vayamos a decir que quizás son pocas las personas que hacen referencia al SEO para Blogger , en realidad se encuentra mucha información sobre SEO para WordPress donde se tiene temas sobre pirámides, o blacklinks, pero de alguna y otra manera es una muy buena información.

seo-blogger
Gráfico #01 : Informe sobre tráfico orgánico siguiendo consejos de seo
Fuente : www.neytortutoriales.com

Bueno para algunas personas que aún no han conseguido una temática para su blog, les comento que pueden utilizar muchas herramientas webmaster de google, y elegir las palabras claves adecuadas.

Una herramienta muy importante es Google Adwords , con esta importante herramienta pueden planificar sus palabras claves y crear sus titulos y descripciones, así como también armar entradas para sus artículos.

Entonces supongamos que ya has elegido una temática, ahora nos queda hacer los siguientes pasos:

Nos vamos a editor de plantillas >Plantilla>Editar HTML

Debajo de la linea <title><data:blog.pageTitle/></title>, colocarán estos códigos:

Código HTML:


Bueno en este caso, vamos a hacer lo mismo que hacen muchas personas que vienen haciendo SEO en sus blogs por muchos años, pues por lo general ellos recomiendan utilizar unas 5 a 7 palabras claves para su blog, del mismo modo utilizar algunas palabras claves en la descripción, pero recuerda siempre no pasarte de los 150 caracteres que recomienda google.

#01 Otros consejos de seo para blogger.

Vamos a hacer esta otra configuración, para ello nos vamos a la pestaña - Preferencias para motores de búsqueda.

En esta opción denominada [ "Etiquetas meta" ], vamos a agregar la misma descripción que en la plantilla HTML, cabe recalcar que también debes coincidir con 150 caracteres.

#02 Utilizando los robots de blogger

En esta opción vamos a hacer algo muy interesante y que a mi me ha gustado mucho, para ello tendremos que dirigirnos a la opción [ "Rastreadores e indexación"].

Entonces vayamos a habilitar esta opcion "Archivo robots.txt personalizado" y "Etiquetas de encabezado de robots personalizadas", una vez que hayamos terminado entonces procederemos a hacer lo siguiente :



Lo único que haremos después de hacer todo esto será "Etiquetas de encabezado de robots personalizadas" lo dejaremos de esta manera:

seo-para-blogger
Gráfico #02 : Configuración de Etiquetas de los títulos de robots personalizadas
Fuente : www.neytortutoriales.com
Entonces ya tenemos casi todo listo, guardamos los cambios y vamos a hacer el siguiente paso.

#03 Enviar Sitemaps de blogger en webmaster Tools

En realidad me cuesta mucho creer las grandes facilidades que nos ha brindado google con estas herramientas, pues en lo particular Webmaster Tools me parece genial y fantástico.

Gráfico #03 : Enviar sitemaps
de blogger a webmaster tools

Fuente :  www.neytortutoriales.com
Puedes consultar mas información sobre los sitemaps en la siguiente dirección que te voy a mencionar, esto te ayudará de una y otra manera a saber diferenciar muchas cosas, y también para aprender que función cumple enviar un sitemap a google.

Más información sobre sitemaps - Ayuda de Search Console

Sin mas comentarios vayamos entonces a enviar los sitemaps de blogger en webmaster tools y para ello nos iremos a estas opciones :

Pondremos este pequeño código en nuestros sitemaps, pues le estaremos indicando a los buscadores que indexe nuestras primeras 500 entradas empezando desde el primer artículo:



atom.xml?redirect=false&start-index=1&max-results=500

Si ya tienes mas de 500 artículos, ahora empezaremos a enviar los siguiente otros 500 haciendolo de la siguiente manera :

atom.xml?redirect=false&start-index=501&max-results=1000

Y así puedes hacerlo sucesivamente con las entradas que vayas a seguir creando.


# Aprendiendo Posicionamiento web del plugin seo by yoast de wordpress

Si aún no has utilizado Wordpress, o quizás no cuentas con un presupuesto para montar un servidor, pues deberías utilizar un hosting gratis para hacer tus pruebas y utilizar el plugin seo by yoast de wordpress, esto te ayudará a medir la calidad seo de cada una de tus entradas y aprender a optimizarlas.

En otro artículo vamos a hablar de este plugin, pues he aprendido mucho y quiero compartirlo con todos ustedes. Espero que en realidad les haya gustado mi artículo, no se olviden de dejar sus sugerencias y/o comentarios, así como también recomendarnos. Gracias.



          devel/rubygem-excon - 0.57.1   
Update to 0.57.1 Changes: https://github.com/excon/excon/blob/master/changelog.txt
          Advanced PassGen 1.4   
Description:Advanced PassGen is a free utility that can help you generate passwordsAdvanced PassGen lets you can select a custom character set, change the minimum and maximum password length and so much more !Features:Small lettersCapital lettersSpecial charactersNumbersExport data to .txt, .html or .csv formatGenerate as many passwords as you wantCustom character setAutomatic updatesFreeware InformationAuthorCodeDeadSupported OSWindows XP, […]
          HTML Addins   
Computer Side Addins automatically inserts html code, from a text file, into html Webpages in seconds. Add and update headers, footers, menus, copyright notices and anything else on Webpages with a click of the mouse. Computer Side Addins Features: Computer Side Addins will save you more time and money than you can imagine. Make changes to one text file and have those changes made in every html file with the click of the mouse Computer Side Addins updates every html file that has <!-- zaddin="filename.txt" --> tags. Computer Side Addins automatically updates menus, navigation links, copyright dates or whatever you choose. Computer Side Addins will eliminate the added charges Hosting Companies charge for using SSI. Computer Side Addins does everything SSI (Server Side Includes) does and much more. Computer Side Addins improves Search Engine Listings by proofreading the webpage code. Computer Side Addins will update one hundred 30 Kb. files in a folder in less than 30 seconds. No user input or programming knowledge required. Computer Side Addins does all the work. Simply copy the _ADDIN.EXE shortcut file to any folder that contains the html files you want updated and open it. zaddin tags will be updated in every html file and then every html file will be proofread. All done in seconds. Upload the updated html files to the Internet. Wha-la - You're done! Free Trial Version available - The free trial version runs the same program as the purchased version. The only difference is the Free Trial Version is limited to one folder. Tag:
          Merge Delimited Files on a Common Key   

Originally posted on: http://geekswithblogs.net/Lance/archive/2011/10/18/merge-delimited-files-on-a-common-key.aspx

Many times I need to merge two separate datasets that have a common key column – for example:

dataset 1:

ID, Name, Weight, Height

dataset 2:

ID, Address1, Address2, Phone1, Phone2

I can’t just concat the data together, instead I need the merge to happen around the ID key, so that each ID only has a single row in the result.  So, of course I wrote a powershell script to do this for me.  Take a look at it below.  I called it “Merge-TsvFiles”, but it takes a delimiter as one of its paramters, so you could use this for CSV or whatever.

If you have any thoughts as to how this can be further improved code-wise or speed-wise, please comment!

function Merge-TsvFiles {
  param(
    [string] $file1 = $(throw "file1 required."),
    [string] $file2 = $(throw "file2 required."),
    [string] $delimiter = "`t",
    [string] $key = "ProfileID"
  )

  $data1 = import-csv -path $file1 -delimiter $delimiter
  $data2 = import-csv -path $file2 -delimiter $delimiter

  #write-host "$data1.Length total data rows, and $data2.Length total merge data rows."
  $i = 0

  #grab the new column names
  $newcols = $data2 | gm -MemberType NoteProperty

  Foreach ($datarow in $data1)
  {
    $i++
    $data2 | where-object {$_.$($key) -eq $data1.$($key)} | %{
      Foreach ($col in $newcols) {
        if ($col.Name -ne $key) {
          Add-Member -inputObject $datarow -name $col.Name -value $_.$($col.Name) -MemberType NoteProperty;
        }
      }
    }
  Write-Progress -activity "Merging data" -status "Merged $i of $($data1.Length) rows..." -percentComplete (($i / $data1.length) * 100) 
}

write-host "Writing output..."
$data1 | export-csv "output.txt" -delimiter "`t"
}

Technorati Tags: ,,,

          Virtuoso Elastic Cluster Benchmarks AMI on Amazon EC2   

We have another new Amazon machine image, this time for deploying your own Virtuoso Elastic Cluster on the cloud. The previous post gave a summary of running TPC-H on this image. This post is about what the AMI consists of and how to set it up.

Note: This AMI is running a pre-release build of Virtuoso 7.5, Commercial Edition. Features are subject to change, and this build is not licensed for any use other than the AMI-based benchmarking described herein.

There are two preconfigured cluster setups; one is for two (2) machines/instances and one is for four (4). Generation and loading of TPC-H data, as well as the benchmark run itself, is preconfigured, so you can do it by entering just a few commands. The whole sequence of doing a terabyte (1000G) scale TPC-H takes under two hours, with 30 minutes to generate the data, 35 minutes to load, and 35 minutes to do three benchmark runs. The 100G scale is several times faster still.

To experiment with this AMI, you will need a set of license files, one per machine/instance, which our Sales Team can provide.

Detailed instructions are on the AMI, in /home/ec2-user/cluster_instructions.txt, but the basic steps to get up and running are as follows:

  1. Instantiate machine image ami-811becea) (AMI ID is subject to change; you should be able to find the latest by searching for "OpenLink Virtuoso Benchmarks" in "Community AMIs"; this one is short-named virtuoso-bench-cl) with two or four (2 or 4) R3.8xlarge instances within one virtual private cluster and placement group. Make sure the VPC security is set to allow all connections.

  2. Log in to the first, and fill in the configuration file with the internal IP addresses of all machines instantiated in step 1.

  3. Distribute the license files to the instances, and start the OpenLink License Manager on each machine.

  4. Run 3 shell commands to set up the file systems and the Virtuoso configuration files.

  5. If you do not plan to run one of these benchmarks, you can simply start and work with the Virtuoso cluster now. It is ready for use with an empty database.

  6. Before running one of these benchmark, generate the appropriate dataset with the dbgen.sh command.

  7. Bulk load the data with load.sh.

  8. Run the benchmark with run.sh.

Right now the cluster benchmarks are limited to TPC-H but cluster versions of the LDBC Social Network and Semantic Publishing benchmarks will follow soon.


          In Hoc Signo Vinces (part 21 of n): Running TPC-H on Virtuoso Elastic Cluster on Amazon EC2   

We have made an Amazon EC2 deployment of Virtuoso 7 Commercial Edition, configured to use the Elastic Cluster Module with TPC-H preconfigured, similar to the recently published OpenLink Virtuoso Benchmark AMI running the Open Source Edition. The details of the new Elastic Cluster AMI and steps to use it will be published in a forthcoming post. Here we will simply look at results of running TPC-H 100G scale on two machines, and 1000G scale on four machines. This shows how Virtuoso provides great performance on a cloud platform. The extremely fast bulk load — 33 minutes for a terabyte! — means that you can get straight to work even with on-demand infrastructure.

In the following, the Amazon instance type is R3.8xlarge, each with dual Xeon E5-2670 v2, 244G RAM, and 2 x 300G SSD. The image is made from the Amazon Linux with built-in network optimization. We first tried a RedHat image without network optimization and had considerable trouble with the interconnect. Using network-optimized Amazon Linux images inside a virtual private cloud has resolved all these problems.

The network optimized 10GE interconnect at Amazon offers throughput close to the QDR InfiniBand running TCP-IP; thus the Amazon platform is suitable for running cluster databases. The execution that we have seen is not seriously network bound.

100G on 2 machines, with a total of 32 cores, 64 threads, 488 GB RAM, 4 x 300 GB SSD

Load time: 3m 52s
Run Power Throughput Composite
1 523,554.3 590,692.6 556,111.2
2 565,353.3 642,503.0 602,694.9

1000G on 4 machines, with a total of 64 cores, 128 threads, 976 GB RAM, 8 x 300 GB SSD

Load time: 32m 47s
Run Power Throughput Composite
1 592,013.9 754,107.6 668,163.3
2 896,564.1 828,265.4 861,738.4
3 883,736.9 829,609.0 856,245.3

For the larger scale we did 3 sets of power + throughput tests to measure consistency of performance. By the TPC-H rules, the worst (first) score should be reported. Even after bulk load, this is markedly less than the next power score due to working set effects. This is seen to a lesser degree with the first throughput score also.

The numerical quantities summaries are available in a report.zip file, or individually --

Subsequent posts will explain how to deploy Virtuoso Elastic Clusters on AWS.

In Hoc Signo Vinces (TPC-H) Series


          Ubuntu 7.10 instalado en memoria USB   
Una de las grandes ventajas de linux es su gran versatilidad, pudiendo instalarse en cualquier soporte, no sólo discos duros, incluso en lápices de memoria flash. De esta forma se consigue un sistema portatil aún más cómodo que el liveCD. Pero es que la instalación en pendrive incluye una mejora más, y es la posibilidad de guardar los cambios en la configuración de cada uso, ya que al contrario que en los CD, si tenemos la posibilidad de escribir sobre ellos.
La carga del sistema será ligeramente más lenta que en un liveCD, pero una vez cargado, el sistema será más ligero y rápido que el del liveCD.

Lo necesario para crear el pendrive con ubuntu 7.10::

  • Imagen ISO de ubuntu 7.10
  • Grabadora CD
  • 1GB USB pendrive (2GB+ recommended)
  • U710fix.tar

El proceso es largo, pero no deja de ser un copiar-pegar.

  1. Descarga la imagen iso de Ubuntu 7.10 y grábala en un CD.
  2. Inserta el CD y la memoria USB
  3. Reinicia el ordenador y deja que cargue Ubuntu desde el liveCD
  4. Abre un terminal
  5. Escribe sudo su para tener permisos de administrador
  6. Escribe fdisk -l para listar las particiones y discos duros disponibles. Localiza la partición de la memoria USB (para el proceso usare como dispositivo /dev/sdc, /dev/sdc1 la partición, simplemente cambialo por el tuyo)
  7. Escribe umount /dev/sdc1
  8. Escribe fdisk /dev/sdc
    • Escribe p para mostrar la partición existente y d para borrarla
    • Repite el proceso hasta que borres todas las particiones del pendrive
    • Escribe n para crear una nueva partición
    • Escribe p para que sea una partición primaria
    • Escribe 1 para que sea la primera partición
    • ENTER para usar por defecto el primer cilindro
    • Escribe +750M para indicar el tamaño de la partición
    • Escribe a para convertirla en la partición activa
    • Escribe 1 para seleccionar la primera partición
    • Escribe t para cambiar el sistema de archivos de la partición
    • Escribe 6 para seleccionar el sistema de archivos fat16
    • Escribe n para crear otra partición
    • Escribe p para que sea partición primaria
    • Escribe 2 para que sea la segunda partición
    • ENTER para usar el cilindro por defecto
    • ENTER para usar el último cilindro por defecto
    • Escribe w para escribir la nueva tabla de particiones
  9. Escribe umount /dev/sdc1 para asegurarte que la partición está desmontada
  10. Escribe mkfs.vfat -F 16 -n ubuntu710 /dev/sdc1 para formatear la primera partición
  11. Escribe umount /dev/sdc2 para asegurarte que la partición está desmontada
  12. Escribe mkfs.ext2 -b 4096 -L casper-rw /dev/sdc2 para formatear la segunda partición
  13. Extrae y vuelve a meter el lápiz de memoria
  14. Vuelve a la terminal y escribe aptitude update
  15. Escribe aptitude install syslinux mtools
  16. Escribe syslinux -sf /dev/sdc1
  17. Escribe cd /cdrom
  18. Escribe cp -rf casper disctree dists install pics pool preseed .disk isolinux/* md5sum.txt README.diskdefines ubuntu.ico casper/vmlinuz casper/initrd.gz /media/ubuntu710/
  19. Ignora cualquier error del tipo "cannot create symbolic link" que se produzca
  20. Escribe cd /home/ubuntu
  21. Escribe wget pendrivelinux.com/downloads/U710fix.zip
  22. Escribe unzip -o -d /media/ubuntu710/ U710fix.zip
  23. Reinicia el ordenador, ajusta en la BIOS para que arranque desde el dispositivo USB primero y reinicia de nuevo.

Si no dispones de internet en el ordenador de instalación, deberás conseguir de alguna otra forma el U710fix.zip (saltandote por tanto el paso 20) y una vez en este ordenador modificando el paso 21 para indicarle la ruta completa del archivo, por ejemplo, si lo tienes en el escritorio:
unzip -o -d /media/ubuntu710/ /home/usuario/Desktop/U710fix.zip

Y ya deberías una vez arrancado el ordenador con la memoria USB conectada tener Ubuntu 7.10 que debería automáticamente salvar los cambios entre sesión y sesión.

Fuente: pendrivelinux
             
Elvis Costello: "She said drop dead, then left with another guy."
          Nouveaux éléments sur le Trojan.Encoder.12544    

Le 28 juin 2017

Les experts de Doctor Web ont poursuivi leurs recherches sur le ransomware Trojan.Encoder.12544 connu dans les médias comme Petya, Petya A, ExPetya, NotPetya et WannaCry-2. Après avoir effectué une analyse préliminaire du malware, Doctor Web présente des recommandations sur le procédé permettant d'éviter la contamination et explique comment faire dans le cas où une contamination a eu lieu. Doctor Web révèle également les détails techniques de l'attaque.

Le ver-ransomware Trojan.Encoder.12544 présente un grand danger pour les ordinateurs personnels fonctionnant sous Microsoft Windows. Les diverses sources le considèrent comme une modification du Trojan connu sous le nom de Petya (Trojan.Ransom.369), mais le Trojan.Encoder.12544 n'a que quelques traits similaires avec ce malware. Le programme malveillant a pu pénétrer dans les systèmes informatique d’un certain nombre d’organismes gouvernementaux, dans des banques et des entreprises commerciales, des utilisateurs ont été touchés dans plusieurs pays.

À l’heure actuelle, il est connu que le Trojan infecte les ordinateur en utilisant les mêmes vulnérabilités qui ont déjà été exploitées par les pirates afin d'introduire dans les ordinateurs le Trojan WannaCry. La propagation massive du Trojan.Encoder.12544 a commencé dans la première moitié de la journée du 27.06.2017. Lors de son démarrage sur un ordinateur attaqué, le Trojan utilise plusieurs moyens pour trouver des PC accessibles dans le réseau local, puis selon une liste d’adresses IP reçue, commence à scanner les ports 445 et 139. Après avoir détecté dans le réseau les machines sur lesquelles ces ports sont ouverts, Trojan.Encoder.12544 tente de les infecter à l’aide de la vulnérabilité largement connue du protocole SMB (MS17-10).

Dans son corps, le Trojan contient 4 ressources compressées, dont 2 sont des versions 32-bits et 64-bits de l'utilitaire Mimikatz destiné à intercepter les mots de passe des sessions ouvertes sous Windows. Selon le type de l'OS, il décompresse une copie appropriée de l'utilitaire, la sauvegarde dans un dossier temporaire puis la lance. À l’aide de l’utilitaire Mimikatz, ainsi qu'en utilisant deux autres variantes, Trojan.Encoder.12544 obtient une liste des utilisateurs locaux et des utilisateurs de domaines autorisés sur l’ordinateur infecté. Puis il recherche des dossiers partagés disponibles, tente de les ouvrir en utilisant les données d'authentification obtenues et d'y enregistrer sa propre copie. Pour infecter les ordinateurs auxquels il a obtenu l'accès, utilise un utilitaire de gestion de l'ordinateur distant PsExec (qui est également stocké dans les ressources du Trojan) ou l'utilitaire de console standard destiné à lancer les objets Wmic.exe.

Le ransomware contrôle son redémarrage avec le fichier qu'il enregistre dans le dossier C:\Windows\. Ce fichier porte le nom qui correspond au nom du Trojan sans l’extension. Puisque l'échantillon du ver propagé par les pirates actuellement porte le nom perfc.dat, le fichier qui empêche son redémarrage va avoir le nom C:\Windows\perfc. Mais une fois que les attaquants ont modifié le nom d’origine du Trojan, même la création dans le dossier C:\Windows\ d'un fichier nommé perfc sans extension (comme le suggèrent certains éditeurs d’antivirus) ne pourra plus sauver l'ordinateur de la contamination. Il est à noter que le Trojan vérifie la présence du fichier perfc, uniquement s'il a assez de privilèges dans l'OS.

Après son lancement, le Trojan configure ses privilèges et charge en mémoire sa propre copie à laquelle il transmet la gestion. Ensuite, le ransomware écrase son fichier initial sur le disque avec des données inutiles et le supprime. En premier lieu, Trojan.Encoder.12544 atteint le VBR (Volume Boot Record qui est l'enregistrement d’amorçage de partition) du lecteur C:, et remplit le premier secteur du disque de données inutiles. Puis le ransomware copie le VBR Windows dans un autre secteur du disque, mais avant de le copier, il le chiffre en utilisant l'algorithme XOR et le remplace par son enregistrement d'amorçage. Puis il crée une tâche de redémarrage et commence à chiffrer tous les fichiers trouvés sur les disques locaux physiques ayant les extensions : 3ds, .7z, .accdb, .ai, .asp, .aspx, .avhd, .back, .bak, .c, .cfg, .conf, .cpp, .cs, .ctl, .dbf, .disk, .djvu, .doc, .docx, .dwg, .eml, .fdb, .gz, .h, .hdd, .kdbx, .mail, .mdb, .msg, .nrg, .ora, .ost, .ova, .ovf, .pdf, .php, .pmf, .ppt, .pptx, .pst, .pvi, .py, .pyc, .rar, .rtf, .sln, .sql, .tar, .vbox, .vbs, .vcb, .vdi, .vfd, .vmc, .vmdk, .vmsd, .vmx, .vsdx, .vsv, .work, .xls, .xlsx, .xvd, .zip.

Le Trojan chiffre les fichiers uniquement sur les lecteurs fixes de l’ordinateur, les données sur chaque disque sont cryptées dans un thread séparé. Le chiffrement est effectué en utilisant des algorithmes AES-128-CBC, une clé est créée pour chaque disque (c'est une particularité caractéristique du Trojan non remarquée par les autres chercheurs). Cette clé est chiffrée à l’aide de l'algorithme RSA-2048 (les autres chercheurs ont rapporté qu'une clé de 800 bits est utilisée) et stockée dans le dossier racine du disque crypté, dans un fichier nommé README.TXT. Les fichiers chiffrés ne reçoivent pas d'extension supplémentaire.

Après avoir exécuté la tâche précédemment créée, l'ordinateur démarre et la gestion est passée à l'enregistrement d'amorçage du Trojan. Il affiche à l’écran de la machine contaminée un texte qui ressemble au message de l'utilitaire standard CHDISK.

screenshot Trojan.Encoder.12544 #drweb

Dans le même temps, le Trojan.Encoder.12544 chiffre le MFT (Master File Table). Dès que le chiffrement est terminé, il affiche la demande de rançon.

screenshot Trojan.Encoder.12544 #drweb

Si, au démarrage, vous voyez à l'écran un message sur le lancement de l'utilitaire CHDISK, éteignez immédiatement le PC. Dans ce cas, l’enregistrement d’amorçage sera endommagé, mais il sera encore possible de le restaurer avec l'utilitaire de restauration Windows ou depuis la Console de restauration, pour cela il faudra démarrer depuis un disque d’installation. La restauration de l'enregistrement d'amorçage est possible sous Windows en version 7 ou supérieures, s’il existe sur le disque une partition cachée utilisée par l'OS et ayant une copie de sauvegarde des données critiques pour le fonctionnement de Windows. Sous Windows XP, cette méthode ne va pas fonctionner. Vous pouvez également utiliser Dr.Web LiveDisk - dans ce cas, créez un disque bootable ou une clé USB depuis laquelle vous pourrez démarrer, puis démarrez depuis ce support amovible, lancez le scanner Dr.Web, effectuez l'analyse du disque endommagé et appliquez l'action « Neutraliser » aux menaces détectées.

Selon les rapports de différentes sources, la seule BAL utilisée par les pirates qui propagent le Trojan.Encoder.12544 est bloquée actuellement, et ils ne sont donc pas en mesure de contacter leurs victimes afin de leur proposer, par exemple, de déchiffrer les fichiers.

Pour prévenir l’infection par le Trojan.Encoder.12544, Doctor Web recommande de créer des sauvegardes de toutes les données critiques sur des supports indépendants et d'utiliser la fonction " Protection contre la perte de données " au sein de Dr.Web Security Space. A part cela, il faut installer toutes les mises à jour de sécurité pour votre système d’exploitation. Les spécialistes de Doctor Web continuent à examiner le ransomware Trojan.Encoder.12544.

Recommandations pour les utilisateurs dont les machines ont été touchées par le Trojan.Encoder.12544


          Tuấn Khanh - Tình thương sẽ tạo nên hiệu ứng đoàn kết   
Lúc này, điều cần thiết là thành lập một Quỹ trợ giúp những người phụ nữ như Mẹ Nấm – mà cô đang là một hình ảnh gợi ý, một cơ hội tập hợp, nhắc mọi người có lòng, muốn chia sẻ rằng có rất nhiều những người phụ nữ Việt Nam như vậy đang tồn tại quanh chúng ta. Họ đã đứng lên thay chúng ta, nói thay chúng ta, và chịu khốn khó thay cho chúng ta.


Năm 2011, nghệ sĩ Ngải Vị Vị bị chính quyền Trung Quốc tuyên phạt số tiền 12 triệu Nhân dân tệ, tương đương khoảng 2 triệu Mỹ kim. Đó là một trong những đòn phép mới mẻ, mà chính quyền Trung Quốc đắc ý, nghĩ rằng sẽ tạo được không khí khủng bố đối với những người bất đồng chính kiến.

Thế nhưng âm mưu của nhà cầm quyền đã thất bại. Bất ngờ, những người dân ủng hộ quan điểm của nghệ sĩ Ngải Vị Vị đã cùng nhau góp tiền giúp cho con người tài năng và tự do đó đóng phạt. Tiền được gửi qua bưu điện, qua tài khoản, thậm chí có những người đi qua nhà ông, ném tiền vào nhà rồi chạy đi.

Câu chuyện này là ví dụ về phần thất bại không thể lường trước của các chính sách trấn áp và sách nhiễu người bất đồng chính kiến, từ chính quyền độc tài. Sau sự kiện của ông Ngải Vị Vị, có thêm nhiều người bị chính quyền cộng sản Trung Quốc tìm cớ phạt, cũng được dân chúng giúp góp tiền như vậy. Hiệu ứng từ việc đoàn kết này, biến các trò sách nhiễu và chế tài của nhà cầm quyền thành cơ hội để nhân rộng người cùng tư tưởng và khiến sự răn đe trở thành trò hề.

Trong sự kiện blogger Mẹ Nấm Nguyễn Ngọc Như Quỳnh bị tuyên án 10 năm tù, đã xuất hiện hàng loạt các dự án gọi nhau đóng góp ngân sách nuôi nấng cho 2 đứa trẻ phải xa mẹ. Dù không diễn ra trên bề mặt xã hội, nhưng từ các email, các tin nhắn… các chương trình kêu gọi đóng góp cho các con của Mẹ Nấm Nguyễn Ngọc Như Quỳnh xuất hiện liên tục. Chỉ riêng bản thân mình, tôi đã nhận được ít nhất là 3 lời mời từ các nhóm khác nhau trong 2 ngày.

Những lời mời gọi như vậy thật cảm động. Nó cho thấy một mặt khác của tòa án, của luật lệ, là con người và lẽ phải, là sự thật.

Nhưng sự cảm động và chia sẻ, cũng cần một cái nhìn rộng hơn, để không biến thành một phong trào của chủ nghĩa thần tượng / sùng bái cá nhân riêng lẻ.

Trong trường hợp cần phải nghĩ đến, xin mọi người đừng quên chị Trần Thị Nga, cũng với 2 con nhỏ đang hiu hắt chờ mẹ. Chị Trần Thị Hồng, vợ mục sư Nguyễn Công Chính – dù đang ở ngoài nhưng vô cùng vất vả để nuôi dưỡng con cái và chờ chồng ra tù. Và gần đây, có cả trường hợp vợ của giáo sư Phạm Minh Hoàng đột nhiên phải một mình gồng gánh cả gia đình sau khi chồng bị trục xuất. Vẫn còn nhiều nữa những trường hợp như vậy, nếu như liệt kê và tìm hiểu, sẽ nhìn thấy hầu hết đều là những phụ nữ gặp khó khăn vì phải đối diện với chính trị, với lý tưởng, với tranh đấu cho mình và cho người chung quanh.

Có lẽ, lúc này, điều cần thiết là thành lập một Quỹ trợ giúp những người phụ nữ như Mẹ Nấm – mà cô đang là một hình ảnh gợi ý, một cơ hội tập hợp, nhắc mọi người có lòng, muốn chia sẻ rằng có rất nhiều những người phụ nữ Việt Nam như vậy đang tồn tại quanh chúng ta. Họ đã đứng lên thay chúng ta, nói thay chúng ta, và chịu khốn khó thay cho chúng ta.

Yêu thương và chia sẻ, luôn là món quà lớn nhất mà con người qua đó có thể vun tạo nhân tính của mình, để gìn giữ phẩm hạnh giữa thời bỉ cực.

Và nếu đó là món quà không chỉ bộc phát cho một con người, trong một tình cảnh nhất định bùng phát từ truyền thông – mà là ý thức và tình người phát đi đến mọi nơi – thì đó chính là hạnh phúc cho người mà cho cả chúng ta. Mong thay.

Tuấn Khanh

(Blog Tuấn Khanh)

          Phạm Chí Dũng - Mẹ Nấm sẽ không phải ở tù hết 10 năm!   
Bà Nguyễn Tuyết Lan, mẹ của nhà hoạt động nhân quyền Nguyễn Ngọc Như Quỳnh - người vừa bị Tòa án “nhân dân” Khánh Hòa xử đến 10 năm tù trong một phiên tòa được tuyên truyền là “công khai” - không nên quá xúc động khi thốt lên với cháu mình: “Khi con 21 tuổi con mới được gặp mẹ!”.

Bởi một lần nữa trong bao lần của lịch sử, nước Việt đang bước vào thời đoạn “cùng tắc biến”.

Mẹ Nấm - Nguyễn Ngọc Như Quỳnh
Chỉ là những con số

Vào giờ phút này, ở vào tình thế 5 mối nguy mất nước “Trẻ không kính già, Trò không trọng thầy, Tham nhũng tràn lan, Binh kiêu tướng thoái, Sĩ phu ngoảnh mặt với thời cuộc” mà cổ nhân Lê Quý Đôn đã đúc kết, 10 hay 20 hoặc cả 30 năm tù cũng chỉ là những con số. Những con số ấy có thể đột ngột rút ngắn tuổi thọ của chúng một cách đáng kể theo đà sóng lừng dồn đến sóng thần của biển cả dân tộc.

Nhớ lại năm 2012, vụ Câu lạc bộ Nhà báo tự do bị đem ra xét xử. Những nhà đấu tranh cho tự do báo chí là Điếu Cày Nguyễn Văn Hải và Tạ Phong Tần đã bị chính quyền xử án lần lượt đến 12 năm và 10 năm tù. Những viên công an đanh ác hả hê trước Tần: “Cứ thế mà ở cho đủ 10 năm đấy!”.

Nhưng chỉ 2 năm sau, Điếu Cày đã được tự do bởi nguyên cớ chính quyền Việt Nam khi đó tràn trề hy vọng được Hoa Kỳ chấp nhận cho tham gia vào Hiệp định TPP. Một năm sau đó, Tạ Phong Tần cũng được tự do.

Song đó là chuyện cũ. Chuyện “đổi tù nhân lương tâm lấy lợi ích thương mại” đã ăn vào bản chất của chính quyền Việt Nam.

Còn 2017 - năm xử án Nguyễn Ngọc Như Quỳnh - lại khác xa bối cảnh năm 2012. Câu chuyện của những người như Quỳnh cũng sẽ khác.

Nếu năm 2012, tình hình kinh tế mới dợm chân vào suy thoái, nội bộ đảng còn chưa phân hóa mạnh dù bắt đầu xảy ra mâu thuẫn đủ lớn “Trọng - Dũng”, còn xã hội chưa đến mức hỗn loạn dù đã bùng nổ “người nông dân nổi dậy” Đoàn Văn Vươn ở Tiên Lãng…, thì từ đó đến năm 2017 đã có hàng loạt bằng chứng không thể che giấu về một cơn khủng hoảng kinh tế đang ập tới, kéo theo rất nhiều dấu hiệu cho thấy ngân sách đang cạn kiệt với gia tốc nhanh hơn hẳn, hàng loạt dấu hiệu hiển hiện về phân hóa và phân rã trong đảng, và đặc biệt là những cái tên sôi sục như Formosa, Đồng Tâm…

Bầu không khí xã hội và chế độ đã trở nên kích nén, bấn loạn, khẩn cấp lắm rồi!

Cả đất nước như một lò lửa không chỉ còn âm ỉ.

Bức nén và bấn loạn đến mức ngay cả một nhân vật nguyên thứ trưởng Bộ công an là ông Võ Viết Thanh còn phải ấp ủ ao ước có được “đối lập xây dựng” trong đảng Cộng sản. Bức bối kìm nén đến mức nhiều trí thức, cựu quan chức và cả quan chức đang vận động để đảng cầm quyền trở về tên đảng Lao Động thời Hồ Chí Minh, cho dù một số chủ nhân ông của kế hoạch đó vẫn thầm thì với nhau “chỉ là thay áo thôi mà”…

Với một bầu không khí dễ kích nổ đến thế, lấy đâu ra cơ sở luận chứng để giới bảo thủ trong đảng cầm quyền tưởng tượng về “tầm nhìn đến năm 2030” cùng các kế hoạch cho sự tồn tại của đảng trong hàng chục năm nữa?


Nhà tù nhỏ và nhà tù lớn


Năm 1986, tình hình Liên Xô trước khi tan rã vẫn có vẻ ổn định vào. Kể cả đến năm 1988 vẫn chưa có gì xáo động lớn, ít ra trên bề mặt xã hội. Nhưng chỉ một vài năm sau, bức tường Berlin bất thần sụp đổ trước làn sóng khổng lồ của người dân Đông Đức, còn 20 triệu đảng viên cùng vài triệu binh sĩ và công an xô viết đã trở nên tê liệt trước hình ảnh chấm dứt độc quyền của đảng cộng sản ngay tại đất nước này.

Mọi chuyện cũng có thể diễn biến nhanh, thậm chí rất nhanh ở Việt Nam. Dân chủ và quyền dân đã bị dồn vào chân tường để luôn có thể bật ra, bùng lên bất cứ lúc nào. Cái gọi là “dân chủ nội bộ” cũng nghẹt thở. Tưởng chừng sau Đại hội 12 vào dầu năm 2016, chính trường sẽ “thống nhất”. Nhưng ngược lại là đằng khác, bầu không khí chính trị như trở về thời tiền Mười hai sứ quân. Nhanh đến phát sợ, ngày càng nổi lên nạn cát cứ quyền lực và sứ quân địa phương. Hừng hực và mê muội như thiêu thân, các nhóm lợi ích móc chặt cùng các nhóm thân hữu trong chính quyền và trong đảng đua nhau lao theo “chuyến tàu vét”. Xung đột tràn lan và tàn nhẫn từ địa phương đến trung ương, thật như thời Lê mạt.

Nhưng xung đột ghê gớm không kém là giữa một bên là chủ nghĩa Mác - Lê với bên kia là thuyết kim tiền.

Kể từ thời Liên Xô tan vỡ và khủng hoảng Đông Âu vào đầu thập kỷ 90 của thế kỷ 20, chưa bao giờ có nửa năm đầu đầy biến động hỗn tạp cả về chính trị, kinh tế, xã hội và đối ngoại như năm 2017 này. Tất cả cứ như bị siết nghẹt trong một cái áo quá chật hẹp, những đường chỉ chỉ chờ chực nứt tung. Sau tất cả các cuộc xung đột triền miên, phần đông đang nhìn thấy một cơn sóng thần lừng lững xô đến. Nhưng bi kịch thay, tất cả vẫn còn nguyên trong vòng luẩn quẩn. Tất cả vẫn còn nguyên bế tắc.

Nếu những người như Như Quỳnh bị giam hãm trong nhà tù nhỏ, chắc chắn những kẻ cầm quyền cũng chẳng sung sướng gì: họ đang nằm trong một nhà tù lớn.


Lối thoát


Nhưng kém may mắn hơn Như Quỳnh rất nhiều, những kẻ cầm quyền không có nhân dân bên cạnh. Xung quanh họ và trong họ chỉ là một sự cô độc mênh mông, một sự cô đơn tự nguyền rủa.

Chẳng có gì ngạc nhiên khi một bộ phận đảng viên và một số thế lực trong đảng đang ngày càng nhiều hơn những biểu hiện muốn “tự cải cách” để thoát khỏi con tàu sắp đắm… Đây mới chính là tác nhân lớn nhất, hiện thực nhất và khả thi nhất dẫn đến một cuộc đảo lộn và bắt buộc phải dân chủ hóa chính thể trong những năm tới, chứ không chỉ là tác động từ yếu tố đối ngoại và cộng đồng nhân quyền quốc tế.

Thời gian không còn nhiều nữa. Mà lại thật ngắn ngủi cho những cá nhân cầm quyền muốn tìm lối thoát. Có lẽ nửa cuối năm 2017 sẽ chứng kiến những bùng nổ xung đột cùng những chuyển động không những “thay da” mà còn phải dần “đổi thịt” cho năm 2018 và những năm sau đó.

Mời xem Video: Bộ Quốc Phòng đã vô hiệu hóa Nguyễn Phú Trọng xác định chống Trung Quốc giữ Biển Đông?



Không hẳn giống với kịch bản một Miến Điện chuyển tiếp dân chủ từ năm 2012 khi có đến vài trăm tù nhân chính trị được trả tự do theo lộ trình, nhưng Việt Nam cũng phải chuyển biến theo cách đó, không khác hơn được. Nếu không, chế độ và cả đất nước này sẽ bị cô lập như một ốc đảo giữa đại dương cuồn cuộn sóng dữ.

Cũng không thể khác hơn, những người đấu tranh nhân quyền bị xử án tù ở thời điểm này đều có hy vọng sẽ phải được trả tự do sớm. 10, 20 hay cả 30 năm tù đều chỉ là những con số tự huyễn hoặc về ảo tưởng sức mạnh của buổi chợ chiều chính thể.

Là một cựu đảng viên đảng cộng sản và có lẽ đã quá hiểu cái đảng này, tôi tin chắc rằng những người đấu tranh vì nhân quyền, vì nhân dân như Nguyễn Ngọc Như Quỳnh sẽ không phải thụ hết cái án tù 10 năm. Thậm chí ngay cả một nửa hay một phần ba của con số đó sẽ là quá bội thực đối với giới cầm quyền đã nhốt giam Như Quỳnh.

Phạm Chí Dũng

(Blog VOA)

          Chúng ta làm gì khi bạn bè gặp nạn?   
Nếu mỗi người chỉ đóng góp 200,000 thì với khoảng 20,000 friends & followers trên FB của MN, con số quyên góp sẽ là 4 tỉ. Quá đủ để nuôi nấng 2 đứa trẻ đến lớn nếu gia đình biết cách quản lý. Chỉ 200K thôi, những người từng là bạn bè của MN có làm được điều đó không?


Giới giang hồ có một luật rất là hay! Đó là khi thằng nào đó được giao nhiệm vụ, vì nhiệm vụ đó nếu nó bị bắt, bị giết,… thì gia đình vợ con nó sẽ được ông trùm hoặc chiến hữu bảo bọc đến suốt đời hoặc cho đến khi băng đó tan rã. Nhờ vậy mà thằng đó yên tâm, giao gì cũng làm, bị bắt không khai, tra tấn quá thì nó thà tự tử. Vì bán đứng anh em sẽ đồng nghĩa với việc chẳng những gia đình nó không được che chở mà ngược lại, còn bị trả thù, sát hại.

Đọc kiếm hiệp Kim Dung, chắc có người nhớ chuyện tỉ thí giữa Hồ Nhất Đao và Miêu Nhân Phượng trong Tuyết Sơn Phi Hồ, Phi Hồ Ngoại Truyện. Cả 2 cam kết, thắng thua phải định, nhưng ai thắng trong cuộc đấu thì phải nuôi nấng con của người thua (nếu chẳng may người kia chết trong cuộc quyết đấu). Vì chuyện đó mà khi không tìm được Hồ Phỉ, suốt mấy chục năm, Miêu Nhân Phượng áy náy không nguôi.

Kể dông dài để thấy, dù là chiến hữu hay kẻ thù thì cái nghĩa khí, cái quân tử vẫn phải lấy làm trọng.

Giờ nói chuyện anh em phản động.

Mình dùng chữ “phản động” như một thói quen để chỉ chung nhóm bất đồng chính kiến, không có ý tốt hay ý xấu. Vì phản động cũng có trăm loại phản động, đấu tranh cũng có ngàn loại đấu tranh. Mình không phán xét ai, mỗi người tự có cách, tự có lý. Nhưng thế giới phản động cũng như giới giang hồ, bị chính quyền đặt ra ngoài khuôn phép, bị cộng đồng e dè, ái ngại. Cũng có khi lại được hâm mộ, kính trọng… Nhìn nôm na nó cũng như một khía cạnh nào đó của giới giang hồ. Có người quang minh chính đại, có người bị chứi không ra gì… Nói chung, đâu có gì toàn bích. Nhưng mình biết rất nhiều anh em, hãnh diện vì được gọi là “phản động”.

Đặc biệt, có nhiều anh em, hãnh diện vì được là bạn bè của Mẹ Nấm, dù là trên FB, hay là trong đời thực. Cứ nghe giọng điệu là biết, ôi Mẹ Nấm hả? Mới ngồi với “nó” hôm trước đây! Ôi Mẹ Nấm hả, biết “nó” lâu rồi… Thậm chí không ít người, coi việc làm bạn với Mẹ Nấm là một cái mác, có thể “giựt le” trên mạng hay trên bàn nhậu. Okay, fine, đời có đủ loại bạn và bè. Ngoài 5,000 friends bị FB giới hạn ra, mình nghĩ MN đang có lượng followers rất khủng! Vậy, hàng chục ngàn bạn bè đó, chúng ta đang làm gì khi nghe tin MN bị xử 10 năm tù?

Nhất là khi hầu hết những người kết bạn với MN, thường có điểm chung là bất đồng chính kiến, là ủng hộ nhân quyền, là kêu gọi đấu tranh cho tự do và các tiêu chuẩn văn minh tiến bộ. Đó là những người đã có ý thức về cộng đồng, về tác động của xã hội lên đời sống mỗi người. Vậy thì cái cộng đồng nhỏ trong giới hạn bạn bè của MN thôi, chúng ta đang làm gì?

Ngoài post một vài stt khóc thương ra, chúng ta sẽ làm gì cho 10 năm sắp tới? Để những người đấu tranh, hay cứ gọi là một người “phản động”, một giang hồ có nhiệm vụ là đương đầu với bất công sẽ yên tâm mà tiếp tục làm nhiệm vụ của mình. Để những người phản động khác, những tay giang hồ khác có thể nhìn vào đó mà thấy rằng, chiến hữu sẽ không bỏ ta?

Người ta chỉ có thể toàn tâm toàn ý, chỉ có thể tự tin “chiến” khi người ta có sự hậu thuẫn xứng đáng. Chứ như bây giờ, mình đã không ít lần nghe: Mày chiến đi, đến khi mày bị bắt thì mình mày chịu, mơ mà có ai lo cho mày. Hoặc: Vợ con không lo, lo chuyện bao đồng, bị bắt đi rồi biết!

Rõ ràng, chúng ta là một cộng đồng, một băng chiến hữu rất vớ vẩn nếu chúng ta cứ bỏ mặc bạn bè mình như thế! Và cộng đồng đó, băng chiến hữu đó liệu có xứng đáng với những người phải “hy sinh” không? Chúng ta hay chửi cộng sản, nhất là chính những người từng theo cộng sản, hay nói hoài cái ý: những người nằm xuống đã nằm xuống một cách vô nghĩa cho bọn sâu bọ còn sống và đục khoét đất nước ngày nay. Liệu chúng ta có tốt hơn lũ sâu bọ đó không? Khi mà ngay cả lúc còn chưa thắng thế, chúng ta đã hèn hạ bỏ mặc chiến hữu như thế này? Vậy thì chúng ta lấy tư cách gì mà chửi?

Dĩ nhiên, trong lòng ai cũng có nỗi sợ hãi. Mình cũng vậy. Mình cũng rất sợ! Suốt từ đêm qua đến giờ, mình cứ nghĩ, nếu đặt hoàn cảnh mình là MN, suốt mấy tháng trời trong tù, ăn toàn cá nục kho và canh mồng tơi, không được mặc đồ lót, không được dùng BVS, chắc mình sẽ sup sụp mà chết. Có lẽ MN mạnh mẽ là vì cô ấy còn 2 đứa con. Không gì quan trọng hơn với một người mẹ là niềm tin phải sống để gặp lại con mình. Nằm trong cảm thức sợ hãi ấy, mình càng thấy thương MN. Dù con đường hay chí hướng hay quan điểm có khác nhau hay không, thì mình vẫn cảm thấy mỗi con người chúng ta đang nợ cô ấy. Nợ một nguồn cảm hứng mà cô ấy đã truyền trao. Sai hay đúng là chuyện của kẻ thắng thua, mình chỉ đặt câu chuyện đấu tranh của MN vào một bối cảnh là đất nước này cần được cởi mở hơn. Con người phải được tôn trọng. Ngôn luận phải được tự do. Chỉ cần như thế để thấy rằng chính quyền đã quá tàn bạo với chính người dân của mình. Sự tàn bạo đó dĩ nhiên sẽ làm tăng lên nỗi sợ hãi. Nhưng liệu, có chính quyền nào có thể trường tồn và phát triển lành mạnh chỉ bằng cách đẩy dân chúng vào sự sợ hãi?

Vì sợ hãi, chúng ta chắc chắn sẽ không thể làm gì mạnh mẽ hơn để đòi lại tự do cho MN. Và chắc chắn, có đòi cũng không được! Freedom is not free. Và ai sẽ tiếp tục trả giá để MN được tự do? Rất khó. Bởi giang hồ đâu có nhiều người như MN. Đếm được trên đầu ngón tay. Chính mình cũng không dám làm những gì mà MN đang làm.

Nhưng không ai có thể bỏ tù những người giúp đỡ bạn bè. Không ai có thể bỏ tù bạn vì bạn gửi cho con cái của bạn bè chút tiền còm. Đây là lần đầu tiên mình kêu gọi chia sẻ cho một người bất đồng chính kiến, vì MN là bạn mình. Đã là bạn, mình không thể bỏ mặc bạn bè như vậy được!

Mời xem Video: Quyền sử dụng súng ở Hoa Kỳ và những hệ lụy nào nếu như cái đó có ở Việt Nam?



Nếu chúng ta có thể chung tay giúp được cho 2 đứa nhỏ một cuộc sống đầy đủ dù không có mẹ bên cạnh, đó chính là những cái tát dành cho nhà cầm quyền. Nếu chúng ta có thể giúp 2 đứa nhỏ 10 năm sau gặp lại mẹ lúc chúng đã trưởng thành, có học thức, ngoan ngoãn, thì đó chính là món quà lớn nhất mà xã hội đền đáp cho MN vì những gì mà cô ấy đã cố gắng làm cho xã hội. Và các bạn, nhất là các bạn có cùng quan điểm với MN, là bạn bè hay followers của MN, nếu bạn từng kết bạn hay follow cô ấy không phải vì tò mò, không phải để “giựt le”, mà thực tâm coi cô ấy là bạn, thì các bạn phải chính là những người đầu tiên buộc phải chìa tay ra. Đúng không?

Mình tạm tính, nếu mỗi người chỉ đóng góp 200,000 thì với khoảng 20,000 friends & followers trên FB của MN, con số quyên góp sẽ là 4 tỉ. Quá đủ để nuôi nấng 2 đứa trẻ đến lớn nếu gia đình biết cách quản lý. Chỉ 200K thôi, những người từng là bạn bè của MN có làm được điều đó không?

Bà Nguyễn Thị Tuyết Lan và Luật sư
Nếu không làm được thì chúng ta xứng đáng sống trong một xã hội ấu trĩ, câm lặng này mãi mãi. Đừng trách ai! Và sau này, ra đường đừng vỗ ngực xưng “tao là phản động” và nói rằng “tao quen Mẹ Nấm”. Nhé!

Còn nếu muốn giúp, các bạn hãy chuyển 200K (hoặc nhiều hơn nếu bạn thích) vào tài khoản của mẹ ruột Mẹ Nấm:

Nguyễn Thị Tuyết Lan

STK: 0061000207794 – VCB chi nhánh Nha Trang.

Hoặc đến gặp cô Lan trực tiếp tại nhà, số 24 Đặng Tất, Tp. Nha Trang để trao trực tiếp.

Số cô Lan: 098.669.1463

Facebook: Tuyet Lan Nguyen

Để tránh mọi hiểu lầm không hay, các bạn vui lòng chỉ liên hệ với cô Lan & chuyển tiền vào STK của cô, đừng hỏi mình gì thêm về những việc liên quan đến tiền bạc.

Cảm ơn các bạn, và bây giờ, các bạn hãy thể hiện mình là người không bỏ bạn bè khi hoạn nạn đi!

* * *

P.S: Mình không giống Phan Anh là “đặt cọc” trước 500 triệu để ra oai. Chuyện đó là chuyện cá nhân của mỗi người. Nên đừng có đứa DLV vớ vẩn nào vào đây hỏi mình giúp bao nhiêu mà nói nhiều nhé! Mình chửi cho chết.

(FB. Han Phan)

          طريقة النشر التلقائي في جميع الجروبات الفيسبوك دفعة واحدة بدون برامج و بدون حظر | Facebook Exclusive   
اليوم سوف نتكلم عن شرح طريقة النشر في مجموعات الفيسبوك بدون اكواد او اي شيء اخر طبعا تقدر تنشر منتجاتك الالكترونية على مجموعات الفيسبوك التي تشترك فيها بسهولة وسرعة عالية وذلك من خلال تحديد المجموعات التي تريد ان تنشر بها واضافة الرابط الذي تود ان تقوم بنشره على المجموعات وايضاً من خلال اضافة رسالة مرفقة , يمكنك ايضاً ارسال الرابط الى اصدقاءك عبر كتابة اسماءهم ولن يقوم الفيسبوك بحظر حسابك فهذه الطريقة امنة 100% ، يمكنك نشر رابط موقعك الالكتروني او رابط مقالة او ايضاً رابط فيديو يوتيوب او اي شيء اخر ، الموقع يتيح لك الوصول الى عدد اكبر من الزوار بالاضافة الى تنوع مصادرهم وبلدانهم ، يوفر عليك الوقت والجهد من خلال امكانية نشر الروابط بسرعة وسهولة
حصري : النشر في جميع الجروبات دفعة واحدة بدون حظر 2017

تابعو الشرح على اليوتيوب :


الاضافة الخاصة بالنشر قم بنسخ المحتوي 



          Команды в сетевой игре для хостера и игроков   
Команды для хостера :

/admin xx админ - Устанавливает пароль для хх. Пароль снимается : /admin off. (отметьте соответствующую команду для игроков).
/wait n Устанавливает время ожидания между играми (autohost).
/password xx Устанавливает пароль для игры. Пароль запрашивает от игроков до начала игры. Пароль снимается : /password off
/spect [on/off] Off - игроки в игре не видят чата зрителей (ожидающих игроков). Хост-прежнему сможете просматривать его.
/script [file.txt] Передает или выполняет 10 чат-сообщений или команд из текстового файла. Файл должен быть расположен в "статической"-папку. Команды из файла "autohost.ini" осуществляется автоматически каждый раз, когда хост включается.
/lures [on/off] Шесть дополнительных приманок для каждого соревнования.
/hello Устанавливает текст приветствия..

Команды для администраторов (и хоста):

/mute N отключение игрока из общего чата. Только личные сообщения допускаются.
/unmute N Удаляет заглушение игрока.
/kick Удаление игрока из текущей (!!!) игры (локации).
/kick N удаление ("кик") игрока и запрет на подключение(связь) в течение 5 минут.
/kick N X удаление ("кик") игрока и запрет на подключение(связь) в течение X минут.
/unban Позволяет снова все IP, запрещенные командой бана.
/admins Показывает всех игроков с правами администратора.
/autoban [on/off] - Автоматически обнаруживает злостных "читеров" (см. выше п.п. 12,13) и бан на 24 часа.
/results x - показ результатов 10 лучших игроков ,каждые Х минут

Команды для игроков:

/admin включение, если игрок имеет права администратора
/admin xx получает права администратора с паролем хх.
/names Отображают имена (логины) игроков и соответствующие ИДЕНТИФИКАТОРЫ (используемый в частных сообщениях)
/N message Передает личное сообщение для игрока N
/t message - Посылает личное сообщение всем игрокам своей команды. Его видят только те кто состоит в той же команде (команда прописана в настройках)
/ver Отображает игровую версию главного компьютера
/help помощь - Показывает список доступных команд

          Файлы playlog.txt и records.dat, для чего они?   

Для чего нужны playlog.txt и records.dat


Файл - playlog.txt - записывает информацию в текстовом виде по всем сыгранным Вами онлайн турнирам и отображает подробную информацию о результатах всех участников, которые присутствовали в игре вмсете с Вами.

Файл - records.dat - в файл записываются все пойманные вами в игре рекордные экземпляры рыб. Данный файл можно посмотреть только в игре через меню Records, его можно вообще удалить, тогда в игровом меню Records станет пусто. Если же Ва решите принять участие в оффлайн турнире, то Вам требуется удалить данный файл.


          Pinball Arcade Season 1-7 Pro Packs Update v1.62.7-PLAZA   
Read changelog.txt for information on updated content! Genre: Free to Play, Simulation Developer: FarSight Studios Publisher: FarSight Studios Release Name: Pinball.Arcade.Season.1-7.Pro.Packs.Update.v1.62.7-PLAZA Size: 187 MB Links: STEAM | NFO | Torrent Search Download: UPLOADGiG – NiTROFLARE – RAPiDGATOR
          Two Worlds II Call of the Tenebrae Update v2.01-CODEX   
Read changelog.txt for information on updated content! Genre: Action, Adventure, Indie, RPG Developer: Reality Pump Studios Publisher: TopWare Interactive, ACE Release Name: Two.Worlds.II.Call.of.the.Tenebrae.Update.v2.01-CODEX Size: 215 MB Links: HOMEPAGE | NFO | Torrent Search Download: UPLOADGiG – NiTROFLARE – RAPiDGATOR
          Steel Division Normandy 44 Update Build 82772-CODEX   
Read changelog.txt for information on updated content! Genre: Action, Simulation, Strategy Developer: Eugen Systems Publisher: Paradox Interactive Release Name: Steel.Division.Normandy.44.Update.Build.82772-CODEX Size: 346MB Links: STEAM | NFO | Torrent Search Download: UPLOADGiG – NiTROFLARE – RAPiDGATOR
          theHunter Call of the Wild ATV Update v1.9.1-CODEX   
Read changelog.txt  for information on updated content! Genre: Adventure, Simulation, Sports Developer: Expansive Worlds Publisher: Avalanche Studios Release Name: theHunter.Call.of.the.Wild.ATV.Update.v1.9.1-CODEX Size: 64 MB Links: STEAM | NFO | Torrent Search Download: UPLOADGiG – NiTROFLARE – RAPiDGATOR
          Merge Delimited Files on a Common Key   

Originally posted on: http://geekswithblogs.net/archive/2011/10/18/merge-delimited-files-on-a-common-key.aspx

Many times I need to merge two separate datasets that have a common key column – for example:

dataset 1:

ID, Name, Weight, Height

dataset 2:

ID, Address1, Address2, Phone1, Phone2

I can’t just concat the data together, instead I need the merge to happen around the ID key, so that each ID only has a single row in the result.  So, of course I wrote a powershell script to do this for me.  Take a look at it below.  I called it “Merge-TsvFiles”, but it takes a delimiter as one of its paramters, so you could use this for CSV or whatever.

If you have any thoughts as to how this can be further improved code-wise or speed-wise, please comment!

function Merge-TsvFiles {
  param(
    [string] $file1 = $(throw "file1 required."),
    [string] $file2 = $(throw "file2 required."),
    [string] $delimiter = "`t",
    [string] $key = "ProfileID"
  )

  $data1 = import-csv -path $file1 -delimiter $delimiter
  $data2 = import-csv -path $file2 -delimiter $delimiter

  #write-host "$data1.Length total data rows, and $data2.Length total merge data rows."
  $i = 0

  #grab the new column names
  $newcols = $data2 | gm -MemberType NoteProperty

  Foreach ($datarow in $data1)
  {
    $i++
    $data2 | where-object {$_.$($key) -eq $data1.$($key)} | %{
      Foreach ($col in $newcols) {
        if ($col.Name -ne $key) {
          Add-Member -inputObject $datarow -name $col.Name -value $_.$($col.Name) -MemberType NoteProperty;
        }
      }
    }
  Write-Progress -activity "Merging data" -status "Merged $i of $($data1.Length) rows..." -percentComplete (($i / $data1.length) * 100) 
}

write-host "Writing output..."
$data1 | export-csv "output.txt" -delimiter "`t"
}

Technorati Tags: ,,,

          Porting a 15 year old .NET 1.1 Virtual CPU Tiny Operating System school project to .NET Core 2.0   

The 2002 TinyOS in C# is now on .NET Core in 2017 running on UbuntuI've had a number of great guests on the podcast lately. One topic that has come up a number of times is the "toy project." I've usually kept mine private - never putting them on GitHub - Somewhat concerned that people would judge me and my code. However, hypocrite that am (aren't we all?) I have advocated that others put their "Garage Sale Code" online. So here's some crappy code. ;)

The Preamble

While I've been working as an engineer for 25 years this year, I didn't graduate from school with a 4 year degree until 2003 - I just needed to get it done, for myself. I was poking around recently and found my project from OIT's CST352 "Operating Systems" class. One of the projects was to create a "Virtual CPU and OS." This is kind of a thought exercise. It's not really a parser/lexer - although there is both - and it's not a real OS. But it needs to be able to take in a made-up quasi-Assembly Language instruction set and execute them on a virtual CPU while managing virtual memory of arbitrary size. Again, a thought exercise made real to confirm that the student understands the responsibilities of a CPU.

Here's an example "application." Confused yet? Here's the original spec I was given in 2002 that includes the 36 instructions the "CPU" should understand. It has 10 general-purpose 32bit registers address as 1 through 10. Register 10 is the stack pointer. There are two bit flag registers - sign flag and zero flag.

Instructions are "opcode arg1 arg2" with constants prefixed with "$."

11 r8        ;Print r8
6 r1 $10 ;Move 10 into r1
6 r2 $6 ;Move 6 into r2
6 r3 $25 ;Move 25 into r3
23 r1 ;Acquire lock in r1 (currently 10)
11 r3 ;Print r3 (currently 25)
24 r1 ;Release r4 (currently 10)
25 r3 ;Sleep r3 (currently 25)
11 r3 ;Print r3 (currently 25)
27 ;Exit

I write my homework assignment in 2002 in the idiomatic C# of the time on .NET 1.1. That means no Generics<T> - I had to make my own strongly typed collections. That means C# has dozens of (if not a hundred) language and syntax improvements. I didn't use a Unit Testing Framework as TDD was just starting around 1999 during the XP (eXtreme Programming) days and NUnit was just getting start. It also uses "unsafe" to pin down memory in a few places. I'm sure there are WAY WAY WAY better and more sophisticated ways to do this today in idiomatic C# of 2017. Those are excuses, the real reasons are my own ignorance, ability, combined with some night-school laziness.

One of the more fun parts of this exercise was moving from physical memory (a byte array as I recall) to a full-on Memory Manager where each Process thought it could address a whole bunch of Virtual Memory while actual Physical Memory was arbitrarily sized. Then - as a joke - I would swap out memory pages as XML! ;) Yes, to be clear, it was a joke and I still love it.

You can run an "app" by passing in the total physical memory along with the text file containing the program, but you can also run an arbitrary number of programs by passing in an arbitrary number  of text files! The "TinyOS" will handle each process thinking it has its own memory and will time

If you are more of a visual learner, perhaps you'd prefer this 20-slide PowerPoint on this Tiny CPU that I presented in Malaysia later that year. You dig those early 2000-era slides? I KNOW YOU DO.

Tiny OS Memory SlidesTiny OS Memory SlidesTiny OS Memory Slides 

Updating a .NET 1.1 app to cross-platform .NET Core 2.0

Step 1 was to download the original code from my own blog. ;) This is also Reason #4134 why you should have a blog.

I decided to use Visual Studio 2017 to upgrade it, and even worse I decided to use .NET Core 2.0 which is currently in Preview. I wanted to use .NET Core 2.0 not just because it's cross-platform but also because it promises to have a pretty large API surface area and I want this to "just work." The part about getting my old application running on Linux is going to be awesome, though.

Visual Studio then pops a scary dialog about upgrading files. NOTE that another totally valid way to do this (that I will end up doing later in this blog post) is to just make a new project and move the source files into it. Natch.

image

Visual Studio says it's targeting .NET 2.0 Full Framework, but I ratchet it up to 4.6 to see what happens. It builds but with a bunch of errors about Obsolete methods, the most interesting one being this one:

Warning CS0618    
'ConfigurationSettings.AppSettings' is obsolete:
'This method is obsolete, it has been replaced by
System.Configuration!System.Configuration.ConfigurationManager.AppSettings'
C:\Users\scott\Downloads\TinyOSOLDOLD\OS Project\CPU.cs 72

That's telling me that my .NET 1/2 API will work but has been replaced in .NET 4.x, but I'm more interested in .NET Core 2.0. I could make my EXE a LIB and target .NET Standard 2.0 or I could make a .NET Core 2.0 app and perhaps get a few more APIs. I didn't do a formal analysis with the .NET Portability Analyzer but I will add that to the list of Things To Do. I may be able to make a library that works on an iPhone - a product that didn't exist when I started this assignment. That would be Just Cool(tm).

I decided to just make a new empty .NET Core 2.0 app and copy the source .cs files into it. A few interesting things.

  • My app also used "unsafe" code (it pins memory down and accesses it directly).
  • It has extensive inline documentation in comments that I used to use NDoc to make a CHM Help file. I'd like that doc to turn into HTML at some point.
  • It also has an appsettings.json file that needs to get copied to the output folder when it compiles.
  • While I could publish it to a self-contained .NET Core exe, for now I'm running it like this in my test batch files - example:
    • dotnet netcoreapp2.0/TinyOSCore.dll 512 scott13.txt

Here's the resulting csproj file.

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>

<PropertyGroup>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>

<ItemGroup>
<None Remove="appsettings.json" />
</ItemGroup>

<ItemGroup>
<Content Include="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration" Version="2.0.0-preview2-final" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.0-preview2-final" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="2.0.0-preview2-final" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.0.0-preview2-final" />
</ItemGroup>

</Project>

Other than the obsolete configuration warning and a few malformed XML comments, the app compiled and ran! You can actually "watch" the nightmare process here https://github.com/shanselman/TinyOS/commits/Core2Port in the form of GitHub commits. I also moved the docs from a 2002 Word Doc to Markdown so be sure to explore the fairly extensive spec https://github.com/shanselman/TinyOS.

The only significant change was loading the config. Configuration is even more different on .NET Core 2.0 than Full Framework. It's FAR more, ahem, configurable. I could have used "Options," I could have written my own config provider if it was important to keep the file format.

This little TinyOS has a bunch of config options that come in from a .exe.config file in XML like this (truncated):

<configuration>
<appSettings>
<!--
Must be a factor of 4
This is the total Physical Memory in bytes that the CPU can address.
This should not be confused with the amount of total or addressable memory
that is passed in on the command line.
-->
<add key="PhysicalMemory" value="128" />
<!--
Must be a factor of 4
This is the ammount of memory in bytes each process is allocated
Therefore, if this is 256 and you want to load 4 processes into the OS,
you'll need to pass a number > 1024 as the total ammount of addressable memory
on the command line.
-->
<add key="ProcessMemory" value="384" />
<add key="DumpPhysicalMemory" value="true" />
<add key="DumpInstruction" value="true" />
<add key="DumpRegisters" value="true" />
<add key="DumpProgram" value="true" />
<add key="DumpContextSwitch" value="true" />
<add key="PauseOnExit" value="false" />

I have a few choices. I could make a Configuration Provider and reach .NET Core to read this format (there's an XML adapter, in fact) or make the code porting easier by moving these "name/value" pairs to a JSON file like this:

{
"PhysicalMemory": "128",
"ProcessMemory": "384",
"DumpPhysicalMemory": "true",
"DumpInstruction": "true",
"DumpRegisters": "true",
"DumpProgram": "true",
"DumpContextSwitch": "true",
"PauseOnExit": "false",
"SharedMemoryRegionSize": "16",
"NumOfSharedMemoryRegions": "4",
"MemoryPageSize": "16",
"StackSize": "16",
"DataSize": "16"
}

This was just a few minutes of search and replace to change the XML to JSON. I could have also written a little app or shell script. By changing the config (rather than writing an adapter) I could then keep the code 99% the same.

My code was doing things like this (all over...there was no DI container yet):

bytesOfPhysicalMemory = uint.Parse(ConfigurationSettings.AppSettings["PhysicalMemory"]);

And I'd like to avoid major refactoring - yet. I added this bit of .NET Core configuration at the top of the EntryPoint and saved away an IConfigurationHost:

var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json");
Configuration = builder.Build();

I've got a Dictionary in the format of the IConfiguration host called "Configuration." So now I just do this in a dozen places and the app compiles again:

bytesOfPhysicalMemory = uint.Parse(Configuration["PhysicalMemory"]);

This brings up that feeling we all have when we look at old code - especially our own old code. I should have abstracted that away! Why didn't I use an interface? Why so many statics? What was I thinking?

We can beat ourselves up or we can feel good about ourselves and remember this. The app worked. It still works. There is value in it. I learned a lot. I'm a better programmer now. I don't know how far I'll take this old code but I had a lovely afternoon porting it to .NET Core 2.0 and I may refactor the heck out if it or I may not.

TinyOS on Ubuntu

For now I did update the smoke tests to run on both Windows and Linux and I'm happy with the experiment.

Related Links

Have YOU done a project like this, either in school or on your own?


Sponsor: Check out JetBrains Rider: a new cross-platform .NET IDE. Edit, refactor, test, build and debug ASP.NET, .NET Framework, .NET Core, or Unity applications. Learn more and get access to early builds!


© 2017 Scott Hanselman. All rights reserved.
     

          /readme.txt   
none
          /Juanita and Paquito/readme.txt   
none
          /binary/v0.9/README.txt   
none
          /3.4.05/readme.txt   
none
          /test_builds/XOS_cheeseburger_7.1.2_20170701-please-boot-changelog.txt   
none
          /Examples/13_General/750_RSA_Toolproof5_Cert.txt   
none
          Gone To Glory   
It's hard to imagine a more pivotal figure in the history of American music than Joe Bihari. His courageous road trips with Ike Turner in the deep South in the early fifties changed the World. He and his brothers were the first to cut B.B. King and Etta James and, from their base out in Los Angeles, they left their mark on the history of R&B and Rock & Roll for decades.


I Want You

This great B Side we have here (the flip of 1956 top 5 R&B hit, Stranded In The Jungle) demonstrates, I think, the quality of the music they produced. The Cadets (who the Biharis also cut as The Jacks), came up out of the same West Coast Doo-Wop scene as The Robins... the group Lieber & Stoller reinvented as The Coasters - as a matter of fact, the lead singer on here, Will 'Dub' Jones, would go on to join The Coasters himself and become one of the most recognizable voices in early Rock & Roll.

Despite repeated efforts to influence the Rock & Roll Hall of Fame to induct Joe Bihari while he was still alive, it didn't happen. Joe died on November 28th. The list of 'inductees' was released on December 17th... Joe wasn't on it.

Cleotha 'Cleedi' Staples who, as a founding member of The Staple Singers, lent her beautiful voice to the soundtrack of our lives for years, passed on February 28th. "We will keep on," her sister Mavis said, "and I will continue singing to keep our legacy alive."


It's Too Late

Here's Cleotha paired up with Eddie Floyd for an ambitious 1969 double Stax LP, Boy Meets Girl - released as part of Al Bell's quest to restructure the company. Cleedi's stunning vocals on here highlight what a great talent she was.
May God rest her Soul.

Shelbra Bennett, second from right in the photo above, was a founding member of The Soul Children. She would sing the lead on their biggest hit, I'll Be The Other Woman, which soared to #3 R&B in early 1974, and remains every bit as powerful today.


Love Makes It Right

Here's the follow-up single, with Shelbra once again handling the emotional lead vocals. Just great stuff, man. For whatever reason, this one struggled to make it into the top fifty, and she left the group 1n 1975. As Shelbra Deane, she would chart a couple of times in the late seventies, and make some disco singles for Henry Stone after that, but I think it's her towering work with The Soul Children that will live on forever. Shelbra left us on May 31st.

When I heard that Richie Havens died on April 22nd, I couldn't really take it in. I had seen him any number of times over the years (the last one being a mind-blowing performance at Jazz Fest in 2009), and I guess I kind of took him for granted... his music had lived inside of me for so long.


Follow

Mixed Bag is just such an important record. I cherished it and played it over and over in my high school days. In so many ways, it defined who I was, and who I would become. This utterly fantastic tune is ripped from my original mono copy of the LP, and I know every pop and crackle in the vinyl like an old friend... "Don't mind me 'cause I ain't nothing but a dream."

Please join this sentimental old fool in saying goodbye to these other greats who have passed on before us here in 2013:

BOBBY 'BLUE' BLAND
ROOSEVELT JAMISON
GEORGE JACKSON
'COWBOY' JACK CLEMENT
ROLAND JANES
EDDIE BOND
GEORGE JONES
PATTI PAGE
RAY PRICE
LOU REED
JEWEL AKENS
LARRY McKINLEY
GEORGE PERKINS
CECIL WOMACK
AMOS CRUME
MARVIN JUNIOR
LEROY 'SUGARFOOT' BONNER
BOBBY ROGERS
BOBBIE SMITH
RALPH CHILDS
CLARENCE BURKE, JR.
BOBBY MARTIN
MAXINE POWELL
DONALD BYRD
CEDAR WALTON
GEORGE DUKE
YUSEF LATEEF
CHICO HAMILTON
JJ CALE
BEN ATKINS
ARTIE 'BLUES BOY' WHITE
BOBBY PARKER
MAGIC SLIM
REX GARVIN
GLORIA LYNNE
MARY LOVE
MARGIE ALEXANDER
LIZ LANDS
DONNA HIGHTOWER
BERT REID
JULIUS GREEN
PEDRO LEWIS
PHIL RAMONE
LOU WILSON
DON BLACKMAN
RAY WHITLEY
DAMON HARRIS
RICHARD STREET
SAM PACE
WILLIE 'SLIM' AYERS
BEN TUCKER
VINCE MONTANA, JR.
KEITH 'SABU' CRIER
TYRONE BRUNSON
CLAUDE NOBS
AL JOHNSON
CODY BLACK
DEKE RICHARDS
GORDON STOKER
'READY TEDDY' McQUISTON
ROD HICKS
STEVE BLAILOCK


May they Rest in Peace.
          Lucas Nussbaum: Debian packages with /outdated/ packaging style   

(This is just a copy of this debian-devel@ email)

Following my blog post yesterday with graphs about Debian packaging evolution, I prepared lists of packages for each kind of outdatedness. Of course not all practices highlighted below are deprecated, and there are good reasons to continue to do some of them. But still, given that they all represent a clear minority of packages, I thought that it would be useful to list the related packages. (I honestly didn’t know if some of my packages would show up in the lists!)

The lists are available at https://people.debian.org/~lucas/qa-20151226/

I also pushed them to alioth, so you can either do:
ssh people.debian.org 'grep -A 10 YOURNAME ~lucas/public_html/qa-20151226/*ddlist'
or:
ssh alioth.debian.org 'grep -A 10 YOURNAME ~lucas/qa-20151226/*ddlist'

the meaning of the lists is:

  • qa-comaint_but_no_vcs.txt (275 packages): Based on the content of Maintainer/Uploaders, the package is co-maintained, but there are no Vcs-* fields.
  • qa-format_10.txt (3153 packages): The package is still using format 1.0.
  • qa-helper_classic_debhelper.txt (3647 packages): The package is still using “classic” debhelper (no dh, no CDBS).
  • qa-helper_not_debhelper.txt (144 packages): The package is not using debhelper (nor dh, nor CDBS).
  • qa-patch_dpatch.txt (170 packages): The package is using dpatch.
  • qa-patch_modified-files-outside-debian.txt (1156 packages): The package has modified files outside the debian/ directory (not tracked using patches).
  • qa-patch_more_than_one.txt (201 packages): The package uses more than one “patch system”. In most cases, it means that the package uses a patch system, but also has files modified directly outside of debian/.
  • qa-patch_other.txt (51 packages): The package has patches, but using an unidentified/unknown patch system.
  • qa-patch_quilt.txt (445 packages): The package uses quilt (with 1.0 format, not 3.0 format).
  • qa-patch_simple-patchsys.txt (129 packages): The package uses simple-patchsys.
  • qa-vcs_but_not_git_or_svn.txt (290 packages): The package is maintained using a VCS, which is not either Git or SVN.
  • qa-vcs_more_than_one_declared_vcs.txt (1 package): The package declares more than one VCS.

If you don’t understand why your package is listed, you can have a look at allpackages-20151226.yaml that provides more details. If you still don’t understand, just ask me.

Excluding duplicates, a total of 5469 packages are listed. The dd-list output for the merged list is also available (which isn’t very useful, except to know if you are listed).


          Lucas Nussbaum: on the Dark Ages of Free Software: a “Free Service Definition”?   

Stefano Zacchiroli opened DebConf’14 with an insightful talk titled Debian in the Dark Ages of Free Software (slides available, video available soon).

He makes the point (quoting slide 16) that the Free Software community is winning a war that is becoming increasingly pointless: yes, users have 100% Free Software thin client at their fingertips [or are really a few steps from there]. But all their relevant computations happen elsewhere, on remote systems they do not control, in the Cloud.

That give-up on control of computing is a huge and important problem, and probably the largest challenge for everybody caring about freedom, free speech, or privacy today. Stefano rightfully points out that we must do something about it. The big question is: how can we, as a community, address it?

Towards a Free Service Definition?

I believe that we all feel a bit lost with this issue because we are trying to attack it with our current tools & weapons. However, they are largely irrelevant here: the Free Software Definition is about software, and software is even to be understood strictly in it, as software programs. Applying it to services, or to computing in general, doesn’t lead anywhere. In order to increase the general awareness about this issue, we should define more precisely what levels of control can be provided, to understand what services are not providing to users, and to make an informed decision about waiving a particular level of control when choosing to use a particular service.

Benjamin Mako Hill pointed out yesterday during the post-talk chat that services are not black or white: there aren’t impure and pure services. Instead, there’s a graduation of possible levels of control for the computing we do. The Free Software Definition lists four freedoms — how many freedoms, or types of control, should there be in a Free Service Definition, or a Controlled-Computing Definition? Again, this is not only about software: the platform on which a particular piece of software is executed has a huge impact on the available level of control: running your own instance of WordPress, or using an instance on wordpress.com, provides very different control (even if as Asheesh Laroia pointed out yesterday, WordPress does a pretty good job at providing export and import features to limit data lock-in).

The creation of such a definition is an iterative process. I actually just realized today that (according to Wikipedia) the very first occurrence of an attempt at a Free Software Definition was published in 1986 (GNU’s bulletin Vol 1 No.1, page 8) — I thought it happened a couple of years earlier. Are there existing attempts at defining such freedoms or levels of controls, and at benchmarking such criteria against existing services? Such criteria would not only include control over software modifications and (re)distribution, but also likely include mentions of interoperability and open standards, both to enable the user to move to a compatible service, and to avoid forcing the user to use a particular implementation of a service. A better understanding of network effects is also needed: how much and what type of service lock-in is acceptable on social networks in exchange of functionality?

I think that we should inspire from what was achieved during the last 30 years on Free Software. The tools that were produced are probably irrelevant to address this issue, but there’s a lot to learn from the way they were designed. I really look forward to the day when we will have:

  • a Free Software Definition equivalent for services
  • Debian Free Software Guidelines-like tests/checklist to evaluate services
  • an equivalent of The Cathedral and the Bazaar, explaining how one can build successful business models on top of open services

Exciting times!


          Alban Créquy: Traffic control for multimedia devices   

Multimedia devices traditionally don't manage the network bandwidth required by applications. This causes a problem when users try to watch a streaming video or listen to a web radio seamlessly while other applications are downloading other content in the background. The background downloads can use too much bandwidth for the streaming video or web radio to keep up and users notice unnecessary interruptions in the playback.

I have been working on an approach to improve this using traffic control on Linux. This work was sponsored by Collabora.

What is traffic control


Traffic control is a technique to control network traffic in order to optimise or guarantee performance, low-latency, and/or bandwidth. This includes deciding which packets to accept at what rate in an input interface and determining which packets to transmit in what order at what rate on an output interface. 

On Linux, applications can send the traffic control configuration to the kernel using a Netlink socket with  the NETLINK_ROUTE protocol. By default, traffic control on Linux consists of a single queue which collects entering packets and dequeues them as quickly as the underlying device can accept them. The tc tool (from the iproute2 package) or the more recent "nl-*" tools (part of libnl) are different implementations but they can both be used to configure traffic control. Libnl has an incomplete support for traffic control but is in active development and progressing quickly.

Difficulty of shaping ingress traffic


Traffic control and shaping comes in two forms, the control of packets being received by the system (ingress) and the control of packets being sent out by the system (egress). Shaping outgoing traffic is reasonably straight-forward, as the system is in direct control of the traffic sent out through its interfaces. Shaping incoming traffic is however much harder as the decision on which packets to sent over the medium is controlled by the sending side and can't be directly controlled by the system itself.

However, for multimedia devices, control over incoming traffic is far more important then controlling outgoing traffic. Our use-case is ensuring glitch-free playback of a media stream (e.g. internet radio). In such a case, essentially, a minimal amount of incoming bandwidth needs to be reserved for the media stream.

For shaping (or rather influencing or policing) incoming traffic, the only practical approach is to put a fake bottleneck in place on the local system and rely on TCP congestion control to adjust its rate to match the intended rate as enforced by this bottleneck. With such a system it's possible to, for example, implement a policy where traffic that is not important for the current media stream (background traffic) can be limited, leaving the remaining available bandwidth for the more critical streams.

On Linux, ingress traffic control ("ingress qdisc" on the graph) happens before the Netfilter subsystem:
Netfilter-packet-flow
By Jengelh (Own work, Origin SVG PNG) [CC-BY-SA-3.0], via Wikimedia Commons



Difficulty of shaping on mobile networks


However, to complicate matters further, in mobile systems which are connected wirelessly to the internet and have a tendency to move around it's not possible to know the total amount of available bandwidth at any specific time as it's constantly changing. Which means, a simple strategy of capping background traffic at a static limit simply can't work.

The implemented solution


To cope with the dynamic nature, a traffic control daemon (tcmmd) has been implemented which can dynamically update the kernel configuration to match the current needs of the playback applications and adapt to the current network conditions. Furthermore to address the issues mentioned above, the implementation will use the following strategy:

  • Split the traffic streams into critical traffic and background traffic. Police the incoming traffic by limiting the bandwidth available to background traffic with the goal of leaving enough bandwidth available for critical streams.
  • Instead of having static configuration, let applications (e.g. a media player) indicate when the current traffic rate is too low for their purposes. This both means the daemon doesn't have to actively measure the traffic rate and allows it cope with streams that don't have a constant bitrate more naturally.
Communication between the traffic control daemon and the applications is done via D-Bus. The  D-Bus interface allow applications to register critical streams by passing the standard 5-tuple (source ip and port, destination ip and port and protocol) which uniquely identify a stream and indicate when a particular stream bandwidth is too low.

To allow the daemon to effectively control the incoming traffic, a so-called Intermediate Functional Block device (ifb0) is used to provide a virtual network device to provide an artificial bottleneck. This is done by transparently redirecting the incoming traffic from the physical network device through the virtual network device and shape the traffic as it leaves the virtual device again. The reason for the traffic redirection is to allow the usage of the kernels egress traffic control to effectively be used on incoming traffic. The results in the example setup shown below (with eth0 being a physical interface and ifb0 the accompanying virtual interface).




To demonstrate the functionality as described above, a simple demonstration media application using Gstreamer (tcdemo) has been written that communicates with the Traffic control daemon in the manner described.

Testing, the set-up


The traffic control feature in tcdemo can be enabled or disabled on the command line. This allowed me to compare the behaviour in both cases. 

On my left, I have a web server serving both the files for a video stream and the files for background downloads. On my right, I have a multimedia device rendering a video stream while downloading other files on the same web server.

Traffic control is only useful when the available bandwidth is limited. In order to have meaningful tests, I simulated a low bandwidth with the following commands on the web server:
tc qdisc add dev wlan0 root handle 1: cbq avpkt 1000 bandwidth 10Mbit
tc class add dev wlan0 parent 1: classid 1:1 cbq rate 3Mbit allot 1500 prio 3 bounded isolated
tc filter add dev wlan0 parent 1: protocol ip u32 match ip protocol 6 0xff match ip sport 80 0xffff flowid 1:1

Only the traffic from port 80/http was limited. It is important to note that the background traffic and the stream traffic were both going through the same bottleneck.

Tcdemo was playing a video file streamed over http while 8 wgets were downloading the same file continuously. The 9 connections were competing for the limited bandwidth. Without traffic control, tcdemo would not have got enough bandwidth.

The following graph shows what happened with traffic control. The video streaming is composed of several phases:
  1. tcdemo opened the HTTP connection and its GStreamer pipeline started downloading. At the same time, tcmmd was notified there was a new stream connection and it restricted any potential background traffic to a very low limit. As long as the initial GStreamer queue was buffering, the background traffic limit did not change.
  2. The GStreamer queue became full at t=4s and the video started to be played on the screen. The daemon increased the limit on the background traffic exponentially and the stream bandwidth got reduced as a consequence.
  3. Despite the stream bandwidth degrading slowly, GStreamer managed to keep its queue over 75% full until t=25s. When the queue is more than 75% full, Gstreamer does not report it because tcdemo chose that threshold with the low-percent property on GstQueue2 (the graph shows 100% in this case). 
  4. At t=30s, the GStreamer queue was less than 70% full and that threshold triggered tcmmd to restrict the background traffic to its minimum.
  5. The stream could use most of the bandwidth and the GStreamer queue became full quickly at t=31s. The background traffic could start its exponential growth again.
traffic control stats
Thanks to traffic control, the GStreamer queue never got empty in my test.

Get the sources


git clone git://git.collabora.co.uk/git/user/alban/tcmmd
git clone https://github.com/alban/tcmmd

FAQ


Q: Do I need any privileges to run this?
A: No privileges required for tcdemo, the GStreamer application. But tcmmd needs CAP_NET_ADMIN to change the TC rules.

Q: The 5-tuple contains the TCP source port. How does the application know that number?
A: The application can either call bind(2) before connect(2) to choose a TCP source port, or call getsockname(2) after connect(2) to retrieve the TCP source port assigned automatically by the kernel. The former allows to install the traffic control rules before the call to connect(2) triggers the emission and reception of the first packets on the network. The latter means the first few packets will be exchanged without being shaped by the traffic control. Tcdemo implements the latter to avoid more invasive changes in the souphttpsrc GStreamer element and libsoup. See bgo#721807.

Q: What happens if an application forgets to unregister a 5-tuple when the video stream finishes?
A: That would be bad manners from the application. The current traffic control settings would remain.  And if the application notifies tcmmd that its buffer was empty and forgets to notify any changes, the background traffic would be severely throttled. However, if the application just terminates or crashes, tcmmd would notice it immediately on D-Bus and the traffic control rules would be removed.

Q: Does tcmmd remove its traffic control rules when terminated?
A: It depends how it is terminated. Tcmmd removes its traffic control rules on SIGINT and SIGTERM. But the rules remain in other cases (SIGSEGV, SIGKILL, etc.). If it is a problem in case of crash, tcmmd initialisation properly removes previous rules, so you could start tcmmd and interrupt it with ctrl-c.

Q: Instead of using the 5-tuple, why not using setsockopt-SO_MARK?
A: First, SO_MARK requires CAP_NET_ADMIN which is not something that media player should have. It could be worked around by fd-passing the socket to a more privileged daemon to call setsockopt-SO_MARK but it's not elegant. More importantly, tcmmd's goal is not to shape the egress traffic but the ingress traffic. The shaping of incoming packets is performed very early in the Linux network stack: it happens before Netfilter, and before the packet is associated to a socket. So we can't check the SO_MARK of a socket to shape incoming packets.

Q: Instead of using the 5-tuple, why not using cgroups?
A: The granularity of cgroups are only per-process. So the traffic control would not be able to distinguish between different HTTP connections in a web browser used to render a video stream and used for background downloads. And for the same reason as setsockopt-SO_MARK, it would not work for shaping ingress traffic: we would not be able to link the packet to any process or cgroup.

Q: Instead of sending the 5-tuple to tcmmd, why not set the IP type-of-service (TOS) on outgoing packets with setsockopt-SO_PRIORITY to avoid changes in the application and have an iptables target to feed that information about connections back to the ingress traffic control?
A: It could be possible if the bandwidth was fixed, but on mobile networks, the application needs to be changed anyway to give feedback when the queue in the GStreamer pipeline get emptied.

Q: Why not play with the TCP windows instead shaping the ingress traffic?
A: As far as I know, Linux does not have the infrastructure for that. The TCP windows to manipulate would not be from the GStreamer application but from all other connections, so it can't be done from userspace.

Q: Does tcdemo require any new feature in GStreamer?
A: Yes, souphttpsrc needs this patch: bgo#721807

Q: Does tcmmd require any new feature in the Linux kernel?
A: No.

Q: Does tcmmd work on several network interfaces (e.g. eth0 + wlan0)?
A: No, at the moment tcmmd only support one interface and it has to be started after the interface is up. Patches welcome!

Q: Tcmmd uses both libnl and /sbin/tc via system() calls. Why?
A: My goal is to use libnl and avoid spawning processes to call /sbin/tc. I just didn't have time to finish this. It will involve checking that libnl has the right features. Some needed features such as u32 action support were implemented recently in the last version.

Q: How did you get the graphs?
A: I used tcmmd's --save-stats option and the script tests/plot-tcmmd-log.sh.

Q: Why is there so frequent Netlink communication between tcmmd and the kernel?
A: One part of this is to gather regular statistics in order to generate graphs if the option --save-stats was used. The other part is for implementing the exponential progression of the bandwidth allocated to the background traffic: at regular interval, tcmmd changes the rate assigned to a qdisc. It could be avoided by implementing a specialised qdisc in the kernel for our use case. It would require more thinking how to design the API for that new qdisc.

Q: Does it work with IPv6?
A: No. The architecture is not specific to IPv4 but it is just not implemented yet for IPv6. Tcmmd would need to generate new TC rules because the IP headers are different between IPv4 and IPv6.


Thanks Sjoerd for the architecture diagram and proof-reading.


          Ticket #28352 (QuerySet.values_list() docs documentation doesn't show correct return type) created   

The values() documentation (docs/ref/models/querysets.txt) correctly shows the return type of the object:

>>> Entry.objects.values()
<QuerySet [{'blog_id': 1, 'headline': 'First Entry', ...}, ...]>

whereas the values_list() erroneously shows the return type as a list:

>>> Entry.objects.values_list('id', 'headline')
[(1, 'First entry'), ...]

Simply wrapping <QuerySet> around the list shown might save others getting as confused as I did.


          #6412: Persistent Error and process crash   

I have a problem with ffmpeg for acquire the streaming the channel televisivo from mumudvb

1) VERSION FFMPEG

ffmpeg version 2.8.2 Copyright (c) 2000-2015 the FFmpeg developers

built with gcc 4.9.2 (Ubuntu 4.9.2-10ubuntu13) configuration: --prefix=/home/developer/Scrivania/sffmpeg-2.8.2/build --datadir=/home/developer/Scrivania/sffmpeg-2.8.2/build/etc --disable-shared --enable-static --enable-gpl --enable-version3 --enable-nonfree --enable-doc --enable-debug --enable-ffplay --enable-ffserver --enable-outdevs --enable-runtime-cpudetect --enable-memalign-hack --extra-cflags='-I/home/developer/Scrivania/sffmpeg-2.8.2/build/include --static' --extra-ldflags='-L/home/developer/Scrivania/sffmpeg-2.8.2/build/lib -static' --extra-libs='-lstdc++ -lexpat -ldl' --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfaac --enable-libfdk-aac --enable-libaacplus --enable-libmp3lame --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libx265 --enable-libxvid --enable-libvpx --enable-libopus --enable-librtmp --enable-libfreetype --enable-libass libavutil 54. 31.100 / 54. 31.100 libavcodec 56. 60.100 / 56. 60.100 libavformat 56. 40.101 / 56. 40.101 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 40.101 / 5. 40.101 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 2.101 / 1. 2.101 libpostproc 53. 3.100 / 53. 3.100

Hyper fast Audio and Video encoder usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

2) RUN FFMPEG COMMAND

ffmpeg -loglevel warning -f mpegts -fflags +genpts -avoid_negative_ts make_zero -i http://192.168.10.40:2314/bysid/711 -multiple_requests 1 -b:v 100k -s 160x120 -vcodec libx264 -preset ultrafast -trellis 2 -crf 21 -threads 2 -qmin 10 -qmax 42 -maxrate 128k -acodec libmp3lame -r 15 -ab 128k -ac 1 -ar 44100 -f segment -flags +global_header -segment_format mpegts -segment_time 180 -segment_atclocktime 1 -reset_timestamps 1 -strftime 1 -map 0:v -map 0:1 -y /home/15-%Y-%m-%d-%H-%M-00.mp4 2>> /home/15_711_LA7.txt < /dev/null &

3) FFMPEG SOME LOG ERROR

[mpegts @ 0x37dcc00] PES packet size mismatch [mp2 @ 0x381b8a0] Header missing Error while decoding stream #0:1: Invalid data found when processing input Past duration 0.612663 too large [mpegts @ 0x37dcc00] PES packet size mismatch [mp2 @ 0x381b8a0] Header missing Error while decoding stream #0:1: Invalid data found when processing input [mpeg2video @ 0x3a214a0] invalid cbp 0 at 0 32 [mpeg2video @ 0x3a214a0] 00 motion_type at 3 28 [mpeg2video @ 0x3a214a0] 00 motion_type at 3 33 [mpeg2video @ 0x3a214a0] 00 motion_type at 3 29 [mpeg2video @ 0x3a214a0] 00 motion_type at 2 34 [mpeg2video @ 0x3a214a0] 00 motion_type at 6 30 [mpeg2video @ 0x3a214a0] 00 motion_type at 6 35 [mpeg2video @ 0x3a214a0] 00 motion_type at 14 32 [mpeg2video @ 0x3a214a0] 00 motion_type at 20 24 [mpeg2video @ 0x3a214a0] ac-tex damaged at 19 27 [mpeg2video @ 0x3a214a0] 00 motion_type at 2 21 [mpeg2video @ 0x3a214a0] 00 motion_type at 2 23 [mpeg2video @ 0x3a214a0] slice mismatch [mpeg2video @ 0x3a214a0] 00 motion_type at 4 25 [mpeg2video @ 0x3a214a0] 00 motion_type at 36 26 [mpeg2video @ 0x3a214a0] 00 motion_type at 3 27 [mpeg2video @ 0x3a214a0] Warning MVs not available Past duration 0.812660 too large [mpegts @ 0x37dcc00] PES packet size mismatch [mpeg2video @ 0x3a214a0] 00 motion_type at 5 33 [mpeg2video @ 0x3a214a0] 00 motion_type at 6 28 [mpeg2video @ 0x3a214a0] ac-tex damaged at 1 29 [mpeg2video @ 0x3a214a0] Warning MVs not available [mpeg2video @ 0x3a214a0] 00 motion_type at 0 28 [mpeg2video @ 0x3a214a0] 00 motion_type at 0 29 [mpeg2video @ 0x3a214a0] 00 motion_type at 0 20 [mpeg2video @ 0x3a214a0] invalid cbp 0 at 1 32 [mpeg2video @ 0x3a214a0] 00 motion_type at 0 19 [mpeg2video @ 0x3a214a0] 00 motion_type at 0 22 [mpeg2video @ 0x3a214a0] 00 motion_type at 0 23 [mpeg2video @ 0x3a214a0] 00 motion_type at 10 2 [mpeg2video @ 0x3a214a0] mb incr damaged [mpeg2video @ 0x3a214a0] 00 motion_type at 1 33 [mpeg2video @ 0x3a214a0] 00 motion_type at 5 34 [mpeg2video @ 0x3a214a0] 00 motion_type at 0 21 [mpeg2video @ 0x3a214a0] 00 motion_type at 0 24 [mpeg2video @ 0x3a214a0] 00 motion_type at 0 25 [mpeg2video @ 0x3a214a0] 00 motion_type at 0 26 [mpeg2video @ 0x3a214a0] 00 motion_type at 0 27 [mpeg2video @ 0x3a214a0] 00 motion_type at 15 35 [mpeg2video @ 0x3a214a0] 00 motion_type at 2 30 [mpeg2video @ 0x3a214a0] 00 motion_type at 2 31 [mpeg2video @ 0x3a214a0] Warning MVs not available Past duration 0.812660 too large [mp2 @ 0x381b8a0] Header missing Error while decoding stream #0:1: Invalid data found when processing input [mpeg2video @ 0x3a214a0] 00 motion_type at 43 32 [mpeg2video @ 0x3a214a0] ac-tex damaged at 0 33 [mpeg2video @ 0x3a214a0] ac-tex damaged at 0 34 [mpeg2video @ 0x3a214a0] 00 motion_type at 22 26 [mpeg2video @ 0x3a214a0] ac-tex damaged at 2 27 [mpeg2video @ 0x3a214a0] Warning MVs not available [mpeg2video @ 0x3a214a0] 00 motion_type at 16 11 [mpeg2video @ 0x3a214a0] Warning MVs not available [mpeg2video @ 0x3a214a0] slice below image (126 >= 36) Error while decoding stream #0:0: Invalid data found when processing input [mpegts @ 0x37dcc00] PES packet size mismatch [mp2 @ 0x381b8a0] Header missing Error while decoding stream #0:1: Invalid data found when processing input Past duration 0.612663 too large [mpeg2video @ 0x3a214a0] invalid mb type in P Frame at 4 32 [mpeg2video @ 0x3a214a0] invalid cbp 0 at 0 33 [mpeg2video @ 0x3a214a0] 00 motion_type at 1 34 [mpeg2video @ 0x3a214a0] 00 motion_type at 4 35 [mpeg2video @ 0x3a214a0] ac-tex damaged at 27 30 [mpeg2video @ 0x3a214a0] 00 motion_type at 3 27 [mpeg2video @ 0x3a214a0] ac-tex damaged at 4 27 [mpeg2video @ 0x3a214a0] 00 motion_type at 1 28 [mpeg2video @ 0x3a214a0] 00 motion_type at 36 29 [mpeg2video @ 0x3a214a0] 00 motion_type at 23 30 [mpeg2video @ 0x3a214a0] mb incr damaged [mpeg2video @ 0x3a214a0] ac-tex damaged at 44 24 [mpeg2video @ 0x3a214a0] 00 motion_type at 16 26 [mpeg2video @ 0x3a214a0] 00 motion_type at 36 21 [mpeg2video @ 0x3a214a0] 00 motion_type at 13 23 [mpeg2video @ 0x3a214a0] Warning MVs not available [mpeg2video @ 0x3a214a0] ac-tex damaged at 24 5 [mpeg2video @ 0x3a214a0] 00 motion_type at 10 6 [mpeg2video @ 0x3a214a0] Warning MVs not available [mpegts @ 0x37dcc00] PES packet size mismatch [mp2 @ 0x381b8a0] Header missing Error while decoding stream #0:1: Invalid data found when processing input Past duration 0.812660 too large [mpeg2video @ 0x3a214a0] ac-tex damaged at 6 26 [mpeg2video @ 0x3a214a0] Warning MVs not available [mpeg2video @ 0x3a214a0] 00 motion_type at 43 24 [mpeg2video @ 0x3a214a0] Warning MVs not available [mpeg2video @ 0x3a214a0] invalid cbp 0 at 6 7 [mpeg2video @ 0x3a214a0] Warning MVs not available [mpeg2video @ 0x3a214a0] ac-tex damaged at 19 32 [mpeg2video @ 0x3a214a0] 00 motion_type at 2 34 [mpeg2video @ 0x3a214a0] 00 motion_type at 6 24 [mpeg2video @ 0x3a214a0] mb incr damaged [mpeg2video @ 0x3a214a0] Warning MVs not available [mpegts @ 0x37dcc00] PES packet size mismatch [mpegts @ 0x37dcc00] Invalid timestamps stream=0, pts=962510701, dts=8772293949, size=19828 [mpeg2video @ 0x3a214a0] ignoring extra picture following a frame-picture [mpeg2video @ 0x3a214a0] first mb_incr damaged [mpeg2video @ 0x3a214a0] 00 motion_type at 1 1 [mpeg2video @ 0x3a214a0] 00 motion_type at 0 2 [mpeg2video @ 0x3a214a0] ac-tex damaged at 0 3 [mpeg2video @ 0x3a214a0] Warning MVs not available [mpegts @ 0x37dcc00] PES packet size mismatch

Last message repeated 99 times

[mpegts @ 0x37dcc00] DTS 8792885949 < 9367501997 out of order [mpegts @ 0x37dcc00] PES packet size mismatch

Last message repeated 31 times

[mpegts @ 0x37dcc00] DTS 8797314205 < 8799211149 out of order [mpegts @ 0x37dcc00] PES packet size mismatch

Last message repeated 69 times

[mpegts @ 0x37dcc00] DTS 8816253549 < 8816264349 out of order [mpegts @ 0x37dcc00] PES packet size mismatch

---

HELP ME!


          #6434: Segfault when using concat input (ffconcat) having multiple streams, created with dvd2concat   

Hello,

I want to convert a video dvd with ffmpeg by using dvd2concat tool to generate the input. I first created a iso image of that dvd (with dvdbackup). It has to be noted that dvdbackup found read errors on the dvd and had to fix them by filling the blocks. But I'm not sure there are errors in the segment I provide

In order not to upload the full iso I narrowed the issue down and created a smaller subset of the input ffconcat and vob.

With the original ffconcat file having 18 streams this command segfaults:

/mnt/packages/downloads/ffmpeg-git-20170601-64bit-static/ffmpeg -report -v 9 -loglevel 99 -analyzeduration 460000k -probesize 300000k -safe 0 -protocol_whitelist subfile,file,concat -f concat -i dvd2concat-18streams.txt -c:v copy -c:a copy -c:s copy -map 0 -ignore_unknown -f vob dvd2concat-18streams.out.vob

I found the issue seems to come from some of the input streams. So I removed some of them and it works. But I couldn't find any pattern. Here is the new command (same as above but with different input files)

/mnt/packages/downloads/ffmpeg-git-20170601-64bit-static/ffmpeg -report -v 9 -loglevel 99 -analyzeduration 460000k -probesize 300000k -safe 0 -protocol_whitelist subfile,file,concat -f concat -i dvd2concat-14streams.txt -c:v copy -c:a copy -c:s copy -map 0 -ignore_unknown -f vob dvd2concat-14streams.out.vob


          #2319: Using concat demuxer with truncated mp4 (mpeg2video,pcm_s16be) leads to infinite loop   

Summary of the bug: If the concat demuxer is used in conjunction with a mp4 file containing mpeg2 and pcm, ffmpeg gets stuck after the first video is decoded and never terminates. The problem only occurs, if the mp4 file is truncated and mylist.txt contains more than one entry. (Here one video file is used twice to demonstrate the problem.)

How to reproduce:

ffmpeg -f concat -i mylist.txt out.mp4

Content of mylist.txt

file camera-raw.mp4
file camera-raw.mp4

Video data: camera-raw.mp4

ffmpeg output

ffmpeg version 1.1.3 Copyright (c) 2000-2013 the FFmpeg developers
  built on Mar  2 2013 14:00:59 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
  configuration: --prefix=/home/ls/ffmpeg --enable-shared --disable-static --enable-gpl --enable-nonfree --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-sram --cpu=core2 --enable-hwaccel=h264_vaapi --enable-hwaccel=mpeg2_vaapi --enable-hwaccel=mpeg4_vaapi --enable-libfaac --disable-ffserver --enable-libfreetype --enable-x11grab --enable-avresample --enable-libass --enable-libvpx --enable-libvorbis
  libavutil      52. 13.100 / 52. 13.100
  libavcodec     54. 86.100 / 54. 86.100
  libavformat    54. 59.106 / 54. 59.106
  libavdevice    54.  3.102 / 54.  3.102
  libavfilter     3. 32.100 /  3. 32.100
  libswscale      2.  1.103 /  2.  1.103
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
[concat @ 0x1cc0780] Estimating duration from bitrate, this may be inaccurate
Guessed Channel Layout for  Input Stream #0.1 : stereo
Input #0, concat, from 'mylist.txt':
  Duration: N/A, start: 0.000000, bitrate: 36537 kb/s
    Stream #0:0: Video: mpeg2video (Main) (mp4v / 0x7634706D), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 35001 kb/s, 25 fps, 25 tbr, 25k tbn, 50 tbc
    Stream #0:1: Audio: pcm_s16be (twos / 0x736F7774), 48000 Hz, stereo, s16, 1536 kb/s
File 'out.mp4' already exists. Overwrite ? [y/N] using SAR=1/1
[libx264 @ 0x1ccb400] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2
[libx264 @ 0x1ccb400] profile High, level 4.0
[libx264 @ 0x1ccb400] 264 - core 129 r0+2 e403db4 - H.264/MPEG-4 AVC codec - Copyleft 2003-2013 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'out.mp4':
  Metadata:
    encoder         : Lavf54.59.106
    Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 12800 tbn, 25 tbc
    Stream #0:1: Audio: aac ([64][0][0][0] / 0x0040), 48000 Hz, stereo, s16, 128 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (mpeg2video -> libx264)
  Stream #0:1 -> #0:1 (pcm_s16be -> libfaac)
Press [q] to stop, [?] for help
[mpeg2video @ 0x1cfade0] warning: first frame is no keyframe
frame=   33 fps=0.0 q=0.0 size=       0kB time=00:00:01.34 bitrate=   0.3kbits/s
frame=   47 fps= 36 q=0.0 size=       0kB time=00:00:01.83 bitrate=   0.2kbits/s
frame=   54 fps= 27 q=28.0 size=     123kB time=00:00:02.30 bitrate= 435.9kbits/s
frame=   59 fps= 23 q=28.0 size=     213kB time=00:00:02.30 bitrate= 757.0kbits/s
frame=   65 fps= 21 q=28.0 size=     311kB time=00:00:02.79 bitrate= 912.1kbits/s
frame=   70 fps= 19 q=28.0 size=     383kB time=00:00:02.79 bitrate=1123.5kbits/s
frame=   76 fps= 18 q=28.0 size=     469kB time=00:00:03.26 bitrate=1176.8kbits/s
frame=   82 fps= 17 q=28.0 size=     545kB time=00:00:03.26 bitrate=1367.8kbits/s
frame=   88 fps= 16 q=28.0 size=     620kB time=00:00:03.75 bitrate=1353.8kbits/s
frame=   93 fps= 16 q=28.0 size=     694kB time=00:00:03.75 bitrate=1513.3kbits/s
frame=   98 fps= 15 q=28.0 size=     754kB time=00:00:04.22 bitrate=1462.6kbits/s
frame=  103 fps= 15 q=28.0 size=     819kB time=00:00:04.22 bitrate=1589.0kbits/s
frame=  110 fps= 15 q=28.0 size=     898kB time=00:00:04.71 bitrate=1559.5kbits/s
frame=  116 fps= 14 q=28.0 size=     980kB time=00:00:04.71 bitrate=1702.0kbits/s
frame=  121 fps= 14 q=28.0 size=    1034kB time=00:00:05.18 bitrate=1634.6kbits/s
frame=  128 fps= 14 q=28.0 size=    1113kB time=00:00:05.18 bitrate=1759.3kbits/s
frame=  134 fps= 14 q=28.0 size=    1186kB time=00:00:05.67 bitrate=1712.0kbits/s
frame=  139 fps= 14 q=28.0 size=    1293kB time=00:00:05.67 bitrate=1866.7kbits/s
frame=  143 fps= 13 q=28.0 size=    1372kB time=00:00:05.69 bitrate=1973.0kbits/s
frame=  148 fps= 13 q=28.0 size=    1486kB time=00:00:06.14 bitrate=1981.2kbits/s
frame=  155 fps= 13 q=28.0 size=    1628kB time=00:00:06.14 bitrate=2171.0kbits/s
frame=  159 fps= 13 q=28.0 size=    1724kB time=00:00:06.63 bitrate=2128.3kbits/s
frame=  165 fps= 12 q=28.0 size=    1866kB time=00:00:06.63 bitrate=2303.8kbits/s
frame=  170 fps= 12 q=28.0 size=    1972kB time=00:00:07.10 bitrate=2273.7kbits/s
frame=  175 fps= 12 q=28.0 size=    2075kB time=00:00:07.10 bitrate=2393.1kbits/s
frame=  181 fps= 12 q=28.0 size=    2253kB time=00:00:07.59 bitrate=2430.7kbits/s
frame=  186 fps= 12 q=28.0 size=    2371kB time=00:00:07.59 bitrate=2557.9kbits/s
frame=  191 fps= 12 q=28.0 size=    2478kB time=00:00:07.61 bitrate=2665.4kbits/s
frame=  196 fps= 12 q=28.0 size=    2600kB time=00:00:08.06 bitrate=2641.2kbits/s
frame=  201 fps= 12 q=28.0 size=    2714kB time=00:00:08.06 bitrate=2757.1kbits/s
frame=  206 fps= 11 q=28.0 size=    2810kB time=00:00:08.55 bitrate=2691.3kbits/s
frame=  210 fps= 11 q=28.0 size=    2911kB time=00:00:08.55 bitrate=2787.2kbits/s
frame=  217 fps= 11 q=28.0 size=    3052kB time=00:00:09.02 bitrate=2770.6kbits/s
frame=  221 fps= 11 q=28.0 size=    3127kB time=00:00:09.02 bitrate=2838.5kbits/s
frame=  227 fps= 11 q=28.0 size=    3230kB time=00:00:09.04 bitrate=2925.4kbits/s
frame=  233 fps= 11 q=28.0 size=    3351kB time=00:00:09.51 bitrate=2885.3kbits/s
frame=  238 fps= 11 q=28.0 size=    3448kB time=00:00:09.51 bitrate=2968.8kbits/s
frame=  244 fps= 11 q=28.0 size=    3574kB time=00:00:09.98 bitrate=2932.4kbits/s
frame=  250 fps= 11 q=28.0 size=    3704kB time=00:00:09.98 bitrate=3039.5kbits/s
frame=  255 fps= 11 q=28.0 size=    3824kB time=00:00:10.47 bitrate=2991.0kbits/s
frame=  260 fps= 11 q=28.0 size=    3929kB time=00:00:10.47 bitrate=3072.9kbits/s
frame=  266 fps= 11 q=28.0 size=    4036kB time=00:00:10.94 bitrate=3020.9kbits/s
frame=  272 fps= 11 q=28.0 size=    4162kB time=00:00:10.94 bitrate=3115.3kbits/s
frame=  277 fps= 11 q=28.0 size=    4261kB time=00:00:11.43 bitrate=3052.4kbits/s
frame=  282 fps= 11 q=28.0 size=    4350kB time=00:00:11.43 bitrate=3116.5kbits/s
frame=  287 fps= 11 q=28.0 size=    4462kB time=00:00:11.45 bitrate=3190.9kbits/s
frame=  294 fps= 11 q=28.0 size=    4580kB time=00:00:11.90 bitrate=3152.1kbits/s
frame=  299 fps= 11 q=28.0 size=    4677kB time=00:00:11.92 bitrate=3212.6kbits/s
frame=  305 fps= 11 q=28.0 size=    4789kB time=00:00:12.39 bitrate=3165.5kbits/s
frame=  310 fps= 11 q=28.0 size=    4876kB time=00:00:12.39 bitrate=3222.7kbits/s
frame=  316 fps= 11 q=28.0 size=    4994kB time=00:00:12.86 bitrate=3180.3kbits/s
frame=  321 fps= 11 q=28.0 size=    5076kB time=00:00:12.86 bitrate=3232.5kbits/s
frame=  325 fps= 11 q=28.0 size=    5157kB time=00:00:13.35 bitrate=3163.2kbits/s
frame=  331 fps= 11 q=28.0 size=    5280kB time=00:00:13.35 bitrate=3238.7kbits/s
frame=  337 fps= 11 q=28.0 size=    5391kB time=00:00:13.82 bitrate=3194.5kbits/s
frame=  342 fps= 11 q=28.0 size=    5475kB time=00:00:13.82 bitrate=3244.4kbits/s
frame=  347 fps= 11 q=28.0 size=    5589kB time=00:00:13.84 bitrate=3306.8kbits/s
frame=  354 fps= 11 q=28.0 size=    5716kB time=00:00:14.31 bitrate=3271.2kbits/s
frame=  358 fps= 11 q=28.0 size=    5801kB time=00:00:14.31 bitrate=3319.7kbits/s
frame=  364 fps= 11 q=28.0 size=    5878kB time=00:00:14.78 bitrate=3257.2kbits/s
frame=  368 fps= 11 q=28.0 size=    5965kB time=00:00:14.78 bitrate=3305.1kbits/s
frame=  374 fps= 11 q=28.0 size=    6040kB time=00:00:15.27 bitrate=3239.5kbits/s
frame=  379 fps= 11 q=28.0 size=    6163kB time=00:00:15.27 bitrate=3305.5kbits/s
frame=  383 fps= 10 q=28.0 size=    6231kB time=00:00:15.29 bitrate=3337.0kbits/s
frame=  391 fps= 11 q=28.0 size=    6354kB time=00:00:15.74 bitrate=3306.4kbits/s
frame=  395 fps= 10 q=28.0 size=    6430kB time=00:00:15.89 bitrate=3314.1kbits/s
frame=  402 fps= 11 q=28.0 size=    6570kB time=00:00:16.23 bitrate=3315.3kbits/s
frame=  407 fps= 10 q=28.0 size=    6687kB time=00:00:16.23 bitrate=3374.0kbits/s
frame=  414 fps= 10 q=28.0 size=    6809kB time=00:00:16.70 bitrate=3339.2kbits/s
frame=  419 fps= 10 q=28.0 size=    6901kB time=00:00:16.72 bitrate=3379.9kbits/s
frame=  427 fps= 11 q=28.0 size=    7127kB time=00:00:17.19 bitrate=3395.4kbits/s
frame=  433 fps= 11 q=28.0 size=    7229kB time=00:00:17.66 bitrate=3352.5kbits/s
frame=  438 fps= 10 q=28.0 size=    7352kB time=00:00:17.66 bitrate=3409.6kbits/s
frame=  443 fps= 10 q=28.0 size=    7430kB time=00:00:17.66 bitrate=3445.7kbits/s
frame=  448 fps= 10 q=28.0 size=    7548kB time=00:00:18.15 bitrate=3406.0kbits/s
frame=  455 fps= 10 q=28.0 size=    7703kB time=00:00:18.15 bitrate=3475.8kbits/s
frame=  460 fps= 10 q=28.0 size=    7810kB time=00:00:18.62 bitrate=3435.5kbits/s
frame=  466 fps= 10 q=28.0 size=    7942kB time=00:00:18.62 bitrate=3493.4kbits/s
frame=  470 fps= 10 q=28.0 size=    8014kB time=00:00:19.11 bitrate=3434.5kbits/s
frame=  475 fps= 10 q=28.0 size=    8115kB time=00:00:19.11 bitrate=3477.9kbits/s
frame=  481 fps= 10 q=28.0 size=    8217kB time=00:00:19.58 bitrate=3437.4kbits/s
frame=  487 fps= 10 q=28.0 size=    8334kB time=00:00:19.58 bitrate=3485.9kbits/s
frame=  493 fps= 10 q=28.0 size=    8443kB time=00:00:20.07 bitrate=3445.4kbits/s
frame=  498 fps= 10 q=28.0 size=    8524kB time=00:00:20.07 bitrate=3478.4kbits/s
frame=  503 fps= 10 q=28.0 size=    8595kB time=00:00:20.41 bitrate=3448.9kbits/s
frame=  509 fps= 10 q=28.0 size=    8684kB time=00:00:20.54 bitrate=3462.8kbits/s
frame=  515 fps= 10 q=28.0 size=    8758kB time=00:00:20.75 bitrate=3456.2kbits/s
frame=  523 fps= 10 q=28.0 size=    8844kB time=00:00:21.03 bitrate=3444.5kbits/s
frame=  530 fps= 10 q=28.0 size=    8914kB time=00:00:21.50 bitrate=3395.8kbits/s
frame=  536 fps= 10 q=28.0 size=    8977kB time=00:00:21.50 bitrate=3419.9kbits/s
frame=  544 fps= 10 q=28.0 size=    9054kB time=00:00:21.99 bitrate=3372.2kbits/s
frame=  550 fps= 10 q=28.0 size=    9117kB time=00:00:21.99 bitrate=3395.7kbits/s
frame=  557 fps= 11 q=28.0 size=    9201kB time=00:00:22.46 bitrate=3355.2kbits/s
frame=  563 fps= 11 q=28.0 size=    9262kB time=00:00:22.48 bitrate=3374.3kbits/s
frame=  569 fps= 11 q=28.0 size=    9330kB time=00:00:22.95 bitrate=3329.8kbits/s
Truncating packet of size 124464 to 34592
[mpeg2video @ 0x1cfade0] ac-tex damaged at 63 16
[mpeg2video @ 0x1cfade0] Warning MVs not available
[mpeg2video @ 0x1cfade0] concealing 6240 DC, 6240 AC, 6240 MV errors in B frame

          #4198: Concatenate mov files   

Summary of the bug: I have a pipeline who records n video segments . (mov files) .

n = [0 .. 100];

and at this time i'm using ffmpeg for upload live stream to server. without any codec changes.

Some time one of segments, have swapped streams and ffmpeg stuck at this segment .

the command for ffmpeg

How to reproduce:

% ffmpeg -re -loglevel debug -report -f concat -i /Users/pc/movies/mylist.txt -c copy -f flv test_bug_concat.flv
ffmpeg version 2.4.2
built on Oct 24 2014 15:02:40 with Apple LLVM version 6.0 (clang-600.0.54) (based on LLVM 3.5svn)
file mylist.txt contains
file '/Users/pc/movies/0.mov'
duration 00:01:00
...
file '/Users/pc/movies/n.mov'
duration 00:01:00

Patches should be submitted to the ffmpeg-devel mailing list and not this bug tracker.


          #4285: The "frame type" and the "q" are not being set in the -vstats_file when doing x265 encoding.   

Hi!

Summary of the bug: When doing x265 encoding, the stats file (-vstats_file; see: stats.txt) doesn't contain information about frame types and "q"-s. Instead of values, there are question marks for frame types, and zeroes for "q"-s. For example: frame= 181 q= 0.0 f_size= 1627 s_size= 68kB time= 7.458 br= 312.4kbits/s avg_br= 74.9kbits/s type= ?

Also, "q"-s are not set in the output as well (see: output.log and report.log).

How to reproduce:

ffmpeg.exe -r 24 -i "1080-png\sintel_trailer_2k_%04d.png" -c:v libx265 -x265-params "level=3.0:crf=28:keyint=48:min-keyint=48:scenecut=0" -r 24 -pix_fmt yuv420p -filter:v "scale='trunc(oh*a/2)*2:360'" -vstats_file "stats.txt" "360p-hevc.mp4"

          #4350: Concatenating split files of a Ikegami GFPack camera   

I have 4 files of a Ikegami GFPack camera and want to concatenate them to one single file. Problem is, as soon as FFmpeg reaches the second file it segfaults. Files can be found here: https://cloud.obstkiste.org/index.php/s/I2OUb2s4n22cvT7

I also tried to encode the single files first and transcode them afterwards, but FFmpeg refuses to transcode every file except for the first one.

thanks, steved

How to reproduce:

$ cat list.txt
file '0001V001.MXF'
file '0001V002.MXF'
file '0001V003.MXF'
file '0001V004.MXF'
$ ffmpeg -f concat -i list.txt -c copy output.mxf
ffmpeg version N-70414-gec5a4af Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.7 (Debian 4.7.2-5)
  configuration: --prefix=/usr/local --enable-gpl --enable-nonfree --enable-version3 --enable-libfdk-aac --enable-libx264 --enable-libfreetype
  libavutil      54. 19.100 / 54. 19.100
  libavcodec     56. 26.100 / 56. 26.100
  libavformat    56. 24.101 / 56. 24.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 11.102 /  5. 11.102
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, concat, from 'list.txt':
  Duration: N/A, bitrate: 50000 kb/s
    Stream #0:0: Video: mpeg2video (4:2:2), yuv422p(tv, bt470bg), 1920x1080 [SAR 1:1 DAR 16:9], 50000 kb/s, 29.97 fps, 29.97 tbr, 29.97 tbn, 59.94 tbc
Output #0, mxf, to 'output.mxf':
  Metadata:
    encoder         : Lavf56.24.101
    Stream #0:0: Video: mpeg2video, yuv422p, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 50000 kb/s, 29.97 fps, 29.97 tbr, 29.97 tbn, 29.97 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
[1]    24495 segmentation fault  ffmpeg -f concat -i list.txt -c copy output.mxf/s

          #4676: Concat of AAC + MP4 has gaps   

ffmpeg -i big_buck_bunny.mp4 -ss 8 -to 10 -vn -c:a libfdk_aac 1.mp4 ffmpeg -i big_buck_bunny.mp4 -ss 10 -to 12 -vn -c:a libfdk_aac 2.mp4

touch list.txt printf "file 1.mp4\nduration 2\nfile 2.mp4\nduration 2" > list.txt ffplay -f concat -i list.txt

This problem seems to occur with most audio codecs/formats except for pcm_s16le + wav.


          #4703: Audio cut off in screencast   

Summary of the bug: Last second or two of audio is cut off during a screencast: http://s.natalian.org/2015-07-08/cutoff.mp4

How to reproduce:

% ffmpeg -v warning -f x11grab -video_size 1920x1080 -i :0 -f alsa -i pulse -acodec pcm_s16le -c:v libx264 /tmp/cutoff.mkv &>> /tmp/r2d2.log &
ffmpeg version 2.7.1
built on Archlinux

When i kill ffmpeg during a screencast, my voice is cut off http://s.natalian.org/2015-07-08/cutoff.mp4 Here is the log http://s.natalian.org/2015-07-08/cutoff.txt

Regular kill and kill -INT $pid has the same problem.

Source of my script: https://github.com/kaihendry/recordmydesktop2.0/blob/master/x11capture


          #4913: MXF output has some too short audio streams when transcoding from mp2   

Summary of the bug:

I am trying to convert a TS file with MPEG2 video and mp2 audio to XDCAM MXF with the same MPEG2 video, but 8 tracks AES3 audio. Audio track 1 is ok, but the other audio tracks are 1 frame too short.

How to reproduce: xdcam8mp2-2s.ts has been uploaded to upload.ffmpeg.org/incoming I will attach ffmpeg-20151007-104736.log to this ticket, see also below:

ffmpeg started on 2015-10-07 at 10:47:36
Report written to "ffmpeg-20151007-104736.log"
Command line:
./ffmpeg -report -v 9 -loglevel 99 -y -i xdcam8mp2-2s.ts -c:a pcm_s16le -map 0:v -c:v copy -filter_complex "[0:a:0]channelsplit=channel_layout=stereo[a0][a1];[0:a:1]channelsplit=channel_layout=stereo[a2][a3];[0:a:2]channelsplit=channel_layout=stereo[a4][a5];[0:a:3]channelsplit=channel_layout=stereo[a6][a7]" -map "[a0]" -map "[a1]" -map "[a2]" -map "[a3]" -map "[a4]" -map "[a5]" -map "[a6]" -map "[a7]" -f mxf -ss 1 xdcam8mp2-2s.mxf
ffmpeg version N-75804-ga852db7 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.7 (Debian 4.7.2-5)
  configuration:
  libavutil      55.  2.100 / 55.  2.100
  libavcodec     57.  4.100 / 57.  4.100
  libavformat    57.  3.100 / 57.  3.100
  libavdevice    57.  0.100 / 57.  0.100
  libavfilter     6. 10.100 /  6. 10.100
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.100 /  2.  0.100
Splitting the commandline.
Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'.
Reading option '-v' ... matched as option 'v' (set logging level) with argument '9'.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument '99'.
Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'.
Reading option '-i' ... matched as input file with argument 'xdcam8mp2-2s.ts'.
Reading option '-c:a' ... matched as option 'c' (codec name) with argument 'pcm_s16le'.
Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '0:v'.
Reading option '-c:v' ... matched as option 'c' (codec name) with argument 'copy'.
Reading option '-filter_complex' ... matched as option 'filter_complex' (create a complex filtergraph) with argument '[0:a:0]channelsplit=channel_layout=stereo[a0][a1];[0:a:1]channelsplit=channel_layout=stereo[a2][a3];[0:a:2]channelsplit=channel_layout=stereo[a4][a5];[0:a:3]channelsplit=channel_layout=stereo[a6][a7]'.
Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '[a0]'.
Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '[a1]'.
Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '[a2]'.
Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '[a3]'.
Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '[a4]'.
Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '[a5]'.
Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '[a6]'.
Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '[a7]'.
Reading option '-f' ... matched as option 'f' (force format) with argument 'mxf'.
Reading option '-ss' ... matched as option 'ss' (set the start time offset) with argument '1'.
Reading option 'xdcam8mp2-2s.mxf' ... matched as output file.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option report (generate a report) with argument 1.
Applying option v (set logging level) with argument 9.
Applying option loglevel (set logging level) with argument 99.
Applying option y (overwrite output files) with argument 1.
Applying option filter_complex (create a complex filtergraph) with argument [0:a:0]channelsplit=channel_layout=stereo[a0][a1];[0:a:1]channelsplit=channel_layout=stereo[a2][a3];[0:a:2]channelsplit=channel_layout=stereo[a4][a5];[0:a:3]channelsplit=channel_layout=stereo[a6][a7].
Successfully parsed a group of options.
Parsing a group of options: input file xdcam8mp2-2s.ts.
Successfully parsed a group of options.
Opening an input file: xdcam8mp2-2s.ts.
[mpegts @ 0x321c180] Format mpegts probed with size=2048 and score=100
[mpegts @ 0x321c180] stream=0 stream_type=2 pid=100 prog_reg_desc=
[mpegts @ 0x321c180] stream=1 stream_type=3 pid=101 prog_reg_desc=
[mpegts @ 0x321c180] stream=2 stream_type=3 pid=102 prog_reg_desc=
[mpegts @ 0x321c180] stream=3 stream_type=3 pid=103 prog_reg_desc=
[mpegts @ 0x321c180] stream=4 stream_type=3 pid=104 prog_reg_desc=
[mpegts @ 0x321c180] Before avformat_find_stream_info() pos: 0 bytes read:32768 seeks:0
[mpegts @ 0x321c180] Probe buffer size limit of 5000000 bytes reached
[mpegts @ 0x321c180] After avformat_find_stream_info() pos: 0 bytes read:6582704 seeks:3 frames:179
Input #0, mpegts, from 'xdcam8mp2-2s.ts':
  Duration: 00:00:02.13, start: 1.400000, bitrate: 48436 kb/s
  Program 1
    Metadata:
      service_name    : Service01
      service_provider: FFmpeg
    Stream #0:0[0x100], 19, 1/90000: Video: mpeg2video (4:2:2), 1 reference frame ([2][0][0][0] / 0x0002), yuv422p(tv, bt709, topleft), 1920x1080 [SAR 1:1 DAR 16:9], 1/50, 50000 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x101], 40, 1/90000: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 384 kb/s
    Stream #0:2[0x102], 40, 1/90000: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 384 kb/s
    Stream #0:3[0x103], 40, 1/90000: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 384 kb/s
    Stream #0:4[0x104], 40, 1/90000: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 384 kb/s
Successfully opened the file.
detected 1 logical cores
[Parsed_channelsplit_0 @ 0x32206a0] Setting 'channel_layout' to value 'stereo'
[Parsed_channelsplit_1 @ 0x3263100] Setting 'channel_layout' to value 'stereo'
[Parsed_channelsplit_2 @ 0x3263b60] Setting 'channel_layout' to value 'stereo'
[Parsed_channelsplit_3 @ 0x32644e0] Setting 'channel_layout' to value 'stereo'
Parsing a group of options: output file xdcam8mp2-2s.mxf.
Applying option c:a (codec name) with argument pcm_s16le.
Applying option map (set input stream mapping) with argument 0:v.
Applying option c:v (codec name) with argument copy.
Applying option map (set input stream mapping) with argument [a0].
Applying option map (set input stream mapping) with argument [a1].
Applying option map (set input stream mapping) with argument [a2].
Applying option map (set input stream mapping) with argument [a3].
Applying option map (set input stream mapping) with argument [a4].
Applying option map (set input stream mapping) with argument [a5].
Applying option map (set input stream mapping) with argument [a6].
Applying option map (set input stream mapping) with argument [a7].
Applying option f (force format) with argument mxf.
Applying option ss (set the start time offset) with argument 1.
Successfully parsed a group of options.
Opening an output file: xdcam8mp2-2s.mxf.
Successfully opened the file.
[Parsed_channelsplit_0 @ 0x3222920] Setting 'channel_layout' to value 'stereo'
[Parsed_channelsplit_1 @ 0x326d980] Setting 'channel_layout' to value 'stereo'
[Parsed_channelsplit_2 @ 0x326dfc0] Setting 'channel_layout' to value 'stereo'
[Parsed_channelsplit_3 @ 0x326e740] Setting 'channel_layout' to value 'stereo'
[graph 0 input from stream 0:1 @ 0x3264000] Setting 'time_base' to value '1/48000'
[graph 0 input from stream 0:1 @ 0x3264000] Setting 'sample_rate' to value '48000'
[graph 0 input from stream 0:1 @ 0x3264000] Setting 'sample_fmt' to value 's16p'
[graph 0 input from stream 0:1 @ 0x3264000] Setting 'channel_layout' to value '0x3'
[graph 0 input from stream 0:1 @ 0x3264000] tb:1/48000 samplefmt:s16p samplerate:48000 chlayout:0x3
[graph 0 input from stream 0:2 @ 0x3263720] Setting 'time_base' to value '1/48000'
[graph 0 input from stream 0:2 @ 0x3263720] Setting 'sample_rate' to value '48000'
[graph 0 input from stream 0:2 @ 0x3263720] Setting 'sample_fmt' to value 's16p'
[graph 0 input from stream 0:2 @ 0x3263720] Setting 'channel_layout' to value '0x3'
[graph 0 input from stream 0:2 @ 0x3263720] tb:1/48000 samplefmt:s16p samplerate:48000 chlayout:0x3
[graph 0 input from stream 0:3 @ 0x326ef60] Setting 'time_base' to value '1/48000'
[graph 0 input from stream 0:3 @ 0x326ef60] Setting 'sample_rate' to value '48000'
[graph 0 input from stream 0:3 @ 0x326ef60] Setting 'sample_fmt' to value 's16p'
[graph 0 input from stream 0:3 @ 0x326ef60] Setting 'channel_layout' to value '0x3'
[graph 0 input from stream 0:3 @ 0x326ef60] tb:1/48000 samplefmt:s16p samplerate:48000 chlayout:0x3
[graph 0 input from stream 0:4 @ 0x326f160] Setting 'time_base' to value '1/48000'
[graph 0 input from stream 0:4 @ 0x326f160] Setting 'sample_rate' to value '48000'
[graph 0 input from stream 0:4 @ 0x326f160] Setting 'sample_fmt' to value 's16p'
[graph 0 input from stream 0:4 @ 0x326f160] Setting 'channel_layout' to value '0x3'
[graph 0 input from stream 0:4 @ 0x326f160] tb:1/48000 samplefmt:s16p samplerate:48000 chlayout:0x3
[audio format for output stream 0:8 @ 0x32638a0] Setting 'sample_fmts' to value 's16'
[audio format for output stream 0:7 @ 0x3270200] Setting 'sample_fmts' to value 's16'
[audio format for output stream 0:6 @ 0x3271160] Setting 'sample_fmts' to value 's16'
[audio format for output stream 0:5 @ 0x3272140] Setting 'sample_fmts' to value 's16'
[audio format for output stream 0:4 @ 0x3273120] Setting 'sample_fmts' to value 's16'
[audio format for output stream 0:3 @ 0x3274640] Setting 'sample_fmts' to value 's16'
[audio format for output stream 0:2 @ 0x327cf40] Setting 'sample_fmts' to value 's16'
[audio format for output stream 0:1 @ 0x327cb60] Setting 'sample_fmts' to value 's16'
[audio format for output stream 0:8 @ 0x32638a0] auto-inserting filter 'auto-inserted resampler 0' between the filter 'Parsed_channelsplit_3' and the filter 'audio format for output stream 0:8'
[audio format for output stream 0:7 @ 0x3270200] auto-inserting filter 'auto-inserted resampler 1' between the filter 'Parsed_channelsplit_3' and the filter 'audio format for output stream 0:7'
[audio format for output stream 0:6 @ 0x3271160] auto-inserting filter 'auto-inserted resampler 2' between the filter 'Parsed_channelsplit_2' and the filter 'audio format for output stream 0:6'
[audio format for output stream 0:5 @ 0x3272140] auto-inserting filter 'auto-inserted resampler 3' between the filter 'Parsed_channelsplit_2' and the filter 'audio format for output stream 0:5'
[audio format for output stream 0:4 @ 0x3273120] auto-inserting filter 'auto-inserted resampler 4' between the filter 'Parsed_channelsplit_1' and the filter 'audio format for output stream 0:4'
[audio format for output stream 0:3 @ 0x3274640] auto-inserting filter 'auto-inserted resampler 5' between the filter 'Parsed_channelsplit_1' and the filter 'audio format for output stream 0:3'
[audio format for output stream 0:2 @ 0x327cf40] auto-inserting filter 'auto-inserted resampler 6' between the filter 'Parsed_channelsplit_0' and the filter 'audio format for output stream 0:2'
[audio format for output stream 0:1 @ 0x327cb60] auto-inserting filter 'auto-inserted resampler 7' between the filter 'Parsed_channelsplit_0' and the filter 'audio format for output stream 0:1'
[AVFilterGraph @ 0x3263100] query_formats: 32 queried, 60 merged, 24 already done, 0 delayed
[auto-inserted resampler 0 @ 0x32853c0] [SWR @ 0x3285780] Using s16p internally between filters
[auto-inserted resampler 0 @ 0x32853c0] ch:1 chl:1 channels (FR) fmt:s16p r:48000Hz -> ch:1 chl:1 channels (FR) fmt:s16 r:48000Hz
[auto-inserted resampler 1 @ 0x3281220] [SWR @ 0x3292740] Using s16p internally between filters
[auto-inserted resampler 1 @ 0x3281220] ch:1 chl:1 channels (FL) fmt:s16p r:48000Hz -> ch:1 chl:1 channels (FL) fmt:s16 r:48000Hz
[auto-inserted resampler 2 @ 0x3281da0] [SWR @ 0x329f720] Using s16p internally between filters
[auto-inserted resampler 2 @ 0x3281da0] ch:1 chl:1 channels (FR) fmt:s16p r:48000Hz -> ch:1 chl:1 channels (FR) fmt:s16 r:48000Hz
[auto-inserted resampler 3 @ 0x32829a0] [SWR @ 0x32ac700] Using s16p internally between filters
[auto-inserted resampler 3 @ 0x32829a0] ch:1 chl:1 channels (FL) fmt:s16p r:48000Hz -> ch:1 chl:1 channels (FL) fmt:s16 r:48000Hz
[auto-inserted resampler 4 @ 0x3281420] [SWR @ 0x32b96e0] Using s16p internally between filters
[auto-inserted resampler 4 @ 0x3281420] ch:1 chl:1 channels (FR) fmt:s16p r:48000Hz -> ch:1 chl:1 channels (FR) fmt:s16 r:48000Hz
[auto-inserted resampler 5 @ 0x327dc40] [SWR @ 0x32c66c0] Using s16p internally between filters
[auto-inserted resampler 5 @ 0x327dc40] ch:1 chl:1 channels (FL) fmt:s16p r:48000Hz -> ch:1 chl:1 channels (FL) fmt:s16 r:48000Hz
[auto-inserted resampler 6 @ 0x3281060] [SWR @ 0x32d36a0] Using s16p internally between filters
[auto-inserted resampler 6 @ 0x3281060] ch:1 chl:1 channels (FR) fmt:s16p r:48000Hz -> ch:1 chl:1 channels (FR) fmt:s16 r:48000Hz
[auto-inserted resampler 7 @ 0x326e460] [SWR @ 0x32e0680] Using s16p internally between filters
[auto-inserted resampler 7 @ 0x326e460] ch:1 chl:1 channels (FL) fmt:s16p r:48000Hz -> ch:1 chl:1 channels (FL) fmt:s16 r:48000Hz
Output #0, mxf, to 'xdcam8mp2-2s.mxf':
  Metadata:
    encoder         : Lavf57.3.100
    Stream #0:0, 0, 1/25: Video: mpeg2video, 1 reference frame ([2][0][0][0] / 0x0002), yuv422p(topleft), 1920x1080 (0x0) [SAR 1:1 DAR 16:9], 1/25, q=2-31, 50000 kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc
    Stream #0:1, 0, 1/48000: Audio: pcm_s16le, 48000 Hz, 1 channels (FL), s16, 768 kb/s
    Metadata:
      encoder         : Lavc57.4.100 pcm_s16le
    Stream #0:2, 0, 1/48000: Audio: pcm_s16le, 48000 Hz, 1 channels (FR), s16, 768 kb/s
    Metadata:
      encoder         : Lavc57.4.100 pcm_s16le
    Stream #0:3, 0, 1/48000: Audio: pcm_s16le, 48000 Hz, 1 channels (FL), s16, 768 kb/s
    Metadata:
      encoder         : Lavc57.4.100 pcm_s16le
    Stream #0:4, 0, 1/48000: Audio: pcm_s16le, 48000 Hz, 1 channels (FR), s16, 768 kb/s
    Metadata:
      encoder         : Lavc57.4.100 pcm_s16le
    Stream #0:5, 0, 1/48000: Audio: pcm_s16le, 48000 Hz, 1 channels (FL), s16, 768 kb/s
    Metadata:
      encoder         : Lavc57.4.100 pcm_s16le
    Stream #0:6, 0, 1/48000: Audio: pcm_s16le, 48000 Hz, 1 channels (FR), s16, 768 kb/s
    Metadata:
      encoder         : Lavc57.4.100 pcm_s16le
    Stream #0:7, 0, 1/48000: Audio: pcm_s16le, 48000 Hz, 1 channels (FL), s16, 768 kb/s
    Metadata:
      encoder         : Lavc57.4.100 pcm_s16le
    Stream #0:8, 0, 1/48000: Audio: pcm_s16le, 48000 Hz, 1 channels (FR), s16, 768 kb/s
    Metadata:
      encoder         : Lavc57.4.100 pcm_s16le
Stream mapping:
  Stream #0:1 (mp2) -> channelsplit
  Stream #0:2 (mp2) -> channelsplit
  Stream #0:3 (mp2) -> channelsplit
  Stream #0:4 (mp2) -> channelsplit
  Stream #0:0 -> #0:0 (copy)
  channelsplit:FL -> Stream #0:1 (pcm_s16le)
  channelsplit:FR -> Stream #0:2 (pcm_s16le)
  channelsplit:FL -> Stream #0:3 (pcm_s16le)
  channelsplit:FR -> Stream #0:4 (pcm_s16le)
  channelsplit:FL -> Stream #0:5 (pcm_s16le)
  channelsplit:FR -> Stream #0:6 (pcm_s16le)
  channelsplit:FL -> Stream #0:7 (pcm_s16le)
  channelsplit:FR -> Stream #0:8 (pcm_s16le)
Press [q] to stop, [?] for help
[mxf @ 0x3264a80] essence container count:2
[mxf @ 0x3264a80] essence container count:2
[mxf @ 0x3264a80] package type:1
[mxf @ 0x3264a80] package type:2
[mxf @ 0x3264a80] -d10_channelcount requires MXF D-10 and will be ignored
[mxf @ 0x3264a80] -d10_channelcount requires MXF D-10 and will be ignored
[mxf @ 0x3264a80] -d10_channelcount requires MXF D-10 and will be ignored
[mxf @ 0x3264a80] -d10_channelcount requires MXF D-10 and will be ignored
[mxf @ 0x3264a80] -d10_channelcount requires MXF D-10 and will be ignored
[mxf @ 0x3264a80] -d10_channelcount requires MXF D-10 and will be ignored
[mxf @ 0x3264a80] -d10_channelcount requires MXF D-10 and will be ignored
[mxf @ 0x3264a80] -d10_channelcount requires MXF D-10 and will be ignored
[mxf @ 0x3264a80] essence container count:2
[mxf @ 0x3264a80] edit units count 0
[output stream 0:1 @ 0x327da20] EOF on sink link output stream 0:1:default.
[output stream 0:2 @ 0x32744a0] EOF on sink link output stream 0:2:default.
[output stream 0:4 @ 0x3272fa0] EOF on sink link output stream 0:4:default.
[output stream 0:8 @ 0x3264440] EOF on sink link output stream 0:8:default.
[output stream 0:6 @ 0x3270e20] EOF on sink link output stream 0:6:default.
[output stream 0:7 @ 0x326fe20] EOF on sink link output stream 0:7:default.
[output stream 0:3 @ 0x32735a0] EOF on sink link output stream 0:3:default.
[output stream 0:5 @ 0x3271de0] EOF on sink link output stream 0:5:default.
No more output streams to write to, finishing.
[mxf @ 0x3264a80] essence container count:2
[mxf @ 0x3264a80] edit units count 22
[mxf @ 0x3264a80] missing frames
[mxf @ 0x3264a80] essence container count:2
[mxf @ 0x3264a80] essence container count:2
[mxf @ 0x3264a80] package type:1
[mxf @ 0x3264a80] package type:2
frame=   22 fps=0.0 q=-1.0 Lsize=    6078kB time=00:00:01.01 bitrate=49007.3kbits/s
video:5371kB audio:762kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Input file #0 (xdcam8mp2-2s.ts):
  Input stream #0:0 (video): 46 packets read (11556350 bytes);
  Input stream #0:1 (audio): 84 packets read (96768 bytes); 84 frames decoded (96768 samples);
  Input stream #0:2 (audio): 84 packets read (96768 bytes); 84 frames decoded (96768 samples);
  Input stream #0:3 (audio): 84 packets read (96768 bytes); 84 frames decoded (96768 samples);
  Input stream #0:4 (audio): 84 packets read (96768 bytes); 84 frames decoded (96768 samples);
  Total: 382 packets (11943422 bytes) demuxed
Output file #0 (xdcam8mp2-2s.mxf):
  Output stream #0:0 (video): 22 packets muxed (5499887 bytes);
  Output stream #0:1 (audio): 43 frames encoded (48768 samples); 43 packets muxed (97536 bytes);
  Output stream #0:2 (audio): 43 frames encoded (48768 samples); 43 packets muxed (97536 bytes);
  Output stream #0:3 (audio): 43 frames encoded (48768 samples); 43 packets muxed (97536 bytes);
  Output stream #0:4 (audio): 43 frames encoded (48768 samples); 43 packets muxed (97536 bytes);
  Output stream #0:5 (audio): 43 frames encoded (48768 samples); 43 packets muxed (97536 bytes);
  Output stream #0:6 (audio): 43 frames encoded (48768 samples); 43 packets muxed (97536 bytes);
  Output stream #0:7 (audio): 43 frames encoded (48768 samples); 43 packets muxed (97536 bytes);
  Output stream #0:8 (audio): 43 frames encoded (48768 samples); 43 packets muxed (97536 bytes);
  Total: 366 packets (6280175 bytes) muxed
336 frames successfully decoded, 0 decoding errors
[AVIOContext @ 0x3264600] Statistics: 3 seeks, 356 writeouts
[AVIOContext @ 0x321c860] Statistics: 19478940 bytes read, 3 seeks

This part of the verbose output on the console seems to show the problem;

[mxf @ 0x3264a80] out st:1 dts:20
[mxf @ 0x3264a80] out st:2 dts:20
[mxf @ 0x3264a80] out st:3 dts:20
[mxf @ 0x3264a80] out st:4 dts:20
[mxf @ 0x3264a80] out st:5 dts:20
[mxf @ 0x3264a80] out st:6 dts:20
[mxf @ 0x3264a80] out st:7 dts:20
[mxf @ 0x3264a80] out st:8 dts:20
[mxf @ 0x3264a80] out st:0 dts:21
[output stream 0:1 @ 0x327da20] EOF on sink link output stream 0:1:default.
[output stream 0:2 @ 0x32744a0] EOF on sink link output stream 0:2:default.
[output stream 0:4 @ 0x3272fa0] EOF on sink link output stream 0:4:default.
[output stream 0:8 @ 0x3264440] EOF on sink link output stream 0:8:default.
[output stream 0:6 @ 0x3270e20] EOF on sink link output stream 0:6:default.
[output stream 0:7 @ 0x326fe20] EOF on sink link output stream 0:7:default.
[output stream 0:3 @ 0x32735a0] EOF on sink link output stream 0:3:default.
[output stream 0:5 @ 0x3271de0] EOF on sink link output stream 0:5:default.
No more output streams to write to, finishing.
[mxf @ 0x3264a80] out st:1 dts:21
[mxf @ 0x3264a80] essence container count:2
[mxf @ 0x3264a80] edit units count 22
[mxf @ 0x3264a80] missing frames
[mxf @ 0x3264a80] essence container count:2
    Last message repeated 1 times
[mxf @ 0x3264a80] package type:1
[mxf @ 0x3264a80] package type:2
frame=   22 fps=0.0 q=-1.0 Lsize=    6078kB time=00:00:01.01 bitrate=49007.3kbits/s
video:5371kB audio:762kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown

dts:20 is written for all output streams, dts:21 only for st:0 and st:1

The message [mxf @ 0x3264a80] missing frames might also be relevant, but I don't get this on other input files.

The problem can also be shown using ffprobe

./ffprobe  -i xdcam8mp2-2s.mxf -of flat -show_streams -count_frames -show_entries stream=index,duration,nb_read_frames:disposition=:tags=
ffprobe version N-75804-ga852db7 Copyright (c) 2007-2015 the FFmpeg developers
  built with gcc 4.7 (Debian 4.7.2-5)
  configuration:
  libavutil      55.  2.100 / 55.  2.100
  libavcodec     57.  4.100 / 57.  4.100
  libavformat    57.  3.100 / 57.  3.100
  libavdevice    57.  0.100 / 57.  0.100
  libavfilter     6. 10.100 /  6. 10.100
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.100 /  2.  0.100
[mxf @ 0x2380020] index entry 21 + TemporalOffset 1 = 22, which is out of bounds
Input #0, mxf, from 'xdcam8mp2-2s.mxf':
  Metadata:
    uid             : adab4424-2f25-4dc7-92ff-29bd000c0000
    generation_uid  : adab4424-2f25-4dc7-92ff-29bd000c0001
    company_name    : FFmpeg
    product_name    : OP1a Muxer
    product_version : 57.3.100
    product_uid     : adab4424-2f25-4dc7-92ff-29bd000c0002
    modification_date: 0-01-01 00:00:00
    material_package_umid: 0x060A2B340101010501010D00134DC4A7529471346A4DC4A700529471346A4D00
    timecode        : 00:00:00:00
  Duration: 00:00:00.88, start: 0.000000, bitrate: 56581 kb/s
    Stream #0:0: Video: mpeg2video (4:2:2), yuv422p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 50000 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
    Metadata:
      file_package_umid: 0x060A2B340101010501010D00134DC4A7529471346A4DC4A700529471346A4D01
    Stream #0:1: Audio: pcm_s16le, 48000 Hz, 1 channels, s16, 768 kb/s
    Metadata:
      file_package_umid: 0x060A2B340101010501010D00134DC4A7529471346A4DC4A700529471346A4D01
    Stream #0:2: Audio: pcm_s16le, 48000 Hz, 1 channels, s16, 768 kb/s
    Metadata:
      file_package_umid: 0x060A2B340101010501010D00134DC4A7529471346A4DC4A700529471346A4D01
    Stream #0:3: Audio: pcm_s16le, 48000 Hz, 1 channels, s16, 768 kb/s
    Metadata:
      file_package_umid: 0x060A2B340101010501010D00134DC4A7529471346A4DC4A700529471346A4D01
    Stream #0:4: Audio: pcm_s16le, 48000 Hz, 1 channels, s16, 768 kb/s
    Metadata:
      file_package_umid: 0x060A2B340101010501010D00134DC4A7529471346A4DC4A700529471346A4D01
    Stream #0:5: Audio: pcm_s16le, 48000 Hz, 1 channels, s16, 768 kb/s
    Metadata:
      file_package_umid: 0x060A2B340101010501010D00134DC4A7529471346A4DC4A700529471346A4D01
    Stream #0:6: Audio: pcm_s16le, 48000 Hz, 1 channels, s16, 768 kb/s
    Metadata:
      file_package_umid: 0x060A2B340101010501010D00134DC4A7529471346A4DC4A700529471346A4D01
    Stream #0:7: Audio: pcm_s16le, 48000 Hz, 1 channels, s16, 768 kb/s
    Metadata:
      file_package_umid: 0x060A2B340101010501010D00134DC4A7529471346A4DC4A700529471346A4D01
    Stream #0:8: Audio: pcm_s16le, 48000 Hz, 1 channels, s16, 768 kb/s
    Metadata:
      file_package_umid: 0x060A2B340101010501010D00134DC4A7529471346A4DC4A700529471346A4D01
streams.stream.0.index=0
streams.stream.0.duration="0.880000"
streams.stream.0.nb_read_frames="20"
streams.stream.1.index=1
streams.stream.1.duration="0.880000"
streams.stream.1.nb_read_frames="22"
streams.stream.2.index=2
streams.stream.2.duration="0.880000"
streams.stream.2.nb_read_frames="21"
streams.stream.3.index=3
streams.stream.3.duration="0.880000"
streams.stream.3.nb_read_frames="21"
streams.stream.4.index=4
streams.stream.4.duration="0.880000"
streams.stream.4.nb_read_frames="21"
streams.stream.5.index=5
streams.stream.5.duration="0.880000"
streams.stream.5.nb_read_frames="21"
streams.stream.6.index=6
streams.stream.6.duration="0.880000"
streams.stream.6.nb_read_frames="21"
streams.stream.7.index=7
streams.stream.7.duration="0.880000"
streams.stream.7.nb_read_frames="21"
streams.stream.8.index=8
streams.stream.8.duration="0.880000"
streams.stream.8.nb_read_frames="21"

Although the duration of all streams is 0.88, audio stream 1 has 22 frames, the other audio streams have 21 frames. FFprobe shows 20 frames for stream 0 (video), but I believe this should be 22.

Using MXFDump from https://github.com/Limecraft/ebu-libmxf confirms the output has 22 video frames, the first audio stream has also 22 frames, all other audio streams have 21 frames. I'll also attach the MXFDump output xdcam8mp2-2s.mxf.txt

Patches should be submitted to the ffmpeg-devel mailing list and not this bug tracker.


          #5075: Duration of M4A file is wrong?   

I think duration is an issue after all. I attached files to demonstrate it.

8.wav and 9.wav are original ones. There should not be any gap in between (those are small pieces of tracks 8 and 9 from Depeche Mode Violator).

When I concatenate files 8.wav and 9.wav and then open resulting 10w.wav in Audacity I see that there's no gap in between, so this is OK. It sound fine as well.

ffmpeg -f concat -i ccw.txt  10w.wav

8.m4a and 9.m4a are ones created with FFmpeg. When I concatenate them like this and then open resulting 10.wav in Audacity I see that there is a gap in between. That can be heard as well.

ffmpeg -f concat -i cc.txt  10.wav

          #5452: ssegment muxer reset continuity counters on each segment regardless of reset_timestamps option value   

Summary of the bug: ssegment muxer reset first continuity counters to zero in each segment regardless of reset_timestamps option value, but it should not do this. The continuity counters should be counted seamlessly in case of reset_timestamps value being 0.

How to reproduce:

% ffmpeg -f lavfi -i testsrc -t 120 -f ssegment -segment_format mpegts -reset_timestamps 0  -segment_list out.csv sout%d.ts

Then inspect sout1.ts and sout2.ts with tsreport: % tsreport -cnt 256 sout1.ts

The last line of output is: CC: first: 0, last: 11; duplicate packets: 0

(or see the content of continuity_counter.txt)

tsreport -cnt 256 sout2.ts

The last line of output is: CC: first: 0, last: 15; duplicate packets: 0 (or see the content of continuity_counter.txt)

But it shoud be something like: CC: first: 12, last: ...

the full output of commandline of "ffmpeg -report ..." is enclosed as attachment.


          #5987: ffmpeg freezes while converting live stream to hls   

Hi guys i am just trying to restream a live stream as hls but ffmpeg doesnt give an error doesnt crash does not exit process it just hangs,stucks,freezes whatever you call because of that my live stream stops and i have to restart it every 5-10 minutes by my hand and not sure what is the reason

here is my commandline

ffmpeg -loglevel debug -thread_queue_size 32768 -i "http://goo.gl/MOFvg5" -preset veryfast -f hls -hls_time 5 -hls_list_size 5 -hls_allow_cache 1 -hls_flags delete_segments -segment_list_flags +live -hls_base_url "../ts/" -hls_segment_filename "C:\nginx\html\ts\stream-%%3d.ts" -y "C:\nginx\html\hls\stream.m3u8" > log.txt

i tried 32 bit , 64 bit , nightly builds, 3.2 version all are same

here is example output log

Clipping frame in rate conversion by 0.140266
[libx264 @ 000000000064dfc0] frame=3818 QP=20.23 NAL=2 Slice:B Poc:100 I:128  P:663  SKIP:2795 size=
2873 bytes
[h264 @ 0000000002c07120] nal_unit_type: 9, nal_ref_idc: 0
[h264 @ 0000000002c07120] nal_unit_type: 1, nal_ref_idc: 0
    Last message repeated 7 times
Clipping frame in rate conversion by 0.140266
[libx264 @ 000000000064dfc0] frame=3819 QP=21.74 NAL=0 Slice:B Poc:98  I:98   P:359  SKIP:3134 size=
1487 bytes
[h264 @ 0000000002c04f60] nal_unit_type: 9, nal_ref_idc: 0
[h264 @ 0000000002c04f60] nal_unit_type: 1, nal_ref_idc: 2
    Last message repeated 7 times
Clipping frame in rate conversion by 0.140266
[libx264 @ 000000000064dfc0] frame=3820 QP=22.39 NAL=0 Slice:B Poc:102 I:24   P:387  SKIP:3180 size=
1316 bytes
[h264 @ 00000000027f5020] nal_unit_type: 9, nal_ref_idc: 0
[h264 @ 00000000027f5020] nal_unit_type: 1, nal_ref_idc: 2
    Last message repeated 7 times
Clipping frame in rate conversion by 0.140266

this is the last log i receive

when i dont use loglevel i receive something like this

  Metadata:
    encoder         : Lavf57.52.100
    Stream #0:0: Video: h264 (libx264), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 30 fps, 90k t
bn, 30 tbc (default)
    Metadata:
      encoder         : Lavc57.63.103 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    Stream #0:1: Audio: aac (LC), 44100 Hz, stereo, fltp, 128 kb/s
    Metadata:
      encoder         : Lavc57.63.103 aac
Stream mapping:
  Stream #0:0 (h264) -> overlay:main (graph 0)
  Stream #1:0 (png) -> overlay:overlay (graph 0)
  fps (graph 0) -> Stream #0:0 (libx264)
  Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
frame=22033 fps= 30 q=29.0 size=N/A time=00:12:14.84 bitrate=N/A dup=2 drop=0 speed=1.01x

and it just stucks without giving error?


          #6128: Using the concat demuxer with images and specified duration directives produces wrong duration   

The FFmpeg wiki entry on Slideshow has a section at wiki:Slideshow#Concatdemuxer on using the concat demuxer to create a video from a series of images with custom duration assigned to each image. However, FFmpeg does not produce a video of the requested total duration.

How to reproduce:

  1. Create still images:
    ffmpeg -f lavfi -i color -vframes 1 black.png
    ffmpeg -f lavfi -i color=white -vframes 1 white.png
    
  1. Create concat list as shown in Wiki
    file black.png
    duration 6
    file white.png
    duration 2
    
  1. Run the concat
    ffmpeg -f concat -i list.txt result.mp4
    ffmpeg version N-83410-gb1e2192007 Copyright (c) 2000-2017 the FFmpeg developers
      built with gcc 6.3.0 (Rev1, Built by MSYS2 project)
      configuration:  --enable-avisynth --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-cuda --enable-cuvid --enable-schannel --enable-sdl2 --enable-decklink --enable-fontconfig --enable-frei0r --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libilbc --enable-libmfx --enable-libmodplug --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libwavpack --enable-libwebp --enable-libxavs --enable-libxvid --enable-libzimg --enable-openssl --enable-libsnappy --enable-gpl --enable-opencl --enable-opengl --enable-libcdio --enable-libfdk-aac --enable-libkvazaar --enable-librubberband --enable-libssh --enable-libtesseract --enable-libzvbi --enable-chromaprint --enable-libopenh264 --enable-libopenmpt --enable-netcdf --disable-w32threads --enable-version3 --enable-nonfree --enable-filter=frei0r --disable-debug
      libavutil      55. 46.100 / 55. 46.100
      libavcodec     57. 75.100 / 57. 75.100
      libavformat    57. 66.101 / 57. 66.101
      libavdevice    57.  2.100 / 57.  2.100
      libavfilter     6. 72.100 /  6. 72.100
      libswscale      4.  3.101 /  4.  3.101
      libswresample   2.  4.100 /  2.  4.100
      libpostproc    54.  2.100 / 54.  2.100
    Input #0, concat, from 'list.txt':
      Duration: 00:00:08.00, start: 0.000000, bitrate: 0 kb/s
        Stream #0:0: Video: png, rgb24(pc), 320x240 [SAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
    No pixel format specified, yuv444p for H.264 encoding chosen.
    Use -pix_fmt yuv420p for compatibility with outdated media players.
    [libx264 @ 000000000041c1a0] using SAR=1/1
    [libx264 @ 000000000041c1a0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 LZCNT BMI2
    [libx264 @ 000000000041c1a0] profile High 4:4:4 Predictive, level 1.3, 4:4:4 8-bit
    [libx264 @ 000000000041c1a0] 264 - core 148 r2762 90a61ec - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=4 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
    Output #0, mp4, to 'result.mp4':
      Metadata:
        encoder         : Lavf57.66.101
        Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv444p, 320x240 [SAR 1:1 DAR 4:3], q=-1--1, 25 fps, 12800 tbn, 25 tbc
        Metadata:
          encoder         : Lavc57.75.100 libx264
        Side data:
          cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    Stream mapping:
      Stream #0:0 -> #0:0 (png (native) -> h264 (libx264))
    Press [q] to stop, [?] for help
    frame=  151 fps=0.0 q=-1.0 Lsize=       6kB time=00:00:05.92 bitrate=   8.0kbits/s dup=149 drop=0 speed=82.1x
    video:3kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 81.122292%
    [libx264 @ 000000000041c1a0] frame I:2     Avg QP: 9.00  size:    53
    [libx264 @ 000000000041c1a0] frame P:38    Avg QP: 9.29  size:    23
    [libx264 @ 000000000041c1a0] frame B:111   Avg QP:12.67  size:    15
    [libx264 @ 000000000041c1a0] consecutive B-frames:  2.0%  0.0%  0.0% 98.0%
    [libx264 @ 000000000041c1a0] mb I  I16..4:  0.3% 99.7%  0.0%
    [libx264 @ 000000000041c1a0] mb P  I16..4:  0.0%  0.0%  0.0%  P16..4:  0.0%  0.0%  0.0%  0.0%  0.0%    skip:100.0%
    [libx264 @ 000000000041c1a0] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  0.0%  0.0%  0.0%  direct: 0.0%  skip:100.0%
    [libx264 @ 000000000041c1a0] 8x8 transform intra:99.7%
    [libx264 @ 000000000041c1a0] coded y,u,v intra: 0.0% 0.0% 0.0% inter: 0.0% 0.0% 0.0%
    [libx264 @ 000000000041c1a0] i16 v,h,dc,p:  0%  0% 100%  0%
    [libx264 @ 000000000041c1a0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu:  0%  0% 100%  0%  0%  0%  0%  0%  0%
    [libx264 @ 000000000041c1a0] Weighted P-Frames: Y:0.0% UV:0.0%
    [libx264 @ 000000000041c1a0] kb/s:3.43
    
  1. Check output duration
    ffprobe result.mp4 -show_entries format=duration -v 0
    [FORMAT]
    duration=6.040000
    [/FORMAT]
    

Trying to work around this, by duplicating the last image entry (with or without duration directive) also produces unexpected output.

  1. Updated list
    file black.png
    duration 6
    file white.png
    duration 2
    file white.png
    duration 1
    
  1. Concat
    ffmpeg -f concat -i list2.txt result2.mp4
    ffmpeg version N-83410-gb1e2192007 Copyright (c) 2000-2017 the FFmpeg developers
      built with gcc 6.3.0 (Rev1, Built by MSYS2 project)
      configuration:  --enable-avisynth --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-cuda --enable-cuvid --enable-schannel --enable-sdl2 --enable-decklink --enable-fontconfig --enable-frei0r --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libilbc --enable-libmfx --enable-libmodplug --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libwavpack --enable-libwebp --enable-libxavs --enable-libxvid --enable-libzimg --enable-openssl --enable-libsnappy --enable-gpl --enable-opencl --enable-opengl --enable-libcdio --enable-libfdk-aac --enable-libkvazaar --enable-librubberband --enable-libssh --enable-libtesseract --enable-libzvbi --enable-chromaprint --enable-libopenh264 --enable-libopenmpt --enable-netcdf --disable-w32threads --enable-version3 --enable-nonfree --enable-filter=frei0r --disable-debug
      libavutil      55. 46.100 / 55. 46.100
      libavcodec     57. 75.100 / 57. 75.100
      libavformat    57. 66.101 / 57. 66.101
      libavdevice    57.  2.100 / 57.  2.100
      libavfilter     6. 72.100 /  6. 72.100
      libswscale      4.  3.101 /  4.  3.101
      libswresample   2.  4.100 /  2.  4.100
      libpostproc    54.  2.100 / 54.  2.100
    Input #0, concat, from 'list2.txt':
      Duration: 00:00:09.00, start: 0.000000, bitrate: 0 kb/s
        Stream #0:0: Video: png, rgb24(pc), 320x240 [SAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
    No pixel format specified, yuv444p for H.264 encoding chosen.
    Use -pix_fmt yuv420p for compatibility with outdated media players.
    [libx264 @ 00000000006dc1a0] using SAR=1/1
    [libx264 @ 00000000006dc1a0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 LZCNT BMI2
    [libx264 @ 00000000006dc1a0] profile High 4:4:4 Predictive, level 1.3, 4:4:4 8-bit
    [libx264 @ 00000000006dc1a0] 264 - core 148 r2762 90a61ec - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=4 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
    Output #0, mp4, to 'result2.mp4':
      Metadata:
        encoder         : Lavf57.66.101
        Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv444p, 320x240 [SAR 1:1 DAR 4:3], q=-1--1, 25 fps, 12800 tbn, 25 tbc
        Metadata:
          encoder         : Lavc57.75.100 libx264
        Side data:
          cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    Stream mapping:
      Stream #0:0 -> #0:0 (png (native) -> h264 (libx264))
    Press [q] to stop, [?] for help
    frame=  249 fps=0.0 q=-1.0 Lsize=       9kB time=00:00:09.84 bitrate=   7.1kbits/s dup=246 drop=0 speed=88.8x
    video:5kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 78.030922%
    [libx264 @ 00000000006dc1a0] frame I:2     Avg QP: 7.50  size:    54
    [libx264 @ 00000000006dc1a0] frame P:62    Avg QP: 9.23  size:    23
    [libx264 @ 00000000006dc1a0] frame B:185   Avg QP:12.67  size:    15
    [libx264 @ 00000000006dc1a0] consecutive B-frames:  0.8%  0.0%  1.2% 98.0%
    [libx264 @ 00000000006dc1a0] mb I  I16..4:  0.3% 99.7%  0.0%
    [libx264 @ 00000000006dc1a0] mb P  I16..4:  0.0%  0.0%  0.0%  P16..4:  0.0%  0.0%  0.0%  0.0%  0.0%    skip:100.0%
    [libx264 @ 00000000006dc1a0] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  0.0%  0.0%  0.0%  direct: 0.0%  skip:100.0%
    [libx264 @ 00000000006dc1a0] 8x8 transform intra:99.7%
    [libx264 @ 00000000006dc1a0] coded y,u,v intra: 0.0% 0.0% 0.0% inter: 0.0% 0.0% 0.0%
    [libx264 @ 00000000006dc1a0] i16 v,h,dc,p:  0%  0% 100%  0%
    [libx264 @ 00000000006dc1a0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu:  0%  0% 100%  0%  0%  0%  0%  0%  0%
    [libx264 @ 00000000006dc1a0] Weighted P-Frames: Y:0.0% UV:0.0%
    [libx264 @ 00000000006dc1a0] kb/s:3.40
    
  1. Check duration
    ffprobe result2.mp4 -show_entries format=duration -v 0
    [FORMAT]
    duration=9.960000
    [/FORMAT]
    

This time, the duration is greater (9.96 sec) than it should be (9 sec)

Behaviour originally reported at http://video.stackexchange.com/q/20588/1871

Personally, I believe all the direction durative does is it alters the offset applied to the starting timestamp of successive files in the concat list and not enforce a duration per se. So, that explains to me the issue with the first concat run, but not the second.


          #6131: Splitting and then merging h264 .MOV produces corrupted video   

In short

I cut two parts from some video, then combine them back and getting the result critically broken (it's a simplified debug case from a real video merging). Bisected ffmpeg git, the error appears after this (between release 3.0 and 3.1):

b8fa374 lavf/concatdec: remove unrelated change during codecpar merge.

Details

Source video: h264 .MOV from my photocamera. Note 1: time 3.003 in the commands below is a keyframe in the source video:

$ ffprobe -loglevel error -read_intervals +3 -show_frames -select_streams v -print_format xml /tmp/P2040190.MOV | grep -m1 3.003

<frame media_type="video" stream_index="0" key_frame="1" pkt_pts="270270" pkt_pts_time="3.003000" pkt_dts="270270" pkt_dts_time="3.003000" best_effort_timestamp="270270" best_effort_timestamp_time="3.003000" pkt_duration="3003" pkt_duration_time="0.033367" pkt_pos="3998057" pkt_size="60194" width="1280" height="720" pix_fmt="yuvj420p" sample_aspect_ratio="1:1" pict_type="I" coded_picture_number="15" display_picture_number="0" interlaced_frame="0" top_field_first="0" repeat_pict="0"/>

Note 2: ffplay still prints such a line in the "good" case at the problematic place. But everything else is fine.

"[h264 @ 0x7f840c0dcfc0] Reinit context to 1280x720, pix_fmt: yuvj420p"

Example commands are below. Attached logs for bad commits b8fa374 and 0cb19c3 (errors differ a bit between them) and good commit f8d1bb2. ffplay had to be interrupted manually at the end for all cases. Also attached output of "out-f8d1bb2/ffmpeg -v 9 -loglevel 99 -i /tmp/P2040190.MOV"

checkme() {

set -x FF="/mnt/wrk/ffmpeg/out-f8d1bb2/ffmpeg" OUTVID="." set -e echo -e 'file start.mkv\nfile end.mkv' > list.txt $FF -y -t 3.003 -i "/tmp/P2040190.MOV" -an "$OUTVID/start.mkv" $FF -y -ss 3.003 -t 5 -i "/tmp/P2040190.MOV" -c:v copy -an "$OUTVID/end.mkv" $FF -y -f concat -i "$OUTVID/list.txt" -c:v copy -an "$OUTVID/merge.mkv" set +e ffplay "$OUTVID/merge.mkv"

}


          #6156: Issue with FFMPEG ALSA CPU usage   

I am on a Raspberry Pi Zero with a Pi Camera and an I2S MEMS mic, running the latest Raspbian Jessie. I am attempting to livestream audio and video. I've discovered that when I record ALSA audio with FFMPEG, that process takes 95% of my CPU and produces stuttering, unusable audio in the stream.

I isolated the issue to the following:

  1. ffmpeg -f alsa -acodec pcm_s32le -i mic_sv temp.wav

This single command takes 95% of my CPU.

  1. arecord -Dmic_sv -c2 -r48000 -fS32_LE -twav temp.wav

This single command takes <5% of my CPU.

I have added a custom hook to ffmpeg so we can see the PCM settings. I have ensured that settings (buffer size, period size, etc.) are identical between the two commands.

Here is the full console output of FFMPEG:

$ ALSA_CONFIG_PATH=/usr/share/alsa/alsa.conf:./dumpasoundrc  /home/pi/special/ffmpeg/ffmpeg -v 9 -loglevel 99  -f alsa -acodec pcm_s32le -i michooks -f  null -
ffmpeg version git-2017-02-05-e57fd92 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 4.9.2 (Raspbian 4.9.2-10)
  configuration: --extra-cflags=-I/opt/vc/include/IL --enable-nonfree --enable-omx-rpi --logfile=CONFIG.TXT
  libavutil      55. 46.100 / 55. 46.100
  libavcodec     57. 75.100 / 57. 75.100
  libavformat    57. 66.101 / 57. 66.101
  libavdevice    57.  2.100 / 57.  2.100
  libavfilter     6. 73.100 /  6. 73.100
  libswscale      4.  3.101 /  4.  3.101
  libswresample   2.  4.100 /  2.  4.100
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with argument '9'.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument '99'.
Reading option '-f' ... matched as option 'f' (force format) with argument 'alsa'.
Reading option '-acodec' ... matched as option 'acodec' (force audio codec ('copy' to copy stream)) with argument 'pcm_s32le'.
Reading option '-i' ... matched as input url with argument 'michooks'.
Reading option '-f' ... matched as option 'f' (force format) with argument 'null'.
Reading option '-' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument 9.
Successfully parsed a group of options.
Parsing a group of options: input url michooks.
Applying option f (force format) with argument alsa.
Applying option acodec (force audio codec ('copy' to copy stream)) with argument pcm_s32le.
Successfully parsed a group of options.
Opening an input file: michooks.
[ALSA Debug Hook] Installing hooks.
Hooks PCM
Slave: Soft volume PCM
Control: Boost Capture Volume
min_dB: -3
max_dB: 50
resolution: 256
Slave: Route conversion PCM
  Transformation table:
    0 <- 0
    1 <- 0
Slave: Mmap emulation PCM
Slave: Hardware PCM card 1 'mems-mic' device 0 subdevice 0
[ALSA Debug Hook] hw_params:
Hooks PCM
Slave: Soft volume PCM
Control: Boost Capture Volume
min_dB: -3
max_dB: 50
resolution: 256
Its setup is:
  stream       : CAPTURE
  access       : RW_INTERLEAVED
  format       : S32_LE
  subformat    : STD
  channels     : 2
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 32
  buffer_size  : 65536
  period_size  : 16384
  period_time  : 341333
  tstamp_mode  : NONE
  period_step  : 1
  avail_min    : 16384
  period_event : 0
  start_threshold  : 1
  stop_threshold   : 65536
  silence_threshold: 0
  silence_size : 0
  boundary     : 1073741824
Slave: Route conversion PCM
  Transformation table:
    0 <- 0
    1 <- 0
Its setup is:
  stream       : CAPTURE
  access       : MMAP_INTERLEAVED
  format       : S32_LE
  subformat    : STD
  channels     : 2
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 32
  buffer_size  : 65536
  period_size  : 16384
  period_time  : 341333
  tstamp_mode  : NONE
  period_step  : 1
  avail_min    : 16384
  period_event : 0
  start_threshold  : 1
  stop_threshold   : 65536
  silence_threshold: 0
  silence_size : 0
  boundary     : 1073741824
Slave: Mmap emulation PCM
Its setup is:
  stream       : CAPTURE
  access       : MMAP_INTERLEAVED
  format       : S32_LE
  subformat    : STD
  channels     : 2
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 32
  buffer_size  : 65536
  period_size  : 16384
  period_time  : 341333
  tstamp_mode  : NONE
  period_step  : 1
  avail_min    : 16384
  period_event : 0
  start_threshold  : 1
  stop_threshold   : 65536
  silence_threshold: 0
  silence_size : 0
  boundary     : 1073741824
Slave: Hardware PCM card 1 'mems-mic' device 0 subdevice 0
Its setup is:
  stream       : CAPTURE
  access       : RW_INTERLEAVED
  format       : S32_LE
  subformat    : STD
  channels     : 2
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 32
  buffer_size  : 65536
  period_size  : 16384
  period_time  : 341333
  tstamp_mode  : NONE
  period_step  : 1
  avail_min    : 16384
  period_event : 0
  start_threshold  : 1073741824
  stop_threshold   : 65536
  silence_threshold: 0
  silence_size : 0
  boundary     : 1073741824
  appl_ptr     : 0
  hw_ptr       : 0
[alsa @ 0x31ea450] All info found
[alsa @ 0x31ea450] stream 0: start_time: 1487382765.290 duration: -9223372036854.775
[alsa @ 0x31ea450] format: start_time: 1487382765.290 duration: -9223372036854.775 bitrate=3072 kb/s
Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, alsa, from 'michooks':
  Duration: N/A, start: 1487382765.289814, bitrate: 3072 kb/s
    Stream #0:0, 1, 1/1000000: Audio: pcm_s32le, 48000 Hz, stereo, s32, 3072 kb/s
Successfully opened the file.
Parsing a group of options: output url -.
Applying option f (force format) with argument null.
Successfully parsed a group of options.
Opening an output file: -.
Successfully opened the file.
detected 1 logical cores
[graph_0_in_0_0 @ 0x31f9310] Setting 'time_base' to value '1/48000'
[graph_0_in_0_0 @ 0x31f9310] Setting 'sample_rate' to value '48000'
[graph_0_in_0_0 @ 0x31f9310] Setting 'sample_fmt' to value 's32'
[graph_0_in_0_0 @ 0x31f9310] Setting 'channel_layout' to value '0x3'
[graph_0_in_0_0 @ 0x31f9310] tb:1/48000 samplefmt:s32 samplerate:48000 chlayout:0x3
[format_out_0_0 @ 0x31f9f10] Setting 'sample_fmts' to value 's16'
[format_out_0_0 @ 0x31f9f10] auto-inserting filter 'auto_resampler_0' between the filter 'Parsed_anull_0' and the filter 'format_out_0_0'
[AVFilterGraph @ 0x31f9980] query_formats: 4 queried, 6 merged, 3 already done, 0 delayed
[auto_resampler_0 @ 0x31faf10] [SWR @ 0x321e130] Using fltp internally between filters
[auto_resampler_0 @ 0x31faf10] ch:2 chl:stereo fmt:s32 r:48000Hz -> ch:2 chl:stereo fmt:s16 r:48000Hz
Output #0, null, to 'pipe:':
  Metadata:
    encoder         : Lavf57.66.101
    Stream #0:0, 0, 1/48000: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
    Metadata:
      encoder         : Lavc57.75.100 pcm_s16le
Stream mapping:
  Stream #0:0 -> #0:0 (pcm_s32le (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
cur_dts is invalid (this is harmless if it occurs once at the start per stream)
size=N/A time=00:00:17.84 bitrate=N/A speed=   1x
video:0kB audio:3345kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Input file #0 (michooks):
  Input stream #0:0 (audio): 26372 packets read (6851424 bytes); 26372 frames decoded (856428 samples);
  Total: 26372 packets (6851424 bytes) demuxed
Output file #0 (pipe:):
  Output stream #0:0 (audio): 26372 frames encoded (856428 samples); 26372 packets muxed (3425712 bytes);
  Total: 26372 packets (3425712 bytes) muxed
26372 frames successfully decoded, 0 decoding errors
Exiting normally, received signal 2.

Here is the console output of Arecord:

$ arecord -v -r48000 -c2 -fS32_LE --period-size=16384 --buffer-size=65536 -Dmic_sv -twav /dev/null
Recording WAVE '/dev/null' : Signed 32 bit Little Endian, Rate 48000 Hz, Stereo
Soft volume PCM
Control: Boost Capture Volume
min_dB: -3
max_dB: 50
resolution: 256
Its setup is:
  stream       : CAPTURE
  access       : RW_INTERLEAVED
  format       : S32_LE
  subformat    : STD
  channels     : 2
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 32
  buffer_size  : 65536
  period_size  : 16384
  period_time  : 341333
  tstamp_mode  : NONE
  period_step  : 1
  avail_min    : 16384
  period_event : 0
  start_threshold  : 1
  stop_threshold   : 65536
  silence_threshold: 0
  silence_size : 0
  boundary     : 1073741824
Slave: Route conversion PCM
  Transformation table:
    0 <- 0
    1 <- 0
Its setup is:
  stream       : CAPTURE
  access       : MMAP_INTERLEAVED
  format       : S32_LE
  subformat    : STD
  channels     : 2
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 32
  buffer_size  : 65536
  period_size  : 16384
  period_time  : 341333
  tstamp_mode  : NONE
  period_step  : 1
  avail_min    : 16384
  period_event : 0
  start_threshold  : 1
  stop_threshold   : 65536
  silence_threshold: 0
  silence_size : 0
  boundary     : 1073741824
Slave: Mmap emulation PCM
Its setup is:
  stream       : CAPTURE
  access       : MMAP_INTERLEAVED
  format       : S32_LE
  subformat    : STD
  channels     : 2
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 32
  buffer_size  : 65536
  period_size  : 16384
  period_time  : 341333
  tstamp_mode  : NONE
  period_step  : 1
  avail_min    : 16384
  period_event : 0
  start_threshold  : 1
  stop_threshold   : 65536
  silence_threshold: 0
  silence_size : 0
  boundary     : 1073741824
Slave: Hardware PCM card 1 'mems-mic' device 0 subdevice 0
Its setup is:
  stream       : CAPTURE
  access       : RW_INTERLEAVED
  format       : S32_LE
  subformat    : STD
  channels     : 2
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 32
  buffer_size  : 65536
  period_size  : 16384
  period_time  : 341333
  tstamp_mode  : NONE
  period_step  : 1
  avail_min    : 16384
  period_event : 0
  start_threshold  : 1073741824
  stop_threshold   : 65536
  silence_threshold: 0
  silence_size : 0
  boundary     : 1073741824
  appl_ptr     : 0
  hw_ptr       : 0
^CAborted by signal Interrupt...

After a long chat in the FFMPEG IRC channel, we believe there may be a bug in the way FFMPEG waits for ALSA packets. Arecord uses snd_pcm_wait() to wait for packets, and this command is not used in FFMPEG sources. Inserting -re before -i into my FFMPEG command reduces CPU usage to <5%, but is not the right approach, and causes other problems (bitrate is almost 0kbps, audio file generated is <5 kilobytes).


          #6338: http cookies not set when using proxy   

Summary of the bug: when -http_proxy option is used, ffmpeg doesn't honour "Set-Cookie:" header and so doesn't send "Cookie:" headers in subsequent request How to reproduce:

ffprobe started on 2017-04-21 at 05:17:05
Report written to "ffprobe-20170421-051705.log"
Command line:
ffprobe -report http://cdn.rapticonsulting.in/gmtlive.php -http_proxy http://proxyuser:ffauth@144.217.86.183:8080
ffprobe version N-85595-g0f05f2c Copyright (c) 2007-2017 the FFmpeg developers
  built with gcc 4.9.2 (Debian 4.9.2-10)
  configuration: --prefix=/home/developer/ffmpeg_build --pkg-config-flags=--static --extra-cflags='-I/home/developer/ffmpeg_build/include -static' --extra-ldflags='-L/home/developer/ffmpeg_build/lib -static' --bindir=/home/developer/bin --disable-ffserver --disable-ffplay --disable-doc --enable-gray --enable-libx264 --enable-libmp3lame --enable-libfontconfig --enable-libfreetype --enable-gpl --enable-version3
  libavutil      55. 61.100 / 55. 61.100
  libavcodec     57. 93.100 / 57. 93.100
  libavformat    57. 72.101 / 57. 72.101
  libavdevice    57.  7.100 / 57.  7.100
  libavfilter     6. 84.101 /  6. 84.101
  libswscale      4.  7.101 /  4.  7.101
  libswresample   2.  8.100 /  2.  8.100
  libpostproc    54.  6.100 / 54.  6.100
[http @ 0x31d5360] Setting default whitelist 'http,https,tls,rtp,tcp,udp,crypto,httpproxy'
[http @ 0x31d5360] request: GET http://cdn.rapticonsulting.in:80/gmtlive.php HTTP/1.1
User-Agent: Lavf/57.72.101
Accept: */*
Range: bytes=0-
Connection: close
Host: cdn.rapticonsulting.in
Icy-MetaData: 1
[http @ 0x31d5360] request: GET http://cdn.rapticonsulting.in:80/gmtlive.php HTTP/1.1
User-Agent: Lavf/57.72.101
Accept: */*
Range: bytes=0-
Connection: close
Host: cdn.rapticonsulting.in
Icy-MetaData: 1
Proxy-Authorization: Basic cHJveHl1c2VyOmZmYXV0aA==
[http @ 0x31d5360] request: GET http://cdn.rapticonsulting.in:80/live/gmtlive/playlist.m3u8 HTTP/1.1
User-Agent: Lavf/57.72.101
Accept: */*
Range: bytes=0-
Connection: close
Host: cdn.rapticonsulting.in
Icy-MetaData: 1
Proxy-Authorization: Basic cHJveHl1c2VyOmZmYXV0aA==
[http @ 0x31d5360] HTTP error 403 Forbidden
http://cdn.rapticonsulting.in/gmtlive.php: Server returned 403 Forbidden (access denied)

If you try the same command without using proxy, i.e., % ffprobe -loglevel debug http://cdn.rapticonsulting.in/gmtlive.php

It accepts the cookies from the first request and sends them in subsequent request.

Also, I checked both the scenario with tcpdump, and Set-Cookie header is received in both cases on request to initial url. I also checked the proxy scenario using curl,

% curl --verbose --location http://cdn.rapticonsulting.in/gmtlive.php --cookie /tmp/cookies.txt --cookie-jar /tmp/cookies.txt --proxy 144.217.86.183:8080 --proxy-user proxyuser:ffauth

and curl accepts the cookie and sends in them subsequent request.

and I did notice one difference. ffmpeg/ffprobe adds port number to domain part of url in proxy request whereas curl doesn't. like this,

with ffmpeg, GET http://cdn.rapticonsulting.in:80/gmtlive.php HTTP/1.1 Host: cdn.rapticonsulting.in ...

with curl, GET http://cdn.rapticonsulting.in/gmtlive.php HTTP/1.1 Host: cdn.rapticonsulting.in ......

Could this change in url be affecting cookie handling?

fyi, the cookies are actually for cloudfront secure access. and due to cookie not being set, access is denied on subsequent request. stream url given here is just for demo purpose to highlight this issue and for testing. Actual deployment will have even the first request secured with token.


          #6399: FFREPORT doesn't support drive letters on Win32 due to parsing separator   

Summary of the bug:

The FFREPORT environmental variable can't support a drive letter in the path to the log file (Windows systems) due to the use of ':' as a field separator. For example, FFREPORT=file=c:\temp\log.txt:loglevel=56 gets interpreted as a filename of only "c"

How to reproduce: Set FFREPORT to a path including a drive letter. Look for the resulting "Report written to <x>" message in the output, where <x> is the drive letter in the path.


          #6452: MP3 contcat error => Application provided invalid, non monotonically increasing dts to muxer in stream 0   

Hello all,

I have a problem to merge two mp3.

The command i use to merge two mp3 files is:

ffmpeg.exe -y -f concat -safe 0 -i list.txt -c copy final.mp3

The file final.mp3 is unreadable and inside the console i can see in a loop the following error message:

Application provided invalid, non monotonically increasing dts to muxer in stream 0

Resources are:

1.mp3 => http://dl.free.fr/fLNv2uVQX 2.mp3 => http://dl.free.fr/n7vveNoCO list.txt => http://dl.free.fr/smu2sIBBl final.mp3 => http://dl.free.fr/nVIPO6zw9

This files are available only 30 days from now.

Thanks a lot for your help.

Regards, Riles


          #6494: Concat'ing HEVC streams with different encoding parameters produces gibberish   

Summary of the bug: after you concat two HEVC streams with different encoding parameters and you try to play the resulting file, when ffplay/mpv/mplayer reaches the second file, you see garbage instead of the actual output.

How to reproduce:

The first file parameters:
$ ffmpeg -i input1 -an -c:v libx265 -preset veryslow -x265-params crf=20:no-sao=1    file1.mkv
The second file parameters:
$ ffmpeg -i input2 -an -c:v libx265 -preset veryslow -tune grain -x265-params crf=20 file2.mkv
$ cat list.txt
file file1.mkv
file file2.mkv
Concat:
$ ffmpeg -f concat -i list.txt -c copy out.mkv

When reaching the second part of the output multiple messages like this one are logged in console:

[ffmpeg/video] hevc: The cu_qp_delta -56 is outside the valid range [-26, 25].

mkvtoolnix produces the same broken output.

However if you first transcode the mkv files to TS and then concat the resulting ts files, then everything works fine:

$ ffmpeg -i part1.mkv -c copy output1.ts
$ ffmpeg -i part2.mkv -c copy output2.ts

          #5831: HDR Metadata in Encoding   

Hi,

I try to dump HDR metadata (mastering display color primaries & luminance) of a HDR video using;

root@kizil105:/home/admintv# /opt/ffmpeg/bin/ffmpeg -i /tmp/exodus_hdr.mp4 -f ffmetadata -y metadata.txt ffmpeg version N-81560-ge3fd185 Copyright (c) 2000-2016 the FFmpeg developers

built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3) configuration: --prefix=/opt/ffmpeg --enable-shared --enable-static --enable-nonfree --enable-gpl --extra-cflags='-I/opt/ffmpeg/include -I/usr/local/include' --extra-ldflags=-L/opt/ffmpeg/lib --bindir=/opt/ffmpeg/bin --extra-libs=-ldl --enable-libx264 --enable-libx265 --enable-nonfree --enable-gpl --enable-nvenc --enable-vdpau --enable-libzvbi --enable-libfdk-aac --enable-libzimg --enable-avresample --enable-libzmq --enable-libfreetype libavutil 55. 29.100 / 55. 29.100 libavcodec 57. 54.102 / 57. 54.102 libavformat 57. 48.102 / 57. 48.102 libavdevice 57. 0.102 / 57. 0.102 libavfilter 6. 60.100 / 6. 60.100 libavresample 3. 0. 0 / 3. 0. 0 libswscale 4. 1.100 / 4. 1.100 libswresample 2. 1.100 / 2. 1.100 libpostproc 54. 0.100 / 54. 0.100

[aac @ 0x1cb64c0] This stream seems to incorrectly report its last channel as LFE[3], mapping to LFE[0] Input #0, mpegts, from '/tmp/exodus_hdr.mp4':

Duration: 00:00:02.13, start: 1.525000, bitrate: 44519 kb/s Program 1

Metadata:

service_name : Service01 service_provider: FFmpeg

Stream #0:0[0x100]: Video: hevc (Main 10) ([36][0][0][0] / 0x0024), yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3840x2160 [SAR 1:1 DAR 16:9], 23.98 fps, 24 tbr, 90k tbn, 23.98 tbc Stream #0:1[0x101](und): Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, 5.1, fltp, 400 kb/s

Output #0, ffmetadata, to 'metadata.txt':

Metadata:

encoder : Lavf57.48.102

Stream mapping: Press [q] to stop, ? for help size= 0kB time=-577014:32:22.77 bitrate=N/A speed=N/A video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown Output file is empty, nothing was encoded

However; I am not able to get HDR related metadata:

root@kizil105:/home/admintv# cat metadata.txt ;FFMETADATA1 encoder=Lavf57.48.102

Mediainfo output for exodus_hdr.mp4:

General ID : 1 (0x1) Complete name : C:\Users\Ali KIZIL\Desktop\exodus_hdr.mp4 Format : MPEG-TS File size : 11.3 MiB Duration : 2 s 83 ms Overall bit rate mode : Variable Overall bit rate : 45.4 Mb/s

Video ID : 256 (0x100) Menu ID : 1 (0x1) Format : HEVC Format/Info? : High Efficiency Video Coding Format profile : Main 10@L5.1@High Codec ID : 36 Duration : 2 s 83 ms Width : 3 840 pixels Height : 2 160 pixels Display aspect ratio : 16:9 Frame rate : 23.976 (24000/1001) FPS Color space : YUV Chroma subsampling : 4:2:0 (Type 2) Bit depth : 10 bits Writing library : ATEME Titan KFE 3.7.0 (4.7.0.2002) Color range : Limited Color primaries : BT.2020 Transfer characteristics : SMPTE ST 2084 Matrix coefficients : BT.2020 non-constant Mastering display color primaries : R: x=0.680000 y=0.320000, G: x=0.265000 y=0.690000, B: x=0.150000 y=0.060000, White point: x=0.312700 y=0.329000 Mastering display luminance : min: 0.0200 cd/m2, max: 1200.0000 cd/m2

Audio ID : 257 (0x101) Menu ID : 1 (0x1) Format : AAC Format/Info? : Advanced Audio Codec Format version : Version 4 Format profile : LC Muxing mode : ADTS Codec ID : 15 Duration : 1 s 877 ms Bit rate mode : Variable Channel(s) : 6 channels Channel positions : Front: L C R, Side: L R, LFE Sampling rate : 48.0 kHz Frame rate : 46.875 FPS (1024 spf) Compression mode : Lossy

Menu ID : 4096 (0x1000) Menu ID : 1 (0x1) List : 256 (0x100) (HEVC) / 257 (0x101) (AAC) Service name : Service01 Service provider : FFmpeg Service type : digital television

HRD Metadata part is:

Mastering display color primaries : R: x=0.680000 y=0.320000, G: x=0.265000 y=0.690000, B: x=0.150000 y=0.060000, White point: x=0.312700 y=0.329000 Mastering display luminance : min: 0.0200 cd/m2, max: 1200.0000 cd/m2

It would be nice to import this metadata info back to encode such like;

/opt/ffmpeg/bin/ffmpeg -loglevel verbose-re -i /media/usb0/4k_sampels/Exodus_UHD_HDR_Exodus_draft.mp4 -i metadata.txt -map_metadata 1 -c:v:0 nvenc_hevc -preset llhq -profile:v:0 main10 -vb 8000k -c:a:0 mp2 -b:a:0 384k -f mpegts -color_range 1 -color_trc smpte2084 -color_primaries bt2020 -colorspace 9 -y /tmp/out.ts

for HDR transcoding.

Additional note:

Below command also does not add metadat to transcoding:

/opt/ffmpeg/bin/ffmpeg -loglevel verbose-re -i /media/usb0/4k_sampels/Exodus_UHD_HDR_Exodus_draft.mp4 -c:v:0 nvenc_hevc -preset llhq -profile:v:0 main10 -vb 8000k -c:a:0 mp2 -b:a:0 384k -f mpegts -metadata:s:v:0 master-display="G(13248,34499)B(7500,2999)R(34000,15999)WP(15700,17550)L(10000000,100)" -color_range 1 -color_trc smpte2084 -color_primaries bt2020 -colorspace 9 -y /tmp/out.ts Kind Regards,


          #4996: QuickView Pro not respecting section 4 of the GNU LGPL   

The binary archive can be taken from ftp://ftp.multimediaware.com/qv/ Just in case, its contents:

Archive: qvpro260.zip Length Date Time Name


398 2014-11-15 02:00 file_id.diz 1178472 2014-11-15 02:00 qv.exe 38484 2014-11-15 02:00 qv.txt 42594 2014-11-15 02:00 qv.dok 2928 2014-11-15 02:00 changes.txt 1966 2014-11-15 02:00 register.txt 2107 2014-11-15 02:00 register.dok


1266949 7 files

Just a few words from http://www.multimediaware.com/qv/qvdoc.htm:

This product uses parts of FFmpeg, Copyright (c) Fabrice Bellard. FFmpeg is available under the terms of the GNU Lesser General Public License Source code of FFmpeg can be downloaded from http://ffmpeg.org or is available upon request. The FFmpeg files were used without modification in this product.

I would say that this is not enough and the product ignores all requirements from the fourth section of the GNU LGPL v2.1.


          #2491: audio stream start_time & duration overspan when encoding & split a video (-ss, -t)   

I'm trying to extract and encode a segment of a video with a given start time and duration.

Until version 0.10.7 the start time and duration of the extracted audio stream were almost accurate compared to the video stream.

Since version 0.11.3 additional audio packets are appended that lies outside of the requested duration -> the audio stream is 'much' longer than the video stream compared to the result with version 0.10.7.

Since version 1.1.4 the behavior changed again, the audio packets no longer starts with pts_time 0.0, instead they got an offset. This offset will also be added to the regular duration of the last audio packet. Technically the values belongs to the requested timespan: first_packet_pts_time + packet_duration > -ss <start_time> last packet_pts_time < -ss <start_time> + -t <duration> However the output of version 0.10.7 is more logical...

Why making a fuss about 20~50ms additional difference between the stream durations? The higher accuracy (like in version 0.10.7) is required when you want to concatenate multiple segments, where different stream start times & durations playing an important role to prevent 'gaps' in the video stream (-> explained here)


shell script for testing:

#!/bin/sh
cd "$(dirname "$0")"
# extract and encode segments with different ffmpeg versions
ffmpeg-0.10.7 -i "Agnis Philosophy.mp4" -strict experimental -f mp4 -c:a aac -c:v mpeg4 -ss 00:00:11.000 -t 00:00:12.666 -y "agnis-part_0.10.7.mp4"
ffmpeg-0.11.3 -i "Agnis Philosophy.mp4" -strict experimental -f mp4 -c:a aac -c:v mpeg4 -ss 00:00:11.000 -t 00:00:12.666 -y "agnis-part_0.11.3.mp4"
ffmpeg-1.0.6 -i "Agnis Philosophy.mp4" -strict experimental -f mp4 -c:a aac -c:v mpeg4 -ss 00:00:11.000 -t 00:00:12.666 -y "agnis-part_1.0.6.mp4"
ffmpeg-1.1.4 -i "Agnis Philosophy.mp4" -strict experimental -f mp4 -c:a aac -c:v mpeg4 -ss 00:00:11.000 -t 00:00:12.666 -y "agnis-part_1.1.4.mp4"
ffmpeg-1.2 -i "Agnis Philosophy.mp4" -strict experimental -f mp4 -c:a aac -c:v mpeg4 -ss 00:00:11.000 -t 00:00:12.666 -y "agnis-part_1.2.mp4"
# extract stream infos from each encoded segment
ffprobe -show_streams 'agnis-part_0.10.7.mp4' | grep 'STREAM\|start_time\|duration\|nb_frames' > 'info_0.10.7.txt'
ffprobe -show_streams 'agnis-part_0.11.3.mp4' | grep 'STREAM\|start_time\|duration\|nb_frames' > 'info_0.11.3.txt'
ffprobe -show_streams 'agnis-part_1.0.6.mp4' | grep 'STREAM\|start_time\|duration\|nb_frames' > 'info_1.0.6.txt'
ffprobe -show_streams 'agnis-part_1.1.4.mp4' | grep 'STREAM\|start_time\|duration\|nb_frames' > 'info_1.1.4.txt'
ffprobe -show_streams 'agnis-part_1.2.mp4' | grep 'STREAM\|start_time\|duration\|nb_frames' > 'info_1.2.txt'
# extract packet infos from each encoded segment
ffprobe -show_packets 'agnis-part_0.10.7.mp4' | grep 'PACKET\|codec_type\|pts_time\|dts_time\|duration_time' > 'packets_0.10.7.txt'
ffprobe -show_packets 'agnis-part_0.11.3.mp4' | grep 'PACKET\|codec_type\|pts_time\|dts_time\|duration_time' > 'packets_0.11.3.txt'
ffprobe -show_packets 'agnis-part_1.0.6.mp4' | grep 'PACKET\|codec_type\|pts_time\|dts_time\|duration_time' > 'packets_1.0.6.txt'
ffprobe -show_packets 'agnis-part_1.1.4.mp4' | grep 'PACKET\|codec_type\|pts_time\|dts_time\|duration_time' > 'packets_1.1.4.txt'
ffprobe -show_packets 'agnis-part_1.2.mp4' | grep 'PACKET\|codec_type\|pts_time\|dts_time\|duration_time' > 'packets_1.2.txt'

Taking a look into some selected stream infos of each encoded segment from ffprobe. You can notice the 'evolution' of the audio stream (first stream is video, second stream is audio):

ffmpeg-0.9.2 & ffmpeg-0.10.7 ffmpeg-0.11.3 & ffmpeg-1.0.6 fmpeg-1.1.4 & ffmpeg-1.2
[STREAM][STREAM][STREAM]
start_time=0.000000start_time=0.000000start_time=0.000000
duration=12.666667duration=12.666667duration=12.666667
nb_frames=380nb_frames=380nb_frames=380
[/STREAM][/STREAM][/STREAM]
[STREAM][STREAM][STREAM]
start_time=0.000000start_time=0.000000start_time=-0.016961
duration=12.678095duration=12.701315duration=12.701315
nb_frames=546nb_frames=547nb_frames=547
[/STREAM][/STREAM][/STREAM]

Source Video:

Results:

*not sure if this behavior is a defect or is wanted by the developers, so setting the ticket to: enhancement with minor priority


          #4833: Long metadata truncated   

Summary of the bug: For Apple / Quicktime files ffmpeg can handle metadata for the Lyrics ("©lyr" tag ID) and Long_Description (ldes tag ID; referred to by ffmpeg as "Synopsis") tags, both of which are able to exceed the standard 255 character limit for metadata. When ffmpeg encodes or adds them, however, it imposes a new limit of slightly less than 1024 characters, truncating as needed. For most instances this is not a problem, but for some files the tags may exceed this new limit. Is it possible to remove this length limit for these two tags?

How to reproduce (files test1.m4a and test1.txt hopefully will be attached for the sake of convenience):

ffmpeg -i test1.m4a -i test1.txt -map_metadata 1 -codec copy test2.m4a
ffmpeg -i test2.m4a -f ffmetadata test2.txt
compare test1.txt test2.txt

Patches should be submitted to the ffmpeg-devel mailing list and not this bug tracker.


          #4845: concatenate dynamic chunks   

The ffmpeg docs for concat lists the following way ffmpeg -f concat -i mylist.txt -c copy output

The mylist.txt file contains file like file '/path/to/file1' file '/path/to/file2' file '/path/to/file3'

What I am looking is for a way to do this concat in a on-the-fly way where the number of files can keep increasing in realtime, for example in livestreaming I will be sending chunks of video (mp4 files) of 10 seconds each to my server and want to concat/stitch those incoming chunks together to output to a RTMP/RTSP stream (for livestreaming)

If concat is not the proper way to do this, please suggest alternatives.

Really interested to know how people use the above concept (I hope its how it works) to send video chunks from mobile device for livestreaming


          #5686: Concat Demuxer doesn't work, Concat Protocol does, but too many files!   

Hi!

Using FFmpeg N-80892-g2a8dadb, 32 bit

I have to join many video segments.

Concat demuxer doesn't work. First segment (0.mp4) contains header information that rest of segments don't contain (1.mp4 2.mp4 etc.).

Concat demuxer returns error:

[mov,mp4,m4a,3gp,3g2,mj2 @ 03965900] could not find corresponding trex [mov,mp4,m4a,3gp,3g2,mj2 @ 03965900] error reading header [concat @ 003e2320] Impossible to open '1.mp4'

Concat protocol works without errors.

However the string size limitation prevents entering the whole command string with all of the video segments. Need to use Concat Protocol, but with a text file so I can specify all segments.

Issue 4860 requested this; it was closed with "Won't fix" and "Use demuxer."

But demuxer doesn't work in this case!

To reproduce:

Attached 5 segments to this ticket, including first 0.mp4 and video.txt file.

Run Demuxer:

ffmpeg.exe -f concat -i "video.txt" -c copy "video.mp4"

Get above error.

Run Protocol:

ffmpeg -i "concat:0.mp4|1.mp4|2.mp4|3.mp4|4.mp4" -c copy video.mp4

Works.

Limited by command string size.

:(


          #3369: Copying from MPEG TS to MKV fails with "Can't write packet with unknown timestamp"   

When copying from a DVB recording of a channel, to change the container type from MPEG TS to Matroska, the copy aborts as soon as it encounters a missing timestamp with the message:

"Can't write packet with unknown timestamp"

The equivalent operation to change the container to MP4 merely reports a warning message and continues encoding to the end of the file:

"pts has no value"

How to reproduce:

% ffmpeg-2014-02-03 -y  -i TestFiles/BBC3HD_Sherlock_Cut.mpg -vcodec copy -acodec copy  -map 0:0 -map 0:15 -map 0:1 test.mkv
ffmpeg version 2.1.git Copyright (c) 2000-2014 the FFmpeg developers
  built on Feb  3 2014 17:36:04 with gcc 4.3.2 (Debian 4.3.2-1.1)
  configuration: --enable-libdc1394 --prefix=/usr --extra-cflags='-Wall -g ' --enable-shared --enable-libmp3lame --enable-gpl --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --disable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --disable-libspeex --enable-nonfree --disable-stripping --enable-avfilter --enable-libfreetype --disable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-libvpx --enable-librtmp --extra-libs=-lgcrypt --disable-altivec --disable-armv5te --disable-armv6 --disable-vis --enable-libzvbi --extra-cflags='-I/home/justin/ffmpeg/x264-2014-01-04/ -I/home/justin/ffmpeg/xvidcore-2014-01-04/src/ -I/home/justin/ffmpeg/libogg-1.3.1/include -I/home/justin/ffmpeg/libtheora-1.1.1/include -I/home/justin/ffmpeg/libvorbis-1.3.3/include -I/home/justin/ffmpeg/libvpx-2014-01-12/libvpx' --extra-ldflags='-L/home/justin/ffmpeg/x264-2014-01-04/ -L/home/justin/ffmpeg/xvidcore-2014-01-04/build/generic/=build/ -L/home/justin/ffmpeg/libogg-1.3.1/src/.libs/ -L/home/justin/ffmpeg/libtheora-1.1.1/lib/.libs/ -L/home/justin/ffmpeg/libvorbis-1.3.3/lib/.libs/ -L/home/justin/ffmpeg/libvpx-2014-01-12/libvpx' --extra-libs=-ldl
  libavutil      52. 63.100 / 52. 63.100
  libavcodec     55. 49.101 / 55. 49.101
  libavformat    55. 29.100 / 55. 29.100
  libavdevice    55.  7.100 / 55.  7.100
  libavfilter     4.  1.102 /  4.  1.102
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
[h264 @ 0x93bdc00] non-existing PPS referenced
[h264 @ 0x93bdc00] non-existing PPS 0 referenced
[h264 @ 0x93bdc00] decode_slice_header error
[h264 @ 0x93bdc00] no frame!
[h264 @ 0x93bdc00] non-existing PPS referenced
[h264 @ 0x93bdc00] non-existing PPS 0 referenced
[h264 @ 0x93bdc00] decode_slice_header error
[h264 @ 0x93bdc00] no frame!
[h264 @ 0x93bdc00] non-existing PPS referenced
[h264 @ 0x93bdc00] non-existing PPS 0 referenced
[h264 @ 0x93bdc00] decode_slice_header error
[h264 @ 0x93bdc00] no frame!
[h264 @ 0x93bdc00] non-existing PPS referenced
[h264 @ 0x93bdc00] non-existing PPS 0 referenced
[h264 @ 0x93bdc00] decode_slice_header error
[h264 @ 0x93bdc00] no frame!
[h264 @ 0x93bdc00] non-existing PPS referenced
[h264 @ 0x93bdc00] non-existing PPS 0 referenced
[h264 @ 0x93bdc00] decode_slice_header error
[h264 @ 0x93bdc00] no frame!
[h264 @ 0x93bdc00] non-existing PPS referenced
[h264 @ 0x93bdc00] non-existing PPS 0 referenced
[h264 @ 0x93bdc00] decode_slice_header error
[h264 @ 0x93bdc00] no frame!
[h264 @ 0x93bdc00] non-existing PPS referenced
[h264 @ 0x93bdc00] non-existing PPS 0 referenced
[h264 @ 0x93bdc00] decode_slice_header error
[h264 @ 0x93bdc00] no frame!
[h264 @ 0x93bdc00] non-existing PPS referenced
[h264 @ 0x93bdc00] non-existing PPS 0 referenced
[h264 @ 0x93bdc00] decode_slice_header error
[h264 @ 0x93bdc00] no frame!
[h264 @ 0x93bdc00] non-existing PPS referenced
[h264 @ 0x93bdc00] non-existing PPS 0 referenced
[h264 @ 0x93bdc00] decode_slice_header error
[h264 @ 0x93bdc00] no frame!
[h264 @ 0x93bdc00] non-existing PPS referenced
[h264 @ 0x93bdc00] non-existing PPS 0 referenced
[h264 @ 0x93bdc00] decode_slice_header error
[h264 @ 0x93bdc00] no frame!
[h264 @ 0x93bdc00] non-existing PPS referenced
[h264 @ 0x93bdc00] non-existing PPS 0 referenced
[h264 @ 0x93bdc00] decode_slice_header error
[h264 @ 0x93bdc00] no frame!
[h264 @ 0x93bdc00] non-existing PPS referenced
[h264 @ 0x93bdc00] non-existing PPS 0 referenced
[h264 @ 0x93bdc00] decode_slice_header error
[h264 @ 0x93bdc00] no frame!
[h264 @ 0x93bdc00] non-existing PPS referenced
[h264 @ 0x93bdc00] non-existing PPS 0 referenced
[h264 @ 0x93bdc00] decode_slice_header error
[h264 @ 0x93bdc00] no frame!
[h264 @ 0x93bdc00] non-existing PPS referenced
[h264 @ 0x93bdc00] non-existing PPS 0 referenced
[h264 @ 0x93bdc00] decode_slice_header error
[h264 @ 0x93bdc00] no frame!
[h264 @ 0x93bdc00] non-existing PPS referenced
[h264 @ 0x93bdc00] non-existing PPS 0 referenced
[h264 @ 0x93bdc00] decode_slice_header error
[h264 @ 0x93bdc00] no frame!
[h264 @ 0x93bdc00] non-existing PPS referenced
[h264 @ 0x93bdc00] non-existing PPS 0 referenced
[h264 @ 0x93bdc00] decode_slice_header error
[h264 @ 0x93bdc00] no frame!
[h264 @ 0x93bdc00] non-existing PPS referenced
[h264 @ 0x93bdc00] non-existing PPS 0 referenced
[h264 @ 0x93bdc00] decode_slice_header error
[h264 @ 0x93bdc00] no frame!
[h264 @ 0x93bdc00] non-existing PPS referenced
[h264 @ 0x93bdc00] non-existing PPS 0 referenced
[h264 @ 0x93bdc00] decode_slice_header error
[h264 @ 0x93bdc00] no frame!
[h264 @ 0x93bdc00] non-existing PPS referenced
[h264 @ 0x93bdc00] non-existing PPS 0 referenced
[h264 @ 0x93bdc00] decode_slice_header error
[h264 @ 0x93bdc00] no frame!
[h264 @ 0x93bdc00] non-existing PPS referenced
[h264 @ 0x93bdc00] non-existing PPS 0 referenced
[h264 @ 0x93bdc00] decode_slice_header error
[h264 @ 0x93bdc00] no frame!
[h264 @ 0x93bdc00] non-existing PPS referenced
[h264 @ 0x93bdc00] non-existing PPS 0 referenced
[h264 @ 0x93bdc00] decode_slice_header error
[h264 @ 0x93bdc00] no frame!
[mpegts @ 0x93b9de0] Stream #3: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x93b9de0] Stream #4: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x93b9de0] Stream #5: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x93b9de0] Stream #6: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x93b9de0] Stream #7: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x93b9de0] Stream #8: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x93b9de0] Stream #9: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x93b9de0] Stream #10: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x93b9de0] Stream #11: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x93b9de0] Stream #12: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x93b9de0] Stream #13: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x93b9de0] Stream #14: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x93b9de0] Stream #16: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x93b9de0] Stream #17: not enough frames to estimate rate; consider increasing probesize
[NULL @ 0x93bf520] start time is not set in estimate_timings_from_pts
[NULL @ 0x93bfd80] start time is not set in estimate_timings_from_pts
[NULL @ 0x93c05e0] start time is not set in estimate_timings_from_pts
[NULL @ 0x93c16e0] start time is not set in estimate_timings_from_pts
[NULL @ 0x93c1f40] start time is not set in estimate_timings_from_pts
[NULL @ 0x93d48e0] start time is not set in estimate_timings_from_pts
[NULL @ 0x93d5100] start time is not set in estimate_timings_from_pts
[NULL @ 0x93d5960] start time is not set in estimate_timings_from_pts
[NULL @ 0x93d61c0] start time is not set in estimate_timings_from_pts
[NULL @ 0x93d6a20] start time is not set in estimate_timings_from_pts
[NULL @ 0x93d72c0] start time is not set in estimate_timings_from_pts
[NULL @ 0x93d8400] start time is not set in estimate_timings_from_pts
[NULL @ 0x93d8d00] start time is not set in estimate_timings_from_pts
[mpegts @ 0x93b9de0] PES packet size mismatch
    Last message repeated 1 times
[mpegts @ 0x93b9de0] Could not find codec parameters for stream 3 (Unknown: none ([11][0][0][0] / 0x000B)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x93b9de0] Could not find codec parameters for stream 4 (Unknown: none ([11][0][0][0] / 0x000B)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x93b9de0] Could not find codec parameters for stream 5 (Unknown: none ([11][0][0][0] / 0x000B)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x93b9de0] Could not find codec parameters for stream 7 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x93b9de0] Could not find codec parameters for stream 8 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x93b9de0] Could not find codec parameters for stream 9 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x93b9de0] Could not find codec parameters for stream 10 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x93b9de0] Could not find codec parameters for stream 11 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x93b9de0] Could not find codec parameters for stream 12 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x93b9de0] Could not find codec parameters for stream 13 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x93b9de0] Could not find codec parameters for stream 14 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x93b9de0] Could not find codec parameters for stream 16 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x93b9de0] Could not find codec parameters for stream 17 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, mpegts, from 'TestFiles/BBC3HD_Sherlock_Cut.mpg':
  Duration: 00:00:14.26, start: 39086.002622, bitrate: 11765 kb/s
  Program 1
    Stream #0:0[0x15e0]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x15e2](NAR): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 256 kb/s
    Stream #0:2[0x15e3](eng,eng): Subtitle: dvb_teletext ([6][0][0][0] / 0x0006), 492x250
    Stream #0:3[0xf06]: Unknown: none ([11][0][0][0] / 0x000B)
    Stream #0:4[0xf07]: Unknown: none ([11][0][0][0] / 0x000B)
    Stream #0:5[0xf09]: Unknown: none ([11][0][0][0] / 0x000B)
    Stream #0:6[0x15e4](eng): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
    Stream #0:7[0xf00]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:8[0xf01]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:9[0xf02]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:10[0xf03]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:11[0xf04]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:12[0x911]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:13[0x912]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:14[0x913]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:15[0x15e1](eng): Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, stereo, fltp, 192 kb/s
    Stream #0:16[0x15e5]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:17[0x15e6]: Unknown: none ([5][0][0][0] / 0x0005)
Output #0, matroska, to 'test.mkv':
  Metadata:
    encoder         : Lavf55.29.100
    Stream #0:0: Video: h264 (H264 / 0x34363248), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 25 fps, 1k tbn, 90k tbc
    Stream #0:1(eng): Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, stereo, 192 kb/s
    Stream #0:2(NAR): Audio: mp2 (P[0][0][0] / 0x0050), 48000 Hz, stereo, 256 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:15 -> #0:1 (copy)
  Stream #0:1 -> #0:2 (copy)
Press [q] to stop, [?] for help
[matroska @ 0x93d9dc0] Can't write packet with unknown timestamp
av_interleaved_write_frame(): Invalid argument
[matroska @ 0x93d9dc0] Can't write packet with unknown timestamp
frame=  173 fps=0.0 q=-1.0 Lsize=    6494kB time=00:00:08.06 bitrate=6594.1kbits/s
video:7021kB audio:395kB subtitle:0 data:0 global headers:0kB muxing overhead -12.425578%

Using '-fflags +genpts' as recommended in some other reports has no effect on the output, thus:

% ffmpeg-2014-02-03 -y -fflags +genpts -i TestFiles/BBC3HD_Sherlock_Cut.mpg -vcodec copy -acodec copy  -map 0:0 -map 0:15 -map 0:1 test.mkv
ffmpeg version 2.1.git Copyright (c) 2000-2014 the FFmpeg developers
  built on Feb  3 2014 17:36:04 with gcc 4.3.2 (Debian 4.3.2-1.1)
  configuration: --enable-libdc1394 --prefix=/usr --extra-cflags='-Wall -g ' --enable-shared --enable-libmp3lame --enable-gpl --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --disable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --disable-libspeex --enable-nonfree --disable-stripping --enable-avfilter --enable-libfreetype --disable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-libvpx --enable-librtmp --extra-libs=-lgcrypt --disable-altivec --disable-armv5te --disable-armv6 --disable-vis --enable-libzvbi --extra-cflags='-I/home/justin/ffmpeg/x264-2014-01-04/ -I/home/justin/ffmpeg/xvidcore-2014-01-04/src/ -I/home/justin/ffmpeg/libogg-1.3.1/include -I/home/justin/ffmpeg/libtheora-1.1.1/include -I/home/justin/ffmpeg/libvorbis-1.3.3/include -I/home/justin/ffmpeg/libvpx-2014-01-12/libvpx' --extra-ldflags='-L/home/justin/ffmpeg/x264-2014-01-04/ -L/home/justin/ffmpeg/xvidcore-2014-01-04/build/generic/=build/ -L/home/justin/ffmpeg/libogg-1.3.1/src/.libs/ -L/home/justin/ffmpeg/libtheora-1.1.1/lib/.libs/ -L/home/justin/ffmpeg/libvorbis-1.3.3/lib/.libs/ -L/home/justin/ffmpeg/libvpx-2014-01-12/libvpx' --extra-libs=-ldl
  libavutil      52. 63.100 / 52. 63.100
  libavcodec     55. 49.101 / 55. 49.101
  libavformat    55. 29.100 / 55. 29.100
  libavdevice    55.  7.100 / 55.  7.100
  libavfilter     4.  1.102 /  4.  1.102
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
[h264 @ 0x8549c20] non-existing PPS referenced
[h264 @ 0x8549c20] non-existing PPS 0 referenced
[h264 @ 0x8549c20] decode_slice_header error
[h264 @ 0x8549c20] no frame!
[h264 @ 0x8549c20] non-existing PPS referenced
[h264 @ 0x8549c20] non-existing PPS 0 referenced
[h264 @ 0x8549c20] decode_slice_header error
[h264 @ 0x8549c20] no frame!
[h264 @ 0x8549c20] non-existing PPS referenced
[h264 @ 0x8549c20] non-existing PPS 0 referenced
[h264 @ 0x8549c20] decode_slice_header error
[h264 @ 0x8549c20] no frame!
[h264 @ 0x8549c20] non-existing PPS referenced
[h264 @ 0x8549c20] non-existing PPS 0 referenced
[h264 @ 0x8549c20] decode_slice_header error
[h264 @ 0x8549c20] no frame!
[h264 @ 0x8549c20] non-existing PPS referenced
[h264 @ 0x8549c20] non-existing PPS 0 referenced
[h264 @ 0x8549c20] decode_slice_header error
[h264 @ 0x8549c20] no frame!
[h264 @ 0x8549c20] non-existing PPS referenced
[h264 @ 0x8549c20] non-existing PPS 0 referenced
[h264 @ 0x8549c20] decode_slice_header error
[h264 @ 0x8549c20] no frame!
[h264 @ 0x8549c20] non-existing PPS referenced
[h264 @ 0x8549c20] non-existing PPS 0 referenced
[h264 @ 0x8549c20] decode_slice_header error
[h264 @ 0x8549c20] no frame!
[h264 @ 0x8549c20] non-existing PPS referenced
[h264 @ 0x8549c20] non-existing PPS 0 referenced
[h264 @ 0x8549c20] decode_slice_header error
[h264 @ 0x8549c20] no frame!
[h264 @ 0x8549c20] non-existing PPS referenced
[h264 @ 0x8549c20] non-existing PPS 0 referenced
[h264 @ 0x8549c20] decode_slice_header error
[h264 @ 0x8549c20] no frame!
[h264 @ 0x8549c20] non-existing PPS referenced
[h264 @ 0x8549c20] non-existing PPS 0 referenced
[h264 @ 0x8549c20] decode_slice_header error
[h264 @ 0x8549c20] no frame!
[h264 @ 0x8549c20] non-existing PPS referenced
[h264 @ 0x8549c20] non-existing PPS 0 referenced
[h264 @ 0x8549c20] decode_slice_header error
[h264 @ 0x8549c20] no frame!
[h264 @ 0x8549c20] non-existing PPS referenced
[h264 @ 0x8549c20] non-existing PPS 0 referenced
[h264 @ 0x8549c20] decode_slice_header error
[h264 @ 0x8549c20] no frame!
[h264 @ 0x8549c20] non-existing PPS referenced
[h264 @ 0x8549c20] non-existing PPS 0 referenced
[h264 @ 0x8549c20] decode_slice_header error
[h264 @ 0x8549c20] no frame!
[h264 @ 0x8549c20] non-existing PPS referenced
[h264 @ 0x8549c20] non-existing PPS 0 referenced
[h264 @ 0x8549c20] decode_slice_header error
[h264 @ 0x8549c20] no frame!
[h264 @ 0x8549c20] non-existing PPS referenced
[h264 @ 0x8549c20] non-existing PPS 0 referenced
[h264 @ 0x8549c20] decode_slice_header error
[h264 @ 0x8549c20] no frame!
[h264 @ 0x8549c20] non-existing PPS referenced
[h264 @ 0x8549c20] non-existing PPS 0 referenced
[h264 @ 0x8549c20] decode_slice_header error
[h264 @ 0x8549c20] no frame!
[h264 @ 0x8549c20] non-existing PPS referenced
[h264 @ 0x8549c20] non-existing PPS 0 referenced
[h264 @ 0x8549c20] decode_slice_header error
[h264 @ 0x8549c20] no frame!
[h264 @ 0x8549c20] non-existing PPS referenced
[h264 @ 0x8549c20] non-existing PPS 0 referenced
[h264 @ 0x8549c20] decode_slice_header error
[h264 @ 0x8549c20] no frame!
[h264 @ 0x8549c20] non-existing PPS referenced
[h264 @ 0x8549c20] non-existing PPS 0 referenced
[h264 @ 0x8549c20] decode_slice_header error
[h264 @ 0x8549c20] no frame!
[h264 @ 0x8549c20] non-existing PPS referenced
[h264 @ 0x8549c20] non-existing PPS 0 referenced
[h264 @ 0x8549c20] decode_slice_header error
[h264 @ 0x8549c20] no frame!
[h264 @ 0x8549c20] non-existing PPS referenced
[h264 @ 0x8549c20] non-existing PPS 0 referenced
[h264 @ 0x8549c20] decode_slice_header error
[h264 @ 0x8549c20] no frame!
[mpegts @ 0x8545e20] Stream #3: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x8545e20] Stream #4: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x8545e20] Stream #5: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x8545e20] Stream #6: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x8545e20] Stream #7: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x8545e20] Stream #8: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x8545e20] Stream #9: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x8545e20] Stream #10: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x8545e20] Stream #11: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x8545e20] Stream #12: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x8545e20] Stream #13: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x8545e20] Stream #14: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x8545e20] Stream #16: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x8545e20] Stream #17: not enough frames to estimate rate; consider increasing probesize
[NULL @ 0x854b5c0] start time is not set in estimate_timings_from_pts
[NULL @ 0x854be20] start time is not set in estimate_timings_from_pts
[NULL @ 0x854c6e0] start time is not set in estimate_timings_from_pts
[NULL @ 0x854d7a0] start time is not set in estimate_timings_from_pts
[NULL @ 0x854e000] start time is not set in estimate_timings_from_pts
[NULL @ 0x8560960] start time is not set in estimate_timings_from_pts
[NULL @ 0x85611c0] start time is not set in estimate_timings_from_pts
[NULL @ 0x8561a20] start time is not set in estimate_timings_from_pts
[NULL @ 0x8562280] start time is not set in estimate_timings_from_pts
[NULL @ 0x8562ae0] start time is not set in estimate_timings_from_pts
[NULL @ 0x8563340] start time is not set in estimate_timings_from_pts
[NULL @ 0x8564400] start time is not set in estimate_timings_from_pts
[NULL @ 0x8564d00] start time is not set in estimate_timings_from_pts
[mpegts @ 0x8545e20] PES packet size mismatch
    Last message repeated 1 times
[mpegts @ 0x8545e20] Could not find codec parameters for stream 3 (Unknown: none ([11][0][0][0] / 0x000B)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x8545e20] Could not find codec parameters for stream 4 (Unknown: none ([11][0][0][0] / 0x000B)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x8545e20] Could not find codec parameters for stream 5 (Unknown: none ([11][0][0][0] / 0x000B)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x8545e20] Could not find codec parameters for stream 7 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x8545e20] Could not find codec parameters for stream 8 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x8545e20] Could not find codec parameters for stream 9 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x8545e20] Could not find codec parameters for stream 10 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x8545e20] Could not find codec parameters for stream 11 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x8545e20] Could not find codec parameters for stream 12 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x8545e20] Could not find codec parameters for stream 13 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x8545e20] Could not find codec parameters for stream 14 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x8545e20] Could not find codec parameters for stream 16 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x8545e20] Could not find codec parameters for stream 17 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, mpegts, from 'TestFiles/BBC3HD_Sherlock_Cut.mpg':
  Duration: 00:00:14.26, start: 39086.002622, bitrate: 11765 kb/s
  Program 1
    Stream #0:0[0x15e0]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x15e2](NAR): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 256 kb/s
    Stream #0:2[0x15e3](eng,eng): Subtitle: dvb_teletext ([6][0][0][0] / 0x0006), 492x250
    Stream #0:3[0xf06]: Unknown: none ([11][0][0][0] / 0x000B)
    Stream #0:4[0xf07]: Unknown: none ([11][0][0][0] / 0x000B)
    Stream #0:5[0xf09]: Unknown: none ([11][0][0][0] / 0x000B)
    Stream #0:6[0x15e4](eng): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
    Stream #0:7[0xf00]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:8[0xf01]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:9[0xf02]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:10[0xf03]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:11[0xf04]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:12[0x911]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:13[0x912]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:14[0x913]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:15[0x15e1](eng): Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, stereo, fltp, 192 kb/s
    Stream #0:16[0x15e5]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:17[0x15e6]: Unknown: none ([5][0][0][0] / 0x0005)
Output #0, matroska, to 'test.mkv':
  Metadata:
    encoder         : Lavf55.29.100
    Stream #0:0: Video: h264 (H264 / 0x34363248), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 25 fps, 1k tbn, 90k tbc
    Stream #0:1(eng): Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, stereo, 192 kb/s
    Stream #0:2(NAR): Audio: mp2 (P[0][0][0] / 0x0050), 48000 Hz, stereo, 256 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:15 -> #0:1 (copy)
  Stream #0:1 -> #0:2 (copy)
Press [q] to stop, [?] for help
[matroska @ 0x8565aa0] Can't write packet with unknown timestamp
av_interleaved_write_frame(): Invalid argument
[matroska @ 0x8565aa0] Can't write packet with unknown timestamp
frame=  173 fps=0.0 q=-1.0 Lsize=    6494kB time=00:00:08.06 bitrate=6594.1kbits/s
video:7021kB audio:395kB subtitle:0 data:0 global headers:0kB muxing overhead -12.425578%

Example file for problem, and the related logs can be found here:

http://usenet.gerph.org/FFMPEG/Copy-BBC-HD-To-MKV-Fails/

  • BBC3HD_Sherlock_Cut.mpg
    • Example file.
  • ffmpeg-fileinfo-2014-02-03.txt
    • Output from "ffmpeg -i" from snapshot as at 2014-02-03.
  • ffmpeg-fileinfo.txt
    • Output from "ffmpeg -i" from 2.1.3.
  • ffmpeg-mkv-copy-fails-2014-02-03+genpts.txt
    • Output from "ffmpeg -fflags +genpts ... test.mkv" from snapshot as at 2014-02-03.
  • ffmpeg-mkv-copy-fails-2014-02-03.txt
    • Output from "ffmpeg ... test.mkv" from snapshot as at 2014-02-03.
  • ffmpeg-mkv-copy-fails.txt
    • Output from "ffmpeg ... test.mkv" from 2.1.3.
  • ffmpeg-mp4-copy-works-2014-02-03.txt
    • Output from "ffmpeg ... test.mp4" from snapshot as at 2014-02-03; for comparison of a working conversion.
  • ffmpeg-mp4-copy-works.txt
    • Output from "ffmpeg ... test.mp4" from 2.1.3; for comparison of a working conversion.

Tested on 2.1.1, 2.1.3 and snapshot from 2014-02-03. All fail in the manner described. The '-fflags +genpts' option has no effect on any of these versions.


          #3664: ffprobe can't read packet DTS/PTS (regression since removal of dts_sync_point code)   

ffprobe built from latest git head can't read out all DTS/PTS. attached txt are output by calling ffprobe -show_packets -select_streams v INPUT

hxuanyu@ubuntu:~/Downloads/ffmpeg$ ./ffprobe -show_packets -select_streams v v_h264_30_yuv420p_dar30x17_0.mpeg >latest.txt
ffprobe version N-63381-g64bf845 Copyright (c) 2007-2014 the FFmpeg developers
  built on May 23 2014 16:39:38 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
  configuration: --enable-static --disable-shared --enable-small
  libavutil      52. 86.100 / 52. 86.100
  libavcodec     55. 63.100 / 55. 63.100
  libavformat    55. 40.100 / 55. 40.100
  libavdevice    55. 13.101 / 55. 13.101
  libavfilter     4.  5.100 /  4.  5.100
  libswscale      2.  6.100 /  2.  6.100
  libswresample   0. 19.100 /  0. 19.100
Input #0, mpeg, from 'v_h264_30_yuv420p_dar30x17_0.mpeg':
  Duration: 00:00:06.01, start: 1.000000, bitrate: 703 kb/s
    Stream #0:0[0x1e0]: Video: h264, yuv420p, 480x272 [SAR 1:1 DAR 30:17], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc

but ffprobe built from ffmpeg 2.0.1 could read out all DTS/PTS


          #2162: ffmpeg does not create PS3 compatible m2ts files   

I have some movies (mpeg2 video, AC3 audio) that I would like to convert to m2ts. If I do this with tsMuxerGUI, it plays like a charm on my PS3. If I try this with ffmpeg the PS3 does never recognize the audio track. I've used "ffmpeg -i sample.vob -acodec copy -vcodec copy sample.m2ts"

Sample files were uploaded to the ftp Server upload.ffmpeg.org: PS3Issue_Readme.txt PS3IssueSampleFFMPEG.m2ts PS3IssueSampleTSMUXERGUI.m2ts

============================== 1.) convert the file with "ffmpeg.exe" -i sample.mkv -acodec copy -vcodec copy -t 7 sampleFFMPEG.m2ts" ==============================

ffmpeg version 1.1 Copyright (c) 2000-2013 the FFmpeg developers
  built on Jan  8 2013 16:16:22 with gcc 4.7.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libg
sm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --e
nable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --e
nable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwben
c --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-
libxvid --enable-zlib
  libavutil      52. 13.100 / 52. 13.100
  libavcodec     54. 86.100 / 54. 86.100
  libavformat    54. 59.106 / 54. 59.106
  libavdevice    54.  3.102 / 54.  3.102
  libavfilter     3. 32.100 /  3. 32.100
  libswscale      2.  1.103 /  2.  1.103
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
Input #0, matroska,webm, from 'sample.mkv':
  Metadata:
    creation_time   : 2013-01-21 07:30:54
  Duration: 00:11:12.24, start: 0.000000, bitrate: 8453 kb/s
    Chapter #0.0: start 0.000000, end 672.238000
    Metadata:
      title           : Chapter 01
    Stream #0:0(eng): Video: mpeg2video (Main), yuv420p, 720x480 [SAR 32:27 DAR
16:9], SAR 186:157 DAR 279:157, 29.97 fps, 29.97 tbr, 1k tbn, 59.94 tbc
    Stream #0:1(eng): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s (default)
    Metadata:
      title           : 3/2+1
Output #0, mpegts, to 'sampleFFMPEG.m2ts':
  Metadata:
    encoder         : Lavf54.59.106
    Chapter #0.0: start 0.000000, end 7.000000
    Metadata:
      title           : Chapter 01
    Stream #0:0(eng): Video: mpeg2video, yuv420p, 720x480 [SAR 186:157 DAR 279:1
57], q=2-31, 29.97 fps, 90k tbn, 29.97 tbc
    Stream #0:1(eng): Audio: ac3, 48000 Hz, 5.1(side), 448 kb/s (default)
    Metadata:
      title           : 3/2+1
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame=  211 fps=0.0 q=-1.0 Lsize=    8038kB time=00:00:07.00 bitrate=9396.6kbits
/s
video:6880kB audio:383kB subtitle:0 global headers:0kB muxing overhead 10.673105
%

============================== here ist the output of "ffmpeg -i sampleFFMPEG.m2ts" ==============================

ffmpeg version 1.1 Copyright (c) 2000-2013 the FFmpeg developers
  built on Jan  8 2013 16:16:22 with gcc 4.7.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libg
sm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --e
nable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --e
nable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwben
c --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-
libxvid --enable-zlib
  libavutil      52. 13.100 / 52. 13.100
  libavcodec     54. 86.100 / 54. 86.100
  libavformat    54. 59.106 / 54. 59.106
  libavdevice    54.  3.102 / 54.  3.102
  libavfilter     3. 32.100 /  3. 32.100
  libswscale      2.  1.103 /  2.  1.103
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
Input #0, mpegts, from 'sampleFFMPEG.m2ts':
  Duration: 00:00:07.04, start: 1.400000, bitrate: 9353 kb/s
  Program 1
    Metadata:
      service_name    : Service01
      service_provider: FFmpeg
    Stream #0:0[0x100]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420
p, 720x480 [SAR 32:27 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0:1[0x101](eng): Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, 5.1
(side), fltp, 448 kb/s
At least one output file must be specified

============================== then I have "posprocessed" the sampleFFMPEG.m2ts with tsMuxerGUI here ist the output of "ffmpeg -i sampleTSMUXERGGUI.m2ts" ==============================

ffmpeg version 1.1 Copyright (c) 2000-2013 the FFmpeg developers
  built on Jan  8 2013 16:16:22 with gcc 4.7.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libg
sm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --e
nable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --e
nable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwben
c --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-
libxvid --enable-zlib
  libavutil      52. 13.100 / 52. 13.100
  libavcodec     54. 86.100 / 54. 86.100
  libavformat    54. 59.106 / 54. 59.106
  libavdevice    54.  3.102 / 54.  3.102
  libavfilter     3. 32.100 /  3. 32.100
  libswscale      2.  1.103 /  2.  1.103
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
Input #0, mpegts, from 'sampleTSMUXERGUI.m2ts':
  Duration: 00:00:07.04, start: 600.000000, bitrate: 8894 kb/s
  Program 1
    Stream #0:0[0x1011]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv42
0p, 720x480 [SAR 32:27 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0:1[0x1100](eng): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side
), fltp, 448 kb/s
At least one output file must be specified

============================== The differences that I see between ffmpeg output and tsMuxerGUI output are the track IDs and then "ac3 ([129][0][0][0] / 0x0081)" vs. "(AC-3 / 0x332D4341)".


          #2547: -muxrate option doesn't work with stream_segment mpegts output   

When I use the -muxrate parameter with the mpegts muxer directly, it works fine without any errors and I get the desired muxrate. But it is not working when using the mpegts muxer indirectly via the stream_segment muxer (even after patching segment.c to pass the muxrate parameter to the mpegts muxer and verifying that the right value was passed - see below).

Using mpegts muxer directly: ffmpeg -i lg4test.ts -map 0:0 -vcodec libx264 -s 640x360 -b:v 1M -minrate 1M -maxrate 1M -bufsize 500K -muxrate 1.25M -g 60 -profile:v main -map 0:1 -acodec aac -strict experimental -b:a 128K -ac 2 -ar 48000 -f mpegts -v verbose test.ts

Complete console output attached as: mpegts_output.txt

Quote from the output: [mpegts @ 0x7fc381829c00] muxrate 1250000, pcr every 16 pkts, sdt every 415, pat/pmt every 83 pkts

So, that looks good. Next I want to do the same thing when using mpegts via the stream_segment muxer.

First I edited libavformat/segment.c to enable the muxrate option to be passed to the muxer specified by -segment_format, via a new option called -segment_format_muxrate (see patch attached). There may be a better way to accomplish this, but it works for now. If you prefer, I can submit this patch first to ffmpeg-devel and then inquire about this bug.

Next, making use of this new option:

ffmpeg -i lg4test.ts -map 0:0 -vcodec libx264 -s 640x360 -b:v 1M -minrate 1M -maxrate 1M -bufsize 500K -muxrate 1.25M -g 60 -profile:v main -map 0:1 -acodec aac -strict experimental -b:a 128K -ac 2 -ar 48000 -f ssegment -segment_list test.m3u8 -segment_list_flags +live -segment_time 10 -segment_format mpegts -segment_format_muxrate 1.25M -segment_time_delta 1.0 -v verbose test%05d.ts

Complete console output attached as: ssegment_output.txt

This message cofirms that the muxrate option was correctly passed to the mpegts muxer: [mpegts @ 0x7fdff3c16800] muxrate 1250000, pcr every 16 pkts, sdt every 415, pat/pmt every 83 pkts

However, as you can see in the console output, I now get this error message repeated very often: [mpegts @ 0x7fdff3c16800] dts < pcr, TS is invalid

Last message repeated 58 times

When this error occurs, I found that the size of each segment file (which should be all roughly the same size, since they are all approx. the same duration) is actually growing by multiples, e.g.: ls -al test0*.ts -rw-r--r-- 1 jasonlivingston admin 1657784 May 8 22:39 test00000.ts -rw-r--r-- 1 jasonlivingston admin 3273268 May 8 22:39 test00001.ts -rw-r--r-- 1 jasonlivingston admin 5023736 May 8 22:39 test00002.ts -rw-r--r-- 1 jasonlivingston admin 6452160 May 8 22:39 test00003.ts -rw-r--r-- 1 jasonlivingston admin 8077796 May 8 22:39 test00004.ts -rw-r--r-- 1 jasonlivingston admin 9741784 May 8 22:39 test00005.ts -rw-r--r-- 1 jasonlivingston admin 11516692 May 8 22:39 test00006.ts -rw-r--r-- 1 jasonlivingston admin 13087244 May 8 22:39 test00007.ts -rw-r--r-- 1 jasonlivingston admin 14500816 May 8 22:39 test00008.ts -rw-r--r-- 1 jasonlivingston admin 16241884 May 8 22:39 test00009.ts

Again, these are all the same duration and same CBR, so they should be roughly the same size.

Any ideas why this works fine for using mpegts directly, but not when using mpegts via ssegment?


          #3747: ffmpeg overwrites files with non-ascii characters on Windows (cmd)   

My cmd file:

dir/b/s *.mts >mtslist.txt for /F "delims=;" %%F in (mtslist.txt) do ffmpeg.exe -n -i "%%F" -c:v mpeg4 -qscale:v 4 -vtag xvid -vf scale=1280:-1 -flags +qpel -acodec libmp3lame -ab 320k "%%~dF%%~pF%%~nF.avi"

Cmd window:

C:\Users\Właściciel\Documents\2014\_test>dir/b/s *.mts 1>mtslist.txt

C:\Users\Właściciel\Documents\2014\_test>for /F "delims=;" %F in (mtslist.txt) d o ffmpeg.exe -n -i "%F" -c:v mpeg4 -qscale:v 4 -vtag xvid -vf scale=1280:-1 -fla gs +qpel -acodec libmp3lame -ab 320k "%~dF%~pF%~nF.avi"

C:\Users\Właściciel\Documents\2014\_test>ffmpeg.exe -n -i "C:\Users\Właściciel\Documents\2014\_test\2014_06_14 15_39_44.mts" -c:v mpeg4 -qscale:v 4 -vtag xvid -vf scale=1280:-1 -flags +qpel -acodec libmp3lame -ab 320k "C:\Users\Właściciel\Documents\2014\_test\2014_06_14 15_39_44.avi"

The problem is a national character - when I copy dir _test to the root of the C - problem disapear and option -n work properly.


          #5746: LucasArts SANM/SMUSH video fails to decode   

Summary of the bug:

Decoding a LucasArts? SANM file fails with "Subcodec 48 is not implemented" and no output file is created.

How to reproduce:

% ffmpeg -i input.SAN output.mp4
...
[sanm @ 0x7fce49017000] If you want to help, upload a sample of this file to ftp://upload.ffmpeg.org/incoming/ and contact the ffmpeg-devel mailing list. (ffmpeg-devel@ffmpeg.org)
Error while decoding stream #0:0: Not yet implemented in FFmpeg, patches welcome
frame=    0 fps=0.0 q=0.0 Lsize=       0kB time=00:00:00.00 bitrate=N/A speed=   0x
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Conversion failed!

View output.txt for full output.

% ffmpeg -version
ffmpeg version 3.1.1 Copyright (c) 2000-2016 the FFmpeg developers
built with Apple LLVM version 7.3.0 (clang-703.0.31)
configuration: --prefix=/usr/local/Cellar/ffmpeg/3.1.1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-opencl --enable-libx264 --enable-libmp3lame --enable-libxvid --enable-libx265 --disable-lzma --enable-vda
libavutil      55. 28.100 / 55. 28.100
libavcodec     57. 48.101 / 57. 48.101
libavformat    57. 41.100 / 57. 41.100
libavdevice    57.  0.101 / 57.  0.101
libavfilter     6. 47.100 /  6. 47.100
libavresample   3.  0.  0 /  3.  0.  0
libswscale      4.  1.100 /  4.  1.100
libswresample   2.  1.100 /  2.  1.100
libpostproc    54.  0.100 / 54.  0.100

          #5663: cannot transcode flv (cannot find video stream)   

Summary of the bug: I am trying to transcode from streaming captured flv(avc+aac) video to mp4(avc+aac) format, with original Latest Zeranoe FFmpeg Build Version: 6935aaa (2016-06-24)(windows binary of https://ffmpeg.zeranoe.com/builds/) , but cannot find video stream ,instead found subtitle stream. Our(Saccubus team) modified ffmpeg (http://ci.ledyba.org/job/SaccubusFFmpegBuild_1.x/lastSuccessfulBuild/artifact/ffmpeg_1.x_20160624_075650.7z) does the same. The sample flv file may be broken nevertheless it can be viewed by MPC-HC x64 Windows application (verison and property info is mpchc64_OK_version.txt) I am not sure this is bug.

Command line:(on msys2 MinGW-w64 32bit - Windows 10) How to reproduce:

% "C:\\msys64\\usr\\local\\src\\ffmpeg_bug_report\\0624\\ffmpeg.exe" -y -i sample_flvrepair100.flv -q:v 0 -s 640x360 out.mp4
ffmpeg version N-80615-g6935aaa Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 5.4.0 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
  libavutil      55. 26.100 / 55. 26.100
  libavcodec     57. 46.100 / 57. 46.100
  libavformat    57. 40.101 / 57. 40.101
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 46.102 /  6. 46.102
  libswscale      4.  1.100 /  4.  1.100
  libswresample   2.  1.100 /  2.  1.100
  libpostproc    54.  0.100 / 54.  0.100
Splitting the commandline.
Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'.
Reading option '-i' ... matched as input file with argument 'sample_flvrepair100.flv'.
Reading option '-q:v' ... matched as option 'q' (use fixed quality scale (VBR)) with argument '0'.
Reading option '-s' ... matched as option 's' (set frame size (WxH or abbreviation)) with argument '640x360'.
Reading option 'out.mp4' ... matched as output file.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option y (overwrite output files) with argument 1.
Successfully parsed a group of options.
Parsing a group of options: input file sample_flvrepair100.flv.
Successfully parsed a group of options.
Opening an input file: sample_flvrepair100.flv.
[file @ 03c09500] Setting default whitelist 'file,crypto'
[flv @ 03c08de0] Format flv probed with size=2048 and score=100
[flv @ 03c08de0] Before avformat_find_stream_info() pos: 13 bytes read:32768 seeks:0 nb_streams:0
[flv @ 03c08de0] audio stream discovered after head already parsed
[flv @ 03c08de0] subtitle stream discovered after head already parsed
[flv @ 03c08de0] max_analyze_duration 5000000 reached at 5014000 microseconds st:0
[flv @ 03c08de0] After avformat_find_stream_info() pos: 49702 bytes read:98308 seeks:2 frames:221
Input #0, flv, from 'sample_flvrepair100.flv':
  Metadata:
    moovPosition    : 36
    avcprofile      : 100
    avclevel        : 30
    aacaot          : 2
    videoframerate  : 28
    audiochannels   : 2
    sampletype      : mp4a
    length          : 3984381
    timescale       : 1000
  Duration: 01:06:24.41, start: 2.322000, bitrate: 284 kb/s
    Stream #0:0, 220, 1/1000: Audio: aac, 44100 Hz, stereo, fltp
    Stream #0:1, 1, 1/1000: Subtitle: text
Successfully opened the file.
Parsing a group of options: output file out.mp4.
Applying option q:v (use fixed quality scale (VBR)) with argument 0.
Applying option s (set frame size (WxH or abbreviation)) with argument 640x360.
Successfully parsed a group of options.
Opening an output file: out.mp4.
[file @ 03222b00] Setting default whitelist 'file,crypto'
Successfully opened the file.
detected 8 logical cores
[graph 0 input from stream 0:0 @ 0323fae0] Setting 'time_base' to value '1/44100'
[graph 0 input from stream 0:0 @ 0323fae0] Setting 'sample_rate' to value '44100'
[graph 0 input from stream 0:0 @ 0323fae0] Setting 'sample_fmt' to value 'fltp'
[graph 0 input from stream 0:0 @ 0323fae0] Setting 'channel_layout' to value '0x3'
[graph 0 input from stream 0:0 @ 0323fae0] tb:1/44100 samplefmt:fltp samplerate:44100 chlayout:0x3
[audio format for output stream 0:0 @ 0323fa60] Setting 'sample_fmts' to value 'fltp'
[audio format for output stream 0:0 @ 0323fa60] Setting 'sample_rates' to value '96000|88200|64000|48000|44100|32000|24000|22050|16000|12000|11025|8000|7350'
[AVFilterGraph @ 032375e0] query_formats: 4 queried, 9 merged, 0 already done, 0 delayed
[mp4 @ 03233a20] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.
Output #0, mp4, to 'out.mp4':
  Metadata:
    moovPosition    : 36
    avcprofile      : 100
    avclevel        : 30
    aacaot          : 2
    videoframerate  : 28
    audiochannels   : 2
    sampletype      : mp4a
    length          : 3984381
    timescale       : 1000
    encoder         : Lavf57.40.101
    Stream #0:0, 0, 1/44100: Audio: aac (LC) ([64][0][0][0] / 0x0040), 44100 Hz, stereo, fltp, 128 kb/s
    Metadata:
      encoder         : Lavc57.46.100 aac
Stream mapping:
  Stream #0:0 -> #0:0 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
cur_dts is invalid (this is harmless if it occurs once at the start per stream)
cur_dts is invalid (this is harmless if it occurs once at the start per stream)
[flv @ 03c08de0] video stream discovered after head already parsed
[NULL @ 03206ac0] nal_unit_type: 7, nal_ref_idc: 3
[NULL @ 03206ac0] nal_unit_type: 8, nal_ref_idc: 3
[flv @ 03c08de0] New (null) stream 0:2 at pos:60653 and DTS:8.627s
size=     191kB time=00:00:12.19 bitrate= 128.5kbits/s speed=24.3x
size=     405kB time=00:00:25.79 bitrate= 128.6kbits/s speed=25.8x
                                   (*snip*)
size=   56205kB time=00:59:09.23 bitrate= 129.7kbits/s speed=23.5x
[aac @ 03230da0] decode_band_types: Input buffer exhausted before END element found
Error while decoding stream #0:0: Invalid data found when processing input
[output stream 0:0 @ 0323fbe0] EOF on sink link output stream 0:0:default.
No more output streams to write to, finishing.
size=   56998kB time=00:59:21.33 bitrate= 131.1kbits/s speed=23.5x
video:0kB audio:56397kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.065180%
Input file #0 (sample_flvrepair100.flv):
  Input stream #0:0 (audio): 153375 packets read (40624776 bytes); 153374 frames decoded (157054976 samples);
  Input stream #0:1 (subtitle): 1 packets read (515 bytes);
  Total: 153376 packets (40625291 bytes) demuxed
Output file #0 (out.mp4):
  Output stream #0:0 (audio): 153374 frames encoded (157054976 samples); 153375 packets muxed (57750330 bytes);
  Total: 153375 packets (57750330 bytes) muxed
153374 frames successfully decoded, 1 decoding errors
[AVIOContext @ 03c004e0] Statistics: 30 seeks, 153416 writeouts
[aac @ 0323bae0] Qavg: 2100.247
[AVIOContext @ 03208080] Statistics: 141830040 bytes read, 2 seeks

sample is https://www.datafilehost.com/d/3abf78e9


          #3718: ffmpeg does not correctly read input text file.   

Summary of the bug: How to reproduce:

> ffmpeg -f concat -i t
mp.txt -c copy output.wav
ffmpeg version N-60592-gfd982f2 Copyright (c) 2000-2014 the FFmpeg developers
  built on Feb 13 2014 22:01:02 with gcc 4.8.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfi
g --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetyp
e --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopenco
re-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libsp
eex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-li
bvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
  libavutil      52. 63.101 / 52. 63.101
  libavcodec     55. 52.101 / 55. 52.101
  libavformat    55. 32.101 / 55. 32.101
  libavdevice    55.  9.100 / 55.  9.100
  libavfilter     4.  1.102 /  4.  1.102
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
[concat @ 003b36e0] Line 1: unknown keyword 'file'
tmp.txt: Invalid data found when processing input

This is the Windows Zeranoe Build downloaded from here: http://ffmpeg.zeranoe.com/builds/win32/static/ffmpeg-20140612-git-3a1c895-win32-static.7z

The file is written from a self-made Visual Basic program using the method described here: http://msdn.microsoft.com/en-us/library/ms128035(v=vs.110).aspx. As you can see under the Remarks section, it uses the UTF-8 encoding.

Turns out, that method also writes 3 extra chars to the file, ef bb bf. It seems like this throws off FFMPEG and it gives the error above.


          #4149: Support mjpeg rotation   

Summary of the bug:

Take a video with rotate: 90 metadata set (e.g. iPhone) and extract a frame to use as a thumbnail. Rotation / orientation metadata does not appear to be set in the resulting jpeg.

How to reproduce:

Extract the JPEG

ffmpeg -itsoffset 4 -i bz_12900.mov -y -vframes 1 bz.jpg
ffmpeg version N-68129-g928322c Copyright (c) 2000-2014 the FFmpeg developers
  built on Dec  1 2014 02:39:44 with gcc 4.9.2 (GCC)
  configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-
libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-l
ibtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-decklink --enable-zlib
  libavutil      54. 15.100 / 54. 15.100
  libavcodec     56. 13.100 / 56. 13.100
  libavformat    56. 15.101 / 56. 15.101
  libavdevice    56.  3.100 / 56.  3.100
  libavfilter     5.  2.103 /  5.  2.103
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'bz_12900.mov':
  Metadata:
    major_brand     : qt
    minor_version   : 0
    compatible_brands: qt
    creation_time   : 2014-09-16 06:15:50
    model           : iPad 2
    model-eng       : iPad 2
    encoder         : 7.1.2
    encoder-eng     : 7.1.2
    date            : 2014-09-16T11:45:50+0530
    date-eng        : 2014-09-16T11:45:50+0530
    location        : +12.9394+077.6255+897.588/
    location-eng    : +12.9394+077.6255+897.588/
    make            : Apple
    make-eng        : Apple
  Duration: 00:00:13.95, start: 0.000000, bitrate: 10840 kb/s
    Stream #0:0(und): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720, 10740 kb/s, 29.97 fps, 29.97 tbr, 600 tbn, 1200 tbc (default)
    Metadata:
      rotate          : 90
      creation_time   : 2014-09-16 06:15:50
      handler_name    : Core Media Data Handler
      encoder         : H.264
    Side data:
      displaymatrix: rotation of -90.00 degrees
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 64 kb/s (default)
    Metadata:
      creation_time   : 2014-09-16 06:15:50
      handler_name    : Core Media Data Handler
[swscaler @ 0000000000489c20] deprecated pixel format used, make sure you did set range correctly
Output #0, image2, to 'bz.jpg':
  Metadata:
    major_brand     : qt
    minor_version   : 0
    compatible_brands: qt
    make-eng        : Apple
    model           : iPad 2
    model-eng       : iPad 2
    make            : Apple
    encoder         : Lavf56.15.101
    date            : 2014-09-16T11:45:50+0530
    date-eng        : 2014-09-16T11:45:50+0530
    location        : +12.9394+077.6255+897.588/
    location-eng    : +12.9394+077.6255+897.588/
    Stream #0:0(und): Video: mjpeg, yuvj420p(pc), 1280x720, q=2-31, 200 kb/s, 29.97 fps, 29.97 tbn, 29.97 tbc (default)
    Metadata:
      rotate          : 90
      creation_time   : 2014-09-16 06:15:50
      handler_name    : Core Media Data Handler
      encoder         : Lavc56.13.100 mjpeg
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> mjpeg (native))
Press [q] to stop, [?] for help
frame=    1 fps=0.0 q=6.2 Lsize=N/A time=00:00:00.03 bitrate=N/A dup=1 drop=1
video:49kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown

We see rotate:90 in the output section above (in the video section which is confusing since no video file was produced), but if I look at tags in resulting file using exiftool it's not there:

ExifTool Version Number         : 9.72
File Name                       : BZ_12900.jpeg
Directory                       : .
File Size                       : 54 kB
File Modification Date/Time     : 2014:12:01 11:06:44-05:00
File Access Date/Time           : 2014:12:01 11:07:06-05:00
File Inode Change Date/Time     : 2014:12:01 11:07:06-05:00
File Permissions                : rw-r-----
File Type                       : JPEG
MIME Type                       : image/jpeg
Comment                         : Lavc55.18.102
Image Width                     : 1280
Image Height                    : 720
Encoding Process                : Baseline DCT, Huffman coding
Bits Per Sample                 : 8
Color Components                : 3
Y Cb Cr Sub Sampling            : YCbCr4:2:0 (2 2)
Image Size                      : 1280x720

Also don't see it in ffmpeg output.

ffmpeg -i bz.jpg -f ffmetadata bz.jpg.ff.txt
ffmpeg version N-68129-g928322c Copyright (c) 2000-2014 the FFmpeg developers
  built on Dec  1 2014 02:39:44 with gcc 4.9.2 (GCC)
  configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-
libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-l
ibtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-decklink --enable-zlib
  libavutil      54. 15.100 / 54. 15.100
  libavcodec     56. 13.100 / 56. 13.100
  libavformat    56. 15.101 / 56. 15.101
  libavdevice    56.  3.100 / 56.  3.100
  libavfilter     5.  2.103 /  5.  2.103
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, image2, from 'bz.jpg':
  Duration: 00:00:00.04, start: 0.000000, bitrate: 10088 kb/s
    Stream #0:0: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 1280x720, 25 tbr, 25 tbn, 25 tbc
File 'bz.jpg.ff.txt' already exists. Overwrite ? [y/N] y
Output #0, ffmetadata, to 'bz.jpg.ff.txt':
  Metadata:
    encoder         : Lavf56.15.101
Stream mapping:
Press [q] to stop, [?] for help
size=       0kB time=-577014:-32:-22.-77 bitrate=N/A
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown

Seems like if rotate: 90 is detected in the video that orientation: 8 should be set in the resulting JPEG or -vf transpose=1 should automatically happen to correctly orient the extracted frame.


          #4169: Support BPG Image format   

libbgp can be found here: http://bellard.org/bpg/ The spec is here http://bellard.org/bpg/bpg_spec.txt

A wrapper is probably not a good idea as the library may or may not link to libx265, libpng and openjpeg/jpeg-turbo while seemingly providing no way to know if it does for ffmpeg to check at configure time. Also, it uses an striped down version of libavcodec/libavutil, so it's kinda redundant.

It's worth noting that libbpg contains some relevant changes to ffhevc, which most likely should be ported for the purpose of this ticket. No separate patches are provided, so the changes may have to be cherry picked from the included source files.

The following list of changes to ffmpeg is described in their README file

3) FFmpeg modifications
-----------------------
- Completed support of chroma_format_idc = 0 (monochrome mode).
- Fixed RDPCM support (intra predictions).
- Added a 'dynamic bit depth' mode where all the bit depths from 8 to
  14 are supported without code duplication but slower decoding.
- Added a modified SPS header to reduce the size of the BPG decoder
  (the solution instead is to generate standard VPS and SPS headers
  from the BPG header).
- Added defines to keep only the HEVC intra code and suppress the
  parsing of all the irrelevant NAL units.
- Stripped FFmpeg from all codecs except HEVC and the necessary
  support code.
- Generated the IDCT coefficients dynamically to reduce the code size.

          #5650: IFF ANIM: support decoding of interlaced Scala's anims   

plays with:

http://www.morguesoft.eu/Contenido/Programs/Windows/AWC-WIN.zip

(but interlaced decoding is buggy atm - may crash due to invalid memory accesses)

https://www.datafilehost.com/d/4e926a5f

ANIM 16i/ANIM32i
These two formats are well worth experi-
menting with if you have the time. They are
only useful H you are going to play back ani-
mations at maximum speed all the time, but
the advantage is a 50% drop in file size. The
format works by taking advantage of the
Amiga's interlaced mode, which doubles the
resolution by using two screen refreshes.
Ordinarily this can appear as a form of flicker-
ing when used to display the largely- static
Workbench, but fast moving animations can
benefit. The original animation must have
been created in interlaced mode, and when
saved the new file will discard every second
line - which would not have been seen
anyway."
https://archive.org/stream/CUAmigaIssue101Jul98/CU_Amiga_Issue_101_Jul_98_djvu.txt
C:\>ffmpegx -i at2.anim32i -f null -
ffmpeg version N-80343-geaa1143 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.5.0 (GCC) 20100414 (Fedora MinGW 4.5.0-1.fc14)
  configuration: --prefix=/var/www/users/research/ffmpeg/snapshots/build --arch=
x86 --target-os=mingw32 --cross-prefix=i686-pc-mingw32- --cc='ccache i686-pc-min
gw32-gcc' --enable-pthreads --enable-memalign-hack --enable-runtime-cpudetect --
enable-cross-compile --enable-static --disable-shared --extra-libs='-lws2_32 -lw
inmm -lpthread' --extra-cflags='--static -I/var/www/users/research/ffmpeg/snapsh
ots/build/include' --extra-ldflags='-static -L/var/www/users/research/ffmpeg/sna
pshots/build/lib' --enable-bzlib --enable-zlib --enable-gpl --enable-version3 --
enable-nonfree --enable-libx264 --enable-libspeex --enable-libtheora --enable-li
bvorbis --enable-libfaac --enable-libxvid --enable-libopencore-amrnb --enable-li
bopencore-amrwb --enable-libmp3lame --enable-libfreetype --enable-libvpx --disab
le-decoder=libvpx
  libavutil      55. 24.100 / 55. 24.100
  libavcodec     57. 46.100 / 57. 46.100
  libavformat    57. 38.100 / 57. 38.100
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 46.101 /  6. 46.101
  libswscale      4.  1.100 /  4.  1.100
  libswresample   2.  1.100 /  2.  1.100
  libpostproc    54.  0.100 / 54.  0.100
Input #0, iff, from 'at2.anim32i':
  Duration: N/A, bitrate: N/A
    Stream #0:0: Video: iff_ilbm (ANIM / 0x4D494E41), pal8, 640x256, 60 fps, 60
tbr, 60 tbn, 60 tbc
[null @ 0x28d73a0] Using AVStream.codec to pass codec parameters to muxers is de
precated, use AVStream.codecpar instead.
Output #0, null, to 'pipe:':
  Metadata:
    encoder         : Lavf57.38.100
    Stream #0:0: Video: wrapped_avframe, pal8, 640x256, q=2-31, 200 kb/s, 60 fps
, 60 tbn, 60 tbc
    Metadata:
      encoder         : Lavc57.46.100 wrapped_avframe
Stream mapping:
  Stream #0:0 -> #0:0 (iff_ilbm (iff) -> wrapped_avframe (native))
Press [q] to stop, [?] for help
[iff @ 0x28d4b80] bitmap (compression 0x6401, bpp 8, ham 0, interlaced 1) is not
 implemented. Update your FFmpeg version to the newest one from Git. If the prob
lem still occurs, it means that your file has a feature which has not been imple
mented.
[iff @ 0x28d4b80] If you want to help, upload a sample of this file to ftp://upl
oad.ffmpeg.org/incoming/ and contact the ffmpeg-devel mailing list. (ffmpeg-deve
l@ffmpeg.org)
Error while decoding stream #0:0: Invalid data found when processing input
[iff @ 0x28d4b80] bitmap (compression 0x6401, bpp 8, ham 0, interlaced 1) is not
 implemented. Update your FFmpeg version to the newest one from Git. If the prob
lem still occurs, it means that your file has a feature which has not been imple
mented.
[iff @ 0x28d4b80] If you want to help, upload a sample of this file to ftp://upl
oad.ffmpeg.org/incoming/ and contact the ffmpeg-devel mailing list. (ffmpeg-deve
l@ffmpeg.org)
Error while decoding stream #0:0: Invalid data found when processing input
[iff @ 0x28d4b80] bitmap (compression 0x6401, bpp 8, ham 0, interlaced 1) is not
 implemented. Update your FFmpeg version to the newest one from Git. If the prob
lem still occurs, it means that your file has a feature which has not been imple
mented.
[iff @ 0x28d4b80] If you want to help, upload a sample of this file to ftp://upl
oad.ffmpeg.org/incoming/ and contact the ffmpeg-devel mailing list. (ffmpeg-deve
l@ffmpeg.org)
Error while decoding stream #0:0: Invalid data found when processing input
[iff @ 0x28d4b80] bitmap (compression 0x6401, bpp 8, ham 0, interlaced 1) is not
 implemented. Update your FFmpeg version to the newest one from Git. If the prob
lem still occurs, it means that your file has a feature which has not been imple
mented.
[iff @ 0x28d4b80] If you want to help, upload a sample of this file to ftp://upl
oad.ffmpeg.org/incoming/ and contact the ffmpeg-devel mailing list. (ffmpeg-deve
l@ffmpeg.org)
Error while decoding stream #0:0: Invalid data found when processing input
frame=    1 fps=0.0 q=-0.0 Lsize=N/A time=00:00:00.01 bitrate=N/A speed=N/A
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing ove
rhead: unknown
Exiting normally, received signal 2.

          #6468: ffmpeg doesn't maintain chapters when concatenating two MP4 files using the concat demuxer   

I'm trying to concatenate two MP4 files using the concat demuxer and want to retain the chapter markers that exist in both files so that the output file contains all the chapters from both of my input files. The source files contain chapter markers according to mediainfo which I want to be maintained in the output, but when using the -map_chapters option in ffmpeg they don't appear in the output file.

I'm concatenating the following two files from streams.txt:

file 'episode2.mp4'
file 'episode3.mp4'

which contain the following chapter/menu data (output cut down for brevity):

$ mediainfo episode2.mp4
...
Menu
ID                                       : 3
Codec ID                                 : text
Duration                                 : 22mn 25s
Language                                 : English
Encoded date                             : UTC 2017-06-18 15:27:40
Tagged date                              : UTC 2017-06-18 15:27:40
Bit rate mode                            : CBR
00:00:00.000                             : Chapter 1
00:00:59.720                             : Chapter 2
...

and I'm using the following ffmpeg command:

ffmpeg -f concat -safe 0 -i streams.txt -map_metadata 0 -map_chapters 0 -c copy output.mp4

however the output.mp4 file contains no chapter markers according to mediainfo and there's nothing viewable in any media player. I'm using ffmpeg 3.3.2 on Ubuntu 14.04.5:

$ ffmpeg -version
ffmpeg version 3.3.1 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
configuration: --extra-libs=-ldl --prefix=/opt/ffmpeg --mandir=/usr/share/man --enable-avresample --disable-debug --enable-nonfree --enable-gpl --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --disable-decoder=amrnb --disable-decoder=amrwb --enable-libpulse --enable-libfreetype --enable-gnutls --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libvorbis --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libspeex --enable-libass --enable-avisynth --enable-libsoxr --enable-libxvid --enable-libvidstab --enable-libwavpack --enable-nvenc
libavutil      55. 58.100 / 55. 58.100
libavcodec     57. 89.100 / 57. 89.100
libavformat    57. 71.100 / 57. 71.100
libavdevice    57.  6.100 / 57.  6.100
libavfilter     6. 82.100 /  6. 82.100
libavresample   3.  5.  0 /  3.  5.  0
libswscale      4.  6.100 /  4.  6.100
libswresample   2.  7.100 /  2.  7.100
libpostproc    54.  5.100 / 54.  5.100
$ uname -a
Linux server 3.13.0-119-generic #166-Ubuntu SMP Wed May 3 12:18:55 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

          #5672: concat demuxer truncates output duration   

Summary of the bug: The Concat demuxer is truncating output; I didn't start seeing this until moving to version 3.0.2. Normally I'm joining multiple files, but for simplicity the steps below are using the concat demuxer with a single file. The source file is about 90secs, but after running via the concat demuxer the output is only 7secs. ffmpeg lists the error 'concat.txt: Invalid argument' however I am getting a 0 exit code.

How to reproduce:

ffmpeg -f concat -i concat.txt -c copy -y output.flv
ffmpeg version 3.0.2 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.9.2 (Debian 4.9.2-10)
  configuration: --prefix=/usr --extra-version=streamme --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --disable-debug --disable-shared --enable-static --extra-cflags=--static --enable-gpl --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-openal --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-opengl --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
  libavutil      55. 17.103 / 55. 17.103
  libavcodec     57. 24.102 / 57. 24.102
  libavformat    57. 25.100 / 57. 25.100
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 31.100 /  6. 31.100
  libavresample   3.  0.  0 /  3.  0.  0
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.101 /  2.  0.101
  libpostproc    54.  0.100 / 54.  0.100
[flv @ 0x3a72620] Auto-inserting h264_mp4toannexb bitstream filter
Input #0, concat, from 'concat.txt':
  Duration: N/A, start: 0.000000, bitrate: 3 kb/s
    Stream #0:0: Video: h264 (Baseline), yuv420p(tv), 640x360 [SAR 1:1 DAR 16:9], 30.30 fps, 30 tbr, 1k tbn, 60 tbc
    Stream #0:1: Audio: speex, 16000 Hz, mono, s16, 3 kb/s
Output #0, flv, to 'output.flv':
  Metadata:
    encoder         : Lavf57.25.100
    Stream #0:0: Video: h264 ([7][0][0][0] / 0x0007), yuv420p, 640x360 [SAR 1:1 DAR 16:9], q=2-31, 30.30 fps, 30 tbr, 1k tbn, 1k tbc
    Stream #0:1: Audio: speex ([11][0][0][0] / 0x000B), 16000 Hz, mono, 3 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
concat.txt: Invalid argument
frame=  150 fps=0.0 q=-1.0 Lsize=     712kB time=00:00:07.37 bitrate= 791.0kbits/s speed= 186x
video:702kB audio:4kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.923229%

          #4853: Regression: latest version drops frames when concatenating M2TS (to FFV1)   

Concatenating from ffmpegclipfiles.txt:

ffconcat version 1.0
file 00000.MTS
file '00046 - Copy.MTS'

produces:

C:\Users\user\Documents\Working\vdcat>ffmpeg.new -y -f concat -safe 0 -i ffmpegclipfiles.txt -c:v ffv1 -c:a pcm_f32le ffmpegclips.new.avi
ffmpeg version N-75275-gd13a2df Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.9.3 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-l
ibilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --en
able-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc
--enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-lzma --ena
ble-decklink --enable-zlib
  libavutil      55.  2.100 / 55.  2.100
  libavcodec     57.  1.100 / 57.  1.100
  libavformat    57.  0.100 / 57.  0.100
  libavdevice    57.  0.100 / 57.  0.100
  libavfilter     6.  3.100 /  6.  3.100
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.100 /  2.  0.100
  libpostproc    54.  0.100 / 54.  0.100
Input #0, concat, from 'ffmpegclipfiles.txt':
  Duration: N/A, start: 0.520000, bitrate: 256 kb/s
    Stream #0:0: Video: h264 (High) (HDPR / 0x52504448), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 100 tbc
    Stream #0:1: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 256 kb/s
Output #0, avi, to 'ffmpegclips.new.avi':
  Metadata:
    ISFT            : Lavf57.0.100
    Stream #0:0: Video: ffv1 (FFV1 / 0x31564646), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 50 fps, 50 tbn, 50 tbc
    Metadata:
      encoder         : Lavc57.1.100 ffv1
    Stream #0:1: Audio: pcm_f32le ([3][0][0][0] / 0x0003), 48000 Hz, stereo, flt, 3072 kb/s
    Metadata:
      encoder         : Lavc57.1.100 pcm_f32le
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> ffv1 (native))
  Stream #0:1 -> #0:1 (ac3 (native) -> pcm_f32le (native))
Press [q] to stop, [?] for help
[avi @ 051364c0] Non-monotonous DTS in output stream 0:1; previous: 875520, current: 850759; changing to 875521. This may result in incorrect timestamps in the
output file.
[avi @ 051364c0] Non-monotonous DTS in output stream 0:1; previous: 875521, current: 852295; changing to 875522. This may result in incorrect timestamps in the
output file.
[avi @ 051364c0] Non-monotonous DTS in output stream 0:1; previous: 875522, current: 853831; changing to 875523. This may result in incorrect timestamps in the
output file.
[avi @ 051364c0] Non-monotonous DTS in output stream 0:1; previous: 875523, current: 855367; changing to 875524. This may result in incorrect timestamps in the
output file.
[avi @ 051364c0] Non-monotonous DTS in output stream 0:1; previous: 875524, current: 856903; changing to 875525. This may result in incorrect timestamps in the
output file.
[avi @ 051364c0] Non-monotonous DTS in output stream 0:1; previous: 875525, current: 858439; changing to 875526. This may result in incorrect timestamps in the
output file.
[avi @ 051364c0] Non-monotonous DTS in output stream 0:1; previous: 875526, current: 859975; changing to 875527. This may result in incorrect timestamps in the
output file.
[avi @ 051364c0] Non-monotonous DTS in output stream 0:1; previous: 875527, current: 861511; changing to 875528. This may result in incorrect timestamps in the
output file.
[avi @ 051364c0] Non-monotonous DTS in output stream 0:1; previous: 875528, current: 863047; changing to 875529. This may result in incorrect timestamps in the
output file.
[avi @ 051364c0] Non-monotonous DTS in output stream 0:1; previous: 875529, current: 864583; changing to 875530. This may result in incorrect timestamps in the
output file.
[avi @ 051364c0] Non-monotonous DTS in output stream 0:1; previous: 875530, current: 866119; changing to 875531. This may result in incorrect timestamps in the
output file.
[avi @ 051364c0] Non-monotonous DTS in output stream 0:1; previous: 875531, current: 867655; changing to 875532. This may result in incorrect timestamps in the
output file.
[avi @ 051364c0] Non-monotonous DTS in output stream 0:1; previous: 875532, current: 869191; changing to 875533. This may result in incorrect timestamps in the
output file.
[avi @ 051364c0] Non-monotonous DTS in output stream 0:1; previous: 875533, current: 870727; changing to 875534. This may result in incorrect timestamps in the
output file.
[avi @ 051364c0] Non-monotonous DTS in output stream 0:1; previous: 875534, current: 872263; changing to 875535. This may result in incorrect timestamps in the
output file.
[avi @ 051364c0] Non-monotonous DTS in output stream 0:1; previous: 875535, current: 873799; changing to 875536. This may result in incorrect timestamps in the
output file.
[avi @ 051364c0] Non-monotonous DTS in output stream 0:1; previous: 875536, current: 875335; changing to 875537. This may result in incorrect timestamps in the
output file.
Past duration 0.792763 too large
    Last message repeated 5 times
Past duration 0.792763 too large  578795kB time=00:00:18.55 bitrate=255521.2kbits/s dup=0 drop=25
    Last message repeated 10 times
Past duration 0.792763 too large  586483kB time=00:00:18.74 bitrate=256263.8kbits/s dup=0 drop=25
    Last message repeated 11 times
Past duration 0.792763 too large  594645kB time=00:00:18.94 bitrate=257195.9kbits/s dup=0 drop=25
    Last message repeated 9 times
Past duration 0.792763 too large  601568kB time=00:00:19.16 bitrate=257149.3kbits/s dup=0 drop=25
    Last message repeated 10 times
Past duration 0.792763 too large  609193kB time=00:00:19.38 bitrate=257400.0kbits/s dup=0 drop=25
    Last message repeated 10 times
Past duration 0.792763 too large  616660kB time=00:00:19.58 bitrate=258000.1kbits/s dup=0 drop=25
    Last message repeated 9 times
Past duration 0.792763 too large  623783kB time=00:00:19.80 bitrate=258028.3kbits/s dup=0 drop=25
    Last message repeated 11 times
Past duration 0.792763 too large  631837kB time=00:00:19.99 bitrate=258850.2kbits/s dup=0 drop=25
    Last message repeated 8 times
Past duration 0.792763 too large  638183kB time=00:00:20.25 bitrate=258145.2kbits/s dup=0 drop=25
    Last message repeated 11 times
Past duration 0.792763 too large  646583kB time=00:00:20.41 bitrate=259493.0kbits/s dup=0 drop=25
    Last message repeated 10 times
Past duration 0.792763 too large  654655kB time=00:00:20.66 bitrate=259478.2kbits/s dup=0 drop=25
    Last message repeated 8 times
Past duration 0.792763 too large  661039kB time=00:00:20.86 bitrate=259597.1kbits/s dup=0 drop=25
    Last message repeated 11 times
Past duration 0.792763 too large  669710kB time=00:00:21.05 bitrate=260603.4kbits/s dup=0 drop=25
    Last message repeated 9 times
Past duration 0.792763 too large  676963kB time=00:00:21.27 bitrate=260652.4kbits/s dup=0 drop=25
    Last message repeated 10 times
Past duration 0.792763 too large  684744kB time=00:00:21.46 bitrate=261290.7kbits/s dup=0 drop=25
    Last message repeated 9 times
Past duration 0.792763 too large  692197kB time=00:00:21.72 bitrate=261021.9kbits/s dup=0 drop=25
    Last message repeated 11 times
Past duration 0.792763 too large  700577kB time=00:00:21.91 bitrate=261867.4kbits/s dup=0 drop=25
    Last message repeated 10 times
Past duration 0.792763 too large  708703kB time=00:00:22.17 bitrate=261846.2kbits/s dup=0 drop=25
    Last message repeated 9 times
Past duration 0.792763 too large  715688kB time=00:00:22.36 bitrate=262156.9kbits/s dup=0 drop=25
    Last message repeated 10 times
Past duration 0.792763 too large  723751kB time=00:00:22.62 bitrate=262110.0kbits/s dup=0 drop=25
    Last message repeated 11 times
Past duration 0.792763 too large  732231kB time=00:00:22.81 bitrate=262949.2kbits/s dup=0 drop=25
    Last message repeated 9 times
Past duration 0.792763 too large  739574kB time=00:00:23.03 bitrate=263003.8kbits/s dup=0 drop=25
    Last message repeated 11 times
Past duration 0.792763 too large  748095kB time=00:00:23.22 bitrate=263834.9kbits/s dup=0 drop=25
    Last message repeated 10 times
Past duration 0.792763 too large  756037kB time=00:00:23.45 bitrate=264089.0kbits/s dup=0 drop=25
    Last message repeated 8 times
Past duration 0.792763 too large  762628kB time=00:00:23.67 bitrate=263871.0kbits/s dup=0 drop=25
    Last message repeated 9 times
Past duration 0.792763 too large  769615kB time=00:00:23.86 bitrate=264146.3kbits/s dup=0 drop=25
    Last message repeated 11 times
Past duration 0.792763 too large  778514kB time=00:00:24.09 bitrate=264716.6kbits/s dup=0 drop=25
    Last message repeated 10 times
Past duration 0.792763 too large  786104kB time=00:00:24.28 bitrate=265183.8kbits/s dup=0 drop=25
    Last message repeated 9 times
Past duration 0.792763 too large  793497kB time=00:00:24.47 bitrate=265578.1kbits/s dup=0 drop=25
    Last message repeated 2 times
frame= 1223 fps= 21 q=-0.0 Lsize=  795778kB time=00:00:24.47 bitrate=266341.5kbits/s dup=0 drop=25
video:786337kB audio:9384kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.007214%

The errors start appearing as soon as the boundary between clips is reached. Clip ordering does not change the behaviour; it recurs at the new clip boundary. Individually the clips encode fine. Concatenating Lagarith-encoded AVI versions of the input clips works fine.

An older version of ffmpeg concatenates the same M2TS files as above to FFV1 without problems:

C:\Users\user\Documents\Working\vdcat>ffmpeg.old -y -f concat -safe 0 -i ffmpegclipfiles.txt -c:v ffv1 -c:a pcm_f32le ffmpegclips.old.avi
ffmpeg version N-54277-gff130d7 Copyright (c) 2000-2013 the FFmpeg developers
  built on Jun 30 2013 01:20:12 with gcc 4.7.3 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --ena
ble-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libsp
eex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --
enable-libxvid --enable-zlib
  libavutil      52. 37.101 / 52. 37.101
  libavcodec     55. 17.100 / 55. 17.100
  libavformat    55. 10.100 / 55. 10.100
  libavdevice    55.  2.100 / 55.  2.100
  libavfilter     3. 77.101 /  3. 77.101
  libswscale      2.  3.100 /  2.  3.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  3.100 / 52.  3.100
[concat @ 027a7a40] Estimating duration from bitrate, this may be inaccurate
Input #0, concat, from 'ffmpegclipfiles.txt':
  Duration: 00:00:00.04, start: 0.019967, bitrate: 12 kb/s
    Stream #0:0: Video: h264 (High) (HDPR / 0x52504448), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 100 tbc
    Stream #0:1: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 256 kb/s
Output #0, avi, to 'ffmpegclips.old.avi':
  Metadata:
    ISFT            : Lavf55.10.100
    Stream #0:0: Video: ffv1 (FFV1 / 0x31564646), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 50 tbn, 50 tbc
    Stream #0:1: Audio: pcm_f32le ([3][0][0][0] / 0x0003), 48000 Hz, stereo, flt, 3072 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> ffv1)
  Stream #0:1 -> #0:1 (ac3 -> pcm_f32le)
Press [q] to stop, [?] for help
frame= 1248 fps= 12 q=-1.0 Lsize=  813483kB time=00:00:25.01 bitrate=266434.6kbits/s
video:804041kB audio:9384kB subtitle:0 global headers:0kB muxing overhead 0.007128%

Apart from absence of error messages, note the higher (and correct) frame count.

I’d be happy to upload the two M2TS input clips if need be.


          TeloSystems TE6   

Categories:

ROM Mobile TeloSystems TE6 – ROM Android 5.1 ONLY MT6735M Official ROM TeloSystems TE6 version: TE6_TELO_V1.1_20170627 - TE6-user 5.1 LMY47D – 20170627_151107_16GB+2GB_WVGA_3M Gapps include – No Rooted Language support: Multilang   Install ROM: - Unpack FlashTools, and Click on Flash_tool.exe - Select "scatter-Loading" and search MT6735M_Android_scatter.txt in ROM - Wait file to be added into Flash Tool [...]

(Read more...)


          OINOM V9-T   

Categories:

ROM Phone OINOM V9-T – ROM Android 5.1 ONLY MT6735M Official ROM OINOM V9-T Version: V9-T_OINOM_CH_V1.0.1_2017_06_27 – OINOM-user 5.1 LMY47D – 20170628_100357_16GB+1GB_WVGA_5M Gapps not include -  No Rooted Language support : EN/CN   Install ROM : - Unpack FlashTools, and Click on Flash_tool.exe - Select "scatter-Loading" and search MT6580_Android_scatter.txt in ROM - Wait file to be added into Flash Tool - [...]

(Read more...)


          FAREASTONE Smart 601   

Categories:

ROM Phone FAREASTONE Smart 601 – ROM Android 6.0 ONLY MT6735M Official ROM FAREASTONE Smart 601 version: 35A0G0G2_FET_V005 – FAREASTONE-user 6.0 MRA58K – 20170209_183016_16GB+1GB_hd720_3M_Eurasian Gapps include  – No Rooted Language support: Multilang   ROM Install : - Unpack FlashTools, and Click on Flash_tool.exe - Select "scatter-Loading" and search MT6735M_Android_scatter.txt in ROM - Wait file to be added into Flash Tool [...]

(Read more...)


          EveryPhone EP171AC   

Categories:

ROM Mobile EveryPhone EP171AC – ROM Android 7.0 ONLY MT6737M Official ROM EveryPhone EP171AC version: EveryPhone_EP171AC_V007 – EveryPhone-user 7.0 NRD90M – 20170520_191532_16GB+2GB_hd720_3M_Japan Gapps include  – No Rooted Language support: Multilang   ROM Install : - Unpack FlashTools, and Click on Flash_tool.exe - Select "scatter-Loading" and search MT6737M_Android_scatter.txt in ROM - Wait file to be added into Flash Tool - [...]

(Read more...)


          KZEN AXIS A1   

Categories:

ROM Phone KZEN AXIS A1 – ROM Android 6.0 ONLY MT6580 Official KZEN AXIS A1 version: KZEN_AXIS A1_V1.0_20170412 – user 6.0 KZEN – 20170412_155013_8GB+4Gb_WVGA_GSM4_B15 Gapps include – No Rooted Language support : Multilang   Install ROM: - Unpack FlashTools, and Click on Flash_tool.exe - Select "scatter-Loading" and search MT6580_Android_scatter.txt in ROM - Wait file to be [...]

(Read more...)


          ONATEL LTB1200   

Categories:

ROM Mobile ONATEL LTB1200 – ROM Android 5.0 ONLY MT6580 Official ROM ONATEL LTB1200 Version: 8050G0G1_ONATEL_V001 – user 5.0 ONATEL – 20170413_153257_8GB+4Gb_WVGA_GSM4_B15 Gapps include -  No Rooted Language support : Multilang   Install ROM : - Unpack FlashTools, and Click on Flash_tool.exe - Select "scatter-Loading" and search MT6580_Android_scatter.txt in ROM - Wait file to be added into Flash Tool - Select [...]

(Read more...)


          Cobia CB5517   

Categories:

ROM Mobile Cobia CB5517 - ROM Android 7.0 ONLY MT6737M Official ROM Cobia CB5517 version: CB5517_11_1.01_170615 – COBIA-user 7.0 NRD90M – 20170615_195511_16GB+2GB_hd720_3M_America Gapps include – No Rooted Language support : Multilang   Install ROM: - Unpack FlashTools, and Click on Flash_tool.exe - Select "scatter-Loading" and search MT6737M_Android_scatter.txt in ROM - Wait file to be added into Flash Tool [...]

(Read more...)


          GS N8   

Categories:

ROM Mobile GS N8 – ROM Android 5.1 ONLY MT6580 Update ROM Official GS N8 version: V139_HD_L_V1.1_1_8_20170629_2038_V1.0.4_GS_V9_N8 – full_hct6580_weg_a_l-user 5.1 LMY47I ———————————————————————————————————————————————————————————————– ROM Official GS N8 version: V139_HD_L_V1.1_1_8_20170613_2146_V1.0.2_GS_V9_N8 – full_hct6580_weg_a_l-user 5.1 LMY47I Gapps include  – No Rooted Language support: Multilang   ROM Install : - Unpack FlashTools, and Click on Flash_tool.exe - Select "scatter-Loading" and search MT6580_Android_scatter.txt in [...]

(Read more...)


          X-BO R5   

Categories:

ROM Phone X-BO R5 - ROM Android 5.1 ONLY MT6580 Update ROM Official X-BO R5 version: V182B_QHD_V1.1_512_8_D3_20170630_1114_V1.0.3_AI_C5_XBO_R5 – full_magc6580_we_l-user 5.1 LMY47I ————————————————————————————————————————————————————————————- ROM Official X-BO R5 version: V182B_QHD_V1.1_512_8_D3_20170617_1521_V1.0.2_AI_C5_XBO_R5 – full_magc6580_we_l-user 5.1 LMY47I Gapps include – No Rooted Language support : Multilang   Install ROM: - Unpack FlashTools, and Click on Flash_tool.exe - Select "scatter-Loading" and search MT6580_Android_scatter.txt in ROM - Wait file to be [...]

(Read more...)


          Cobia CB6017   

Categories:

ROM Phone Cobia CB6017 - ROM Android 7.0 ONLY MT6737M Official ROM Cobia CB6017 version: CB6017_11_1.01_170607 – COBIA-user 7.0 NRD90M – 20170608_092627_16GB+2GB_hd720_3M_America Gapps include – No Rooted Language support : Multilang   Install ROM: - Unpack FlashTools, and Click on Flash_tool.exe - Select "scatter-Loading" and search MT6737M_Android_scatter.txt in ROM - Wait file to be added into Flash Tool [...]

(Read more...)


          M-Horse G5   

Categories:

ROM Mobile M-Horse G5 – ROM Android 4.2.2 ONLY MT6572 ROM 2 – Official M-Horse G5 version: JHM-G5-MD-S608-20170630-V04-DubleCARD – s608_72_nand_jhm_m029_miandian_42_2017_06_30_19_06 —————————————————————————————————————————————————————— ROM 1 – Official M-Horse G5 version: Horse_G5_NAND_06082016 Gapps include – No Rooted Language support : Multilang   Install ROM - Unpack FlashTools, and Click on Flash_tool.exe - Select "scatter-Loading" and search MT6572_Android_scatter.txt in ROM - Wait file [...]

(Read more...)


          Clementoni ClemPhone   

Categories:

ROM Mobile Clementoni ClemPhone – ROM Android 6.0 ONLY MT6735M ROM Official Clementoni ClemPhone Version: ClemPhone_V6.3.0d.MMB29V.20170224 – ClemPhone 6.0.1 MMB29V – 20170224_141712_1GB+16GB_hd720_3M_Eurasian Gapps include – No Rooted Language support: Multilang   Install ROM : - Unpack FlashTools, and Click on Flash_tool.exe - Select "scatter-Loading" and search MT6735M_Android_scatter.txt in ROM - Wait file to be added into Flash Tool - [...]

(Read more...)


          Leer el directorio de un archivo   

Leer el directorio de un archivo

No se como recibir un archivo con un directorio no especificado, es un trabajo de final de semestre y el profesor dijo que teníamos que leer una matriz desde un txt pero la ruta puede ser distinta, ejemplo: si yo le pongo la ruta c:/documentos/documento.txt estaría mal ya que e directorio podría variar porque al profesor no le podemos decir que deje el txt en esa ruta exacta, el programa deberá detectar automáticamente dónde se ubica.

Publicado el 02 de Julio del 2017 por Misael

          /oneplus3/Changelog.txt   
none
          /QT-2.84.9-x86-installer/README.txt   
none
          Clé USB 3.0 Leef iBridge Lightning 16 Go Noire   
49,99€

Clé USB 3.0 Leef iBridge Lightning 16 Go Noire


Mémoire Leef iBridge Mobile

Leef iBridge est une solution de stockage mobile iOS conçue pour augmenter la capacité de stockage de votre iPhone, iPad ou iPod

Ne tombez plus jamais à court de mémoire avec Leef iBridge

Prenez des photos/vidéos directement sur la clé Leef iBridge et vous ne raterez plus jamais les événements les plus mémorables de votre vie Sauvegardez & partagez facilement vos photos, vidéos et votre musique entre vos appareils iOS et votre bureau.

Profiter de vos films ou de toute votre bibliothèque de musiques sans devoir occuper un seul Mo d'espace sur votre appareil iOS

Designed for your on-the-go lifestyle

Le design en forme de J de la clé Leef iBridge s'adapte à vos appareils et étuis iOS

Ne ratez plus rien!

Prenez des photos/vidéos directement sur la clé Leef iBridge et vous ne raterez plus jamais les événements les plus mémorables de votre vie

Tous vos médias. Zéro Mo d'espace

Profiter de vos films ou de toute votre bibliothèque de musiques sans devoir occuper un seul Mo d'espace sur votre appareil iOS

Spécificités

Capacités

16GB, 32GB, 64GB, 128GB, 256GB

Connecteurs

Hi-speed USB 2.0 & Apple Lightning

Construction

Plastique TPE, Silicone et Aluminium

Dimensions : 63 x 19 x 18mm

Poids : 10g

Compatibilité

OS : iOS 9, iOS 10 / Appareil : iPhone 7, iPhone 7 Plus, iPhone SE, iPhone 6s/6s Plus, iPhone 6/6 Plus, iPhone 5/5s/5c, iPad PRO, iPad Air/Air 2, iPad mini 1/2/3/4, iPad avec écran Retina, iPad (4ème génération)

Garantie limitée de 5 ans

FICHIERS COMPATIBLES

Vidéo : .mp4, .m4v, .mpv, .mov, .mpg, .mkv, .wmv, .flv, .3gp, .gif, .avi

Audio : .wav, .aac, .aif, .aiff, .caf, .m4a, .mp3

REMARQUE : Apple ne permet pas que des fichiers DRM audio & video d'iTunes soient joués sur des applications externes

Images : .jpg, .tiff, .gif, .png

Documents : doc and .docx (Microsoft Word); .htm and .html (web pages); .key (Keynote); .numbers (Numbers); .pages (Pages); .pdf (Preview and Adobe Acrobat); .ppt and .pptx (Microsoft PowerPoint); .txt (text); .rtf (rich text format); .vcf (contact information); .xls and .xlsx (Microsoft Excel); .ics



          CD0616 Duke Ellington 1931-1932 - scans & torrent - "README re torrent.txt" [12/14] yEnc   

alt.binaries.sounds.78rpm-era, alt.binaries.sounds.lossless.jazz
1.73 KB
0 uur
1 bestand (1 deel) door goon.org/contact.php (Dick Baker)


          Comment on Thus It Begins by Bob Weber   
<blockquote>"the temperature experiences a further strong increase during the time that the gas is on and a further strong decrease during the time the gas is turned off." - ShrNfr</blockquote> You have a working "<i>perfect knowledge</i>" of the real-life solar cycle warming/cooling principle! <a href="https://www.dropbox.com/s/eebwwaompc5f41g/SORCE%20TSI-Had3SST%202003-17.JPG?dl=0" rel="nofollow">SC24 cycle influence added 0.6C to Had3SST from 2008-2016</a>, ie 'the gas (TSI) was on high', driving temps higher before dropping after the gas (TSI) has turned 'low'. The modern maximum in solar activity was a 70 year period when <a href="http://www.sidc.be/silso/DATA/SN_y_tot_V2.0.txt" rel="nofollow">sunspot activity</a> was 65% higher than during the previous 70 years; 108.5 from 1935-2004 vs 65.8 from 1865-1934. Same principle.
          Drupal core: Remove @codingStandardsIgnoreFile from file and ignore those in phpcs.xml.dist   

Follow-up to #2887052: Ignore Diff component files in phpcs coding standards

Problem/Motivation

We hav following files in core with @codingStandardsIgnoreFile comment.

core/lib/Drupal/Core/Archiver/ArchiveTar.php
core/lib/Drupal/Core/Command/DbDumpCommand.php
core/lib/Drupal/Core/Command/GenerateProxyClassCommand.php
core/lib/Drupal/Core/DependencyInjection/ContainerBuilder.php
core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php
core/lib/Drupal/Core/ProxyClass/Batch/BatchStorage.php
core/lib/Drupal/Core/ProxyClass/Config/ConfigInstaller.php
core/lib/Drupal/Core/ProxyClass/Cron.php
core/lib/Drupal/Core/ProxyClass/Entity/ContentUninstallValidator.php
core/lib/Drupal/Core/ProxyClass/Extension/ModuleInstaller.php
core/lib/Drupal/Core/ProxyClass/Extension/RequiredModuleUninstallValidator.php
core/lib/Drupal/Core/ProxyClass/Field/FieldModuleUninstallValidator.php
core/lib/Drupal/Core/ProxyClass/File/MimeType/ExtensionMimeTypeGuesser.php
core/lib/Drupal/Core/ProxyClass/File/MimeType/MimeTypeGuesser.php
core/lib/Drupal/Core/ProxyClass/Lock/DatabaseLockBackend.php
core/lib/Drupal/Core/ProxyClass/Lock/PersistentDatabaseLockBackend.php
core/lib/Drupal/Core/ProxyClass/PageCache/ChainResponsePolicy.php
core/lib/Drupal/Core/ProxyClass/ParamConverter/AdminPathConfigEntityConverter.php
core/lib/Drupal/Core/ProxyClass/ParamConverter/MenuLinkPluginConverter.php
core/lib/Drupal/Core/ProxyClass/Plugin/CachedDiscoveryClearer.php
core/lib/Drupal/Core/ProxyClass/Render/BareHtmlPageRenderer.php
core/lib/Drupal/Core/ProxyClass/Routing/MatcherDumper.php
core/lib/Drupal/Core/ProxyClass/Routing/RouteBuilder.php
core/modules/book/src/ProxyClass/BookUninstallValidator.php
core/modules/field/src/ProxyClass/FieldUninstallValidator.php
core/modules/filter/src/ProxyClass/FilterUninstallValidator.php
core/modules/forum/src/ProxyClass/ForumUninstallValidator.php
core/modules/language/src/ProxyClass/LanguageConverter.php
core/modules/migrate_drupal/tests/fixtures/drupal6.php
core/modules/migrate_drupal/tests/fixtures/drupal7.php
core/modules/node/src/ProxyClass/ParamConverter/NodePreviewConverter.php
core/modules/simpletest/files/php-1.txt
core/modules/simpletest/files/php-2.php
core/modules/system/tests/fixtures/update/drupal-8.language-enabled.php
core/modules/system/tests/src/Kernel/Scripts/DbDumpCommandTest.php
core/modules/user/src/MigratePassword.php
core/modules/user/src/UserServiceProvider.php
core/modules/views_ui/src/ProxyClass/ParamConverter/ViewUIConverter.php
core/tests/Drupal/Tests/Component/EventDispatcher/ContainerAwareEventDispatcherTest.php

The apporach has been confirmed by @xjm in #2887052: Ignore Diff component files in phpcs coding standards.

Proposed resolution

Come up with the pattern(s) in core/phpcs.xml.dist so that we can ignore them cleanly.

Remaining tasks

  • Create pattern(s).
  • Create patch.
  • Review.
  • RTBC.
  • Commit.

User interface changes

None

API changes

None

Data model changes

None


          《【BL/红楼同人】红楼之弟弟是只战斗机》TXT下载 作者:清粥没一碟【完结】   




晋江VIP2017.5.29完结
总书评数:323 当前被收藏数:2889 文章积分:35,596,820


文案
穿成林家嫡子,林黛玉亲弟弟
为了当一世富贵闲人
林铭玉霸气全开,不断刷红楼BOSS,踩着BOSS的尸体不断升级
至于带着姐姐种田这回事,林铭玉回头再看,只能呵呵了

PS:本文红楼中皇族姓涂...名字不是重点!
避雷:
1,这是一个姐控战斗值满满,王八之气大开荡平贾府一干婆婆妈妈的金手指故事。原意是爽文如果看官没爽到,绝壁不是主角太渣,是作者低智商...
2,本文主受,CP不定,请亲们默念:不怕站错队,就怕没队站~
3,如果文中贾府众低智商,请表生气,默念蠢作者拉低智商表脸,作者萌萌哒凑过来求鞭笞~
4,本文不顾一切黑一切红楼人物,如果没黑到,那一定是作者忘记哒,姑凉们千万别为此拍砖哟

内容标签: 红楼梦 强强 宫廷侯爵 宅斗
搜索关键字:主角:林铭玉 ┃ 配角:林黛玉、涂凌光等等红楼中人 ┃ 其它:


作品简评
时隔一年,贾母再请林黛玉入府,然而这回,林妹妹不再是只身一人,而是多了位穿越而来的弟弟林铭玉作伴。聪明灵秀但是脾气阴晴不定的林大爷在进府的第一日,便狠狠撕了王夫人一块皮,当麻烦接二连三的找过来,贾府才恍然发现:这个弟弟并不简单……本文是主角穿越成林弟弟,为保生活安定而努力消灭一切反派的励志故事。本文情节紧凑,宅斗环环相扣,男主步步为营,每次回击都十分干脆,利落潇洒让读者倍感爽快。



原文地址:http://www.jjwxc.net/onebook.php?novelid=2207055
本帖包含的部分附件只能 访问 社区查看

          China new destroyer US Navys anti ship missile failure   

https://www.forbes.com/sites/anderscorr/2017/07/01/chinas-new-destroyer-the-u-s-navys-anti-ship-missile-failure-and-preemption/?c=0&s=ForeignAffairs

China unveiled its Type 055 naval destroyer on June 28, the latest step in its decade and a half of military buildup. The new Chinese destroyer outcompetes U.S. destroyers and cruisers, highlighting a major failure in U.S. Navy planning that stretches back to the 1990s. Given the 055’s long-range supersonic YJ-18 and YJ-12 over the horizon (OTH) anti-ship cruise missiles (ASCMs), the Chinese destroyer currently outcompetes U.S. Arleigh Burke class destroyers and bigger Ticonderoga class cruisers. Both ships rely on fewer and shorter-range Harpoon anti-ship missiles (ASMs) and aircraft carriers that are themselves vulnerable to China’s ballistic missiles. The U.S. Long Range Anti-Ship Missile (LRASM), under development since 2009, would right the balance, but not for years to come, and meanwhile we must assume China will continue improving its capabilities. Reaction times to the latest supersonic and hypersonic anti-ship weapons can be as short as 15-30 seconds. The YJ-18 and YJ-12 are inspired by Russian design, and the threat environment is complicated by unconventional technologies such as Russian-made anti-ship missiles camouflaged as commercial shipping containers. The U.S. Standard Missile-6 (SM-6) ASCM variant, which may be deployed before 2020, has less range than its Chinese counterparts. China’s military development cooperation with Russia, and fielding of the 055 destroyer, will fuel already-existing incentives for conventional first strike options, political tension and an arms race with the U.S., Japan, South Korea, Australia, Indonesia, and India. The arms race and tensions will hurt each country’s economic growth and international trade, as well as increase the risk of military conflict.

Chinese officers from the 24th Chinese navy are seen onboard a Harbin Type 052 destroyer, which arrived as part of the Chinese fleet at Shuwaikh Port in Kuwait City, on February 1, 2017. The visit is the first to Kuwait in 5 years, and comes after finishing a watch mission at the Gulf of Aden and the Somali waters. Credit: YASSER AL-ZAYYAT/AFP/Getty Images

As military technology gets more sophisticated, a naval arms race in Asia will lead to military systems on hair-trigger alerts. The danger is that, as in World War II with Japan, China could one day calculate a military advantage to striking first with an array of air, sea, and rocket-delivered conventional weapons that could debilitate U.S. Navy vessels in the Pacific, as well as other regional U.S. bases. China is prepared to do so, at least in the South China Sea. According to Captain James Fanell (USN ret), former Director of Intelligence for U.S. Pacific Fleet, China has since 2015 adopted a man-to-man, rather than zonal, defense against U.S. Navy ships that traverse those international waters. China’s trend towards shadowing U.S. ships in the East China Sea is the same, according to Fanell, so we should assume that U.S. destroyers and cruisers there have been highly vulnerable over the past two years, and until at least 2021 when a subsonic U.S. ship-based ASCM will be fielded.

A Chinese conventional first strike against U.S. military forces in Asia is now technically plausible, and backed by China’s consistently preemptive naval, missile and cyber doctrines. This gives an incentive to the U.S. to itself strike first, especially if Chinese nuclear retaliation is calculated as unlikely. Such preemptive strikes, by either side, would lead to major power military conflict that would start with multiple nuclear powers, rather than end with one nuclear power as did World War II. It would be the most destructive war in world history, and so military technologies such as China’s 055 destroyer armed with YJ-18 ASCM that upset the balance of power in Asia are profoundly destabilizing and contrary to what one should expect from a status quo power. Such technologies are therefore ultimately counter to China’s broader commercial and security interests.

Advertisement

According to Fanell, U.S. Navy warship anti-ship cruise missile programs are just now being developed. Fanell said, "And how long will [it be before] LRASM or SM-6 numbers reach the numbers the PRC already has with the YJ-18? We appear to be behind the power curve for what could be a rather long time just as the PRC begins to consolidate its territorial claims in the maritime domain of the South and East China Seas over the next decade." Fanell has long argued for increased U.S. naval spending.

China’s 055 destroyer is for the first time among Chinese surface combatants capable of land attack missions. Just as U.S. and Russian destroyers have attacked land targets in Syria, we will likely see the advent of a more territorially aggressive Chinese navy in the next decade. Last month, China’s state-run media, the Global Times, quoted military expert Song Zhongping as saying, "The 052D, a 7,000-ton-destroyer with 64 launch units, is designed for tasks including anti-aircraft, anti-submarine and anti-warship defense, while it does not and should not be required to have ground attack capability, which should be carried out by bigger destroyers, the coming 055." The 055 modular weapons system includes the capability to launch the nuclear capable CJ-10 land-attack cruise missile.

The 055 is a 10,000-tondestroyer, but under a full load it displaces 12,000 to 14,000 tons of water. It could as easily be classed as a cruiser. There are 3 more under construction, and 4 on order, for a total of 8 “Renhai” 055 destroyers. The 055 has stealth features and up to 128 Vertical Launch System (VLS) tubes for missiles capable of hitting air, land, and sea targets. The VLS can also launch anti-satellite and anti-ballistic missiles currently under development by China. The stern of the ship has a hangar to accommodate two Z-18 anti-submarine warfare helicopters and vertical-launch unmanned aerial vehicles. The sophisticated 055 bow-mounted and variable depth sonars and dual x- and s-band radar systems can see hostile air, surface, and underwater objects up to 600 km away, as well as track smaller nearby projectiles. The 055 fuses this data with other Chinese ship, air, and satellite sensors for a global view of the battlespace.

The 052 destroyers can also launch nuclear-capable missiles, and each has 64 VLS tubes. There are 4 operational 052-class destroyers, and 8 more under construction. This makes 20 total 052 and 055 Chinese destroyers capable of blue water operations far from shore. The relative lack of Chinese rearmament ships will not heavily affect Chinese destroyer operations in the South and East China seas, on which China appears to be focusing its maritime territorial growth.

Singapore Navy's RSS Independence sails past China's class 054 navy frigate Huangshan (R) and French navy vessel Frigate FS Prairial (C) during the inaugural maritime review along the strait near Changi Naval Base in Singapore on May 15, 2017. Twenty-eight foreign warships from 20 navies participated in the inaugural review, which is part of Singapore Navy's 50th anniversary celebration. Credit: ROSLAN RAHMAN/AFP/Getty Images

Another 25 smaller 056-class Chinese frigatesare operational, with 60 likely to be constructed in the coming years. These are also optimal for operations closer to China, for example in the South and East China Seas, or against Japan, South Korea, or Taiwan.

The 055 competes directly with the U.S. Navy’s Arleigh Burke class destroyers and Ticonderoga cruisers, which are the main delivery system for naval surface combatant firepower globally. The Ticonderoga class cruisers currently have 16 operational ships and 6 undergoing refurbishment at any given time.

Advertisement

There are 62 Arleigh Burke’s worldwide, and the U.S. Navy is building 14 more. They are smaller and carry less firepower than the 055’s. The Arleigh Burke destroyers displace 8,000 to 10,000 tons and have up to 96 VLS launch tubes each. That is a lot of potential firepower. But what debilitates the Arleigh Burke destroyers is their reliance on 8 Harpoon ASM tubes each, the range of which is limited to only 67 nautical miles compared with the YJ-18’s 290 nm range. Harpoon missiles do not fit into VLS tubes.

Advertisement

According to naval analysts, some of the U.S. destroyers in Asia do not even carry their full complement of Harpoon ASMs, and since 1999, the Arleigh Burkes have not had any Harpoon launchers installed. Most U.S. destroyers, therefore, have only token anti-ship capabilities, making them vulnerable to a debilitating first strike in case of war. As Senior Fellow at the Center for Strategic and Budgetary Assessments Bryan Clark noted in testimony to Congress in 2015,

Advertisement

“So if I want to shoot another ship and I am a surface ship, I have to wait until I am within Harpoon range if I have Harpoons even onboard, which means I am probably half of the distance that he can reach me. So he can — I am well within his weapons envelope when I do that.”

Professor of Strategy James Holmes at the U.S. Naval War College has some harsh words for the lack of a long-range ASM capability on U.S. cruisers and destroyers.

“The originators of this mismatch were the service chiefs back in 1992, who in a directive called From the Sea declared that there was no one left to fight after the Cold War and thus that our navy should reinvent itself as a "fundamentally different" naval force, [i.e.], a force that didn't have to fight to control the sea, and thus could concentrate on noncombat missions. When you get a signal like that from top leadership, what do you do? You stop training and equipping to fight rival navies, and you stop upgrading your armaments. After that it was inertia. No one corrected the mistake, and no one really started trying until CNO Greenert.”

Advertisement

Admiral Jonathan Greenert served as Chief of Naval Operations from 2011 to 2015. Bryan McGrath, who commanded an Arleigh Burke class destroyer from 2004 to 2006, toldCongress in 2015 that because of the lack of an effective anti-surface warfare (ASuW) capability on the surface fleet, it has to rely for defense on air and submarine-delivered capabilities.

“That decision and decisions about how to allocate missions within the portfolio — surface, subsurface and aviation — has led to a situation in which ... the Navy looks at the surface force, as something that needs to be protected by the air wing. I think that needs to be questioned…. As part of the peace dividend and in recognition of the lack of a blue water threat, the Harpoon missile system was removed from the Flight IIA Arleigh Burke Destroyers as a corporate Navy decision was made to rely on the carrier air wing and the submarine force to perform the ASuW mission.”

The Republic of Korea destroyers Sejong the Great (DDG 991) and Yang Manchun (DDH 973), the Arleigh Burke-class guided-missile destroyers USS Wayne E. Meyer (DDG 108), USS Michael Murphy (DDG 112) and USS Stethem (DDG 63), the Ticonderoga-class guided-missile cruiser USS Lake Champlain (CG 57) and the Nimitz-class aircraft carrier USS Carl Vinson (CVN 70) patrol May 3, 2017 in the western Pacific Ocean. Credit: Z.A. Landers/U.S. Navy via Getty Images

Reliance on submarines and the carrier air wing limits the ability of surface combatants to execute missions individually, and entails risk from destruction of a single component in the system, effectively making the entire highly complex network as vulnerable as its weakest link. Fanell says, "We have this belief that Carrier air cover will always be there to protect our fleet and sink enemy ships … but what happens when a DF-21D or DF-26 sinks or seriously damages our aircraft carriers? Or when one of the PLAN Song, Yuan, or Shang submarines attacks our carriers with supersonic YJ-18 ASCMs … or PLAAF/PLANAF fighter bombers attack with air launched ASCMs? It seems to me that prudent military planning would take this into account and adjust our acquisition strategy accordingly … meaning the USN would have a surface fleet that could survive on its own by having the capability to fight other PLAN combatants mano-e-mano."

The U.S. Navy has made efforts at improving its ship-based ASuW capabilities. The SM-6 was recently converted for use as an ASM, but its range is only 250 nm compared to the 290 nm range of China’s YJ-18. The Navy has not even fielded the ASM variant of the SM-6. According to Fanell, “the SM-6 ASM variant that was successfully tested in Hawaii last year ...may be fielded sooner than 2020 … but again, it is a piecemeal approach that is behind the timeline of PLAN production and fielding.”

Advertisement

The Next Generation Land Attack Weapon (NGLAW), which also has an anti-ship function, will not enter U.S. Navy service until 2028 or 2030. Tomahawk cruise missiles, with a range of 1,000 nm, are also undergoing modification for an ASCM capability, but are subsonic and therefore more easily targeted. They will not be fielded until 2021, and will likely go out of service in 2040. Until then, and if China’s surface fleet has an anti-missile system capable of downing the slow Tomahawk, Navy destroyers and cruisers are uniquely vulnerable to China’s 052 and 055, armed with the long-range YJ-12 and YJ-18 ASMs. This vulnerability is a major mistake in naval planning that has led to the dangerous reliance of destroyers and cruisers on deterrence from aircraft carriers, submarines, and strategic escalation.

Advertisement

China’s new destroyer will fuel already-existing plans in the U.S. for increased naval spending, which will in turn lead to more naval spending in China. This is a costly arms race fueled by a security dilemma on the U.S. side, and territorial aggression on the Chinese side. China knows it has nothing to worry about in terms of U.S. initiating conflict were China a status quo power. But China is courting major power war through new military technologies that alter the status quo, at the same time as it initiates zero-sum territorial conflicts with multiple U.S. allies, including Japan in the East China Sea, the Philippines in the South China Sea, Taiwan (for its sovereignty), India in the Himalayas, and South Korea through China’s proxy North Korea.

The ground attack capability of the 055 should be of especial concern to Taiwan, whose territory is already under threat by ground-based missiles across the strait in mainland China. Because of China’s military buildup and territorial aggression, even during President Obama’s 8 years of relative pacifism toward China, it appears that China does not seek to be a responsible member of the international system. It seeks regional hegemony, even at the expense of strong U.S. allies like Japan, South Korea, Australia, and the Philippines. It seeks increased global influence and power projection capabilities, including through a string of naval ports reaching to Africa, and blue water naval vessels such as the 055 destroyer.

Advertisement

According to Fanell, the 055 launch “should be another wake-up call for the USN. This is a formidable combatant...that again out-guns/out-sticks its rivals in the USN.  Watch for this to be mass produced over the next 5 years [with] numbers approaching a dozen at least.” Professor James Holmes, Professor of Strategy at the Naval War College, has made a similar argument regarding China’s coming superiority in submarine deployments.

With the Chinese Navy gaining in absolute numbers of naval combatants over the U.S., Fanell said, “a 350 ship navy that cannot engage and sink other nation’s warships is not acceptable.” The current USN of 276 ships is projected by President Trump to grow to 355. If achieved by 2035, 355 ships would cost $107 billion per year, every year, until 2047. According to Holmes, “We'll be lucky to break 300 ships by 2020, no matter what Congress does…. We have some old stuff we could recommission, but (unlike the Iowa class battleships in the 1980s) those ships already have an awful lot of mileage on the odometer.”

Advertisement

Type 001A, China's second aircraft carrier, is seen during a launch ceremony at Dalian shipyard in Dalian, northeast China's Liaoning Province, April 26, 2017. China has launched its first domestically designed and built aircraft carrier, state media said on April 26, as the country seeks to transform its navy into a force capable of projecting power onto the high seas. Credit: STR/AFP/Getty Images

China has plans to reach 351 ships by 2020, almost all of which will be concentrated in Asia. The U.S. will only devote about 60% of its Navy to the Pacific. That gives China the advantage in an Asian naval contest in 2020, with 351 Chinese ships against about 180 U.S. ships. Holmes points out that,

“Absolute numbers aren't everything. The Soviet Navy outnumbered us throughout the Cold War and we got by. We were better on a ship-for-ship basis than they were. Still, numbers are important. Plus, this isn't just a fleet-on-fleet competition. We're talking about a fraction of the U.S. Navy matching up against the whole of the PLA Navy backed by the PLA Air Force and the PLA Rocket Force -- i.e., the PLA Navy backed up by a large arsenal of land-based planes, cruise missiles, and ballistic missiles. That's a lot of firepower to supplement the PLA Navy fleet. That could be China's great equalizer even if we remain stronger on the whole.”

The next four years are a critical period of vulnerability for the U.S. Navy. China will have a bigger and more concentrated surface fleet in Asia than will the U.S., and it will be better armed. It is no surprise that China, which cares little for international law or the status quo, is risk-acceptant, and subscribes to the principle that might makes right, is taking advantage of its regional naval superiority to take territory in the South and East China seas with impunity. It is no surprise that our allies have cold feet and are hedging towards China with economic and security agreements. It is an avoidable tragedy of our own making. We have watched since the early 1990s while China made great economic and military strides, often with our stolen technology. Yet we have not sanctioned it for its failure to make progress on international common values, such as democracy and human rights, that would make it a responsible international partner in terms of peace and stability.

Advertisement

Now we are paying the price, starting in the South and East China seas. According to Holmes, China’s regional strength “probably does help explain their confidence in the China seas.” If the U.S. cannot convince China to back away from its militarization and territorial revanchism in Asia, we will be forced into a dangerous and costly arms race, Cold War brinkmanship, or even conventional preemptive strike, to stop China’s expansion. The only other option will be conceding more territory and relative military power that will eventually lose us any vestiges of global moral, military, and economic leadership that remain after failing and debilitating wars in Afghanistan and Iraq, and our general weakness against Russia and China’s territorial expansion. That will also lose us allies. It arguably already has.

China has given the U.S. a moment of truth. Will we take a stand, or continue our slide towards irrelevance? The U.S. is not the only country that needs to wake up. China is taking catastrophic risk with its growing militarism.


          IT之家学院:为命令提示符增加输入命令获取管理员权限功能   

感谢IT之家网友德州仪器CEO的原创投稿

我们知道,Linux系统的终端机中,可以通过输入su来方便地获取系统最高权限。然而,在Windows中,有时我们在习惯性地打开普通权限的命令提示符之后,会突然发现需要最高管理员权限(尤其是执行dism、chkdsk等系统级操作的时候)。此时,我们往往需要将该命令提示符关闭,并重新操作打开带有管理员权限的命令提示符。这样就造成了不便。

现在,让我们一起来通过一些简单的操作,在Windows的命令提示符中增加一个类似Linux su的指令。这样,我们也可以像Linux一样,在Windows的命令提示符中,通过一个命令直接获取最高管理员权限,增加不少使用命令提示符的便利性。

第一步:桌面点击右键,选择“新建>快捷方式”,在弹出的对话框中,找到”请键入对象的位置“一栏,填入X:\Windows\System32\cmd.exe(X是你的系统盘盘符),然后点击”下一步“。

第二步:在”键入该快捷方式的名称“一栏中,填入cmd,并点击”完成“。

此时,在桌面上应该会多出一个快捷方式,请检查双击该快捷方式是否能够打开命令提示符:

第三步:确认无误后,请右键打开该快捷方式的”属性“,找到”高级(D)…”按钮并点击,在弹出的窗口中勾选“用管理员身份运行(R)”。

确认无误后,请一路点击“确定”按钮关闭属性对话框。

第四步:在桌面上点击右键,选取“新建>文本文档”选项,然后将创建的文件命名为“su.bat”。

(此处请注意,如果创建出来的文件并没有.txt的扩展名,说明系统被设置为隐藏已知文件类型的扩展名,请到文件夹选项中取消勾选此项目,具体方法不在本教程讨论范围内)

第五步:右键点击“su.bat”文件,选取”编辑“选项,然后在记事本中输入以下内容(不含引号):

“@echo off

start cmd.lnk

exit”

如图所示:

输入完毕后,请按Ctrl+S快捷键或是”文件“菜单中的”保存“选项保存。

第六步:按住Ctrl键同时选择刚刚创建的cmd.lnk和su.bat,鼠标右键点击其中任一文件,选择”剪切“选项,此时两个文件的图标应该变为透明色。

使用键盘快捷键Win+R打开”运行“窗口,输入X:\Windows(X是你的系统盘盘符),点击确定打开X:\Windows的资源管理器窗口。

鼠标右键点击X:\Windows资源管理器窗口的任意空白处,选择”粘贴“选项将这两个文件移动到Windows目录。

此时应该会弹出”目标文件夹访问被拒绝“的提示,请点击”继续“按钮。

确认文件移动成功之后,对命令提示符添加su命令的操作就完成了。此后,不管你在命令提示符中的什么目录下,都可以直接通过输入“su”并回车,来方便地获取最高管理员权限。

当然,这种方法相对于Linux的su也是有弊端的,比如说在获取了最高管理员权限之后,原来的普通权限命令提示符会被关闭,这样原来命令提示符中的命令历史就会丢失。


          Advanced PassGen 1.4   
Description:Advanced PassGen is a free utility that can help you generate passwordsAdvanced PassGen lets you can select a custom character set, change the minimum and maximum password length and so much more !Features:Small lettersCapital lettersSpecial charactersNumbersExport data to .txt, .html or .csv formatGenerate as many passwords as you wantCustom character setAutomatic updatesFreeware InformationAuthorCodeDeadSupported OSWindows XP, […]
          Comment on Pope Francis Offers Early Retirement To Priest Caught Raping Children by H.T.   
That organization IS A Wolf In Sheep's Clothing and always has been - The fourth largest asset class owned by the Vatican is founding industry and controlling stocks in a narrow class of industries related to arms manufacture, military support and pharmacuticals including strategic financial relationships with the international trade of illegal drugs. 2. Through these strategic investments, the Roman Catholic Church is by far the single largest arms dealer, profiteer from conflict, profiteer from the growth of the pharmaceutical industry as well as single largest recipient of illegal drug money of any organisation in the history of the World.... https://archive.org/stream/TheVaticanAndPharmaceuticalIndustry/TheVaticanAndPharmaceuticalIndustry_djvu.txt
          Trillium Asset Management Decreased Its Minerals Technologies (MTX) Stake, DE Shaw & Company Boosted ... - UtahHerald.com   

Weekly Register

Trillium Asset Management Decreased Its Minerals Technologies (MTX) Stake, DE Shaw & Company Boosted ...
UtahHerald.com
D-E Shaw & Company Inc increased Whirlpool Corp (Put) (WHR) stake by 259.89% reported in 2016Q4 SEC filing. D-E Shaw & Company Inc acquired 140,600 shares as Whirlpool Corp (Put) (WHR)'s stock rose 1.07%. The D-E Shaw & Company Inc holds ...
Whirlpool Corporation - WHR - Stock Price Today - ZacksZacks Investment Research
Bitzer Marc R - SEC.govSEC.gov

all 95 news articles »

          Alpha Windward Boosted Its Ameren (AEE) Position; DE Shaw & Company Has Trimmed Metlife (Call) (MET) Stake By ... - UtahHerald.com   

Weekly Register

Alpha Windward Boosted Its Ameren (AEE) Position; DE Shaw & Company Has Trimmed Metlife (Call) (MET) Stake By ...
UtahHerald.com
D-E Shaw & Company Inc decreased Metlife Inc (Call) (MET) stake by 5.2% reported in 2016Q4 SEC filing. D-E Shaw & Company Inc sold 30,100 shares as Metlife Inc (Call) (MET)'s stock declined 4.70%. The D-E Shaw & Company Inc holds 548,500 shares ...
Ameren Corporation - AEE - Stock Price Today - ZacksZacks Investment Research
Lindgren Mark C - SEC.govSEC.gov

all 75 news articles »

          Klingenstein Fields & Co Increased Its Union Pacific (UNP) Stake; DE Shaw & Company Trimmed Himax Technologies ... - NormanObserver.com   

KL Daily

Klingenstein Fields & Co Increased Its Union Pacific (UNP) Stake; DE Shaw & Company Trimmed Himax Technologies ...
NormanObserver.com
D-E Shaw & Company Inc decreased Himax Technologies Inc (HIMX) stake by 59.36% reported in 2016Q4 SEC filing. D-E Shaw & Company Inc sold 61,745 shares as Himax Technologies Inc (HIMX)'s stock declined 2.59%. The D-E Shaw & Company Inc ...
Union Pacific Corporation - UNP - Stock Price Today - ZacksZacks Investment Research
Card Andrew H JR - SEC.govSEC.gov
Whited Elizabeth F - SEC.govSEC.gov

all 123 news articles »

          huffman树的应用——文件压缩   

简述:利用哈夫曼编码进行文件的压缩和解压缩。

开发环境:windows,VS2013,C++

项目特点:

         压缩文件:读取文件中的字符,将其转化为哈弗曼编码,再通过位转化为压缩文件。                                    

         解压缩文件:从配置文件中读取字符及对应字符的出现次数建立哈夫曼树,得到解压缩文件中的字符。

         写配置文件,可使压缩和解压缩通过读取配置文件进行。总字符数为树的根结点的权重,不需要写入配置文件。

         对于大文件的处理,读取文件用二进制读取,接口会读成-1(EOF),结束的标志为FEOF。

先建立哈弗曼树,关于哈夫曼树:

Huffman树,又称为最优二叉树,是加权路径长度最短的二叉树。

【贪心算法】是指在问题求解时,总是做出当前看起来最好的选择。也就是说贪心算法做出的不是整体最优的的选择,而是某种意义上的局部最优解。贪心算法不是对所有的问题都能得到整体最优解。使用贪心算法构建Huffman树

下面看一个简单的描述



为了方便解压缩,我们需要编写配置文件

配置文件的格式为(字符,字符出现的次数,字符的huffman编码)



下面看下代码的实现

“test.cpp

#define _CRT_SECURE_NO_WARNINGS 1

#include "FileCompress.h"
#include<windows.h>

int main()
{
	int start =  GetTickCount();
	HuffmanFileCompress fc;
	fc.CompressFile("test.txt");
	HuffmanFileCompress fc2;
	fc2.UnCompressFile("test.txt.Compress");
	int end = GetTickCount();
	cout<<"压缩文件耗时:"<<end - start<<endl;

	system("pause");
	return 0;
}

“Heap.h”

#pragma once
#include <vector>
#include <assert.h>

template<class T>  
struct Less  
{  
	bool operator()(const T& left,const T& Right)  
	{  
		return left < Right;  
	}  
};  

template<class T>  
struct Greater  
{  
	bool operator()(const T& left,const T& Right)  
	{  
		return left > Right;  
	}  
};  

template<class T,class Compare = Greater<T>>//缺省值给大堆  
class Heap  
{  
public:  
	Heap()
	{}
	Heap(const T* arr,const size_t size)  
	{  
		for (int i = 0;i < size;i++)  
		{  
			_arr.push_back(arr[i]);  
		}  

		//建堆  
		for (int i = (_arr.size() - 2) / 2;i >= 0;i--)  
		{  
			//寻找非叶子结点,向下调整;  
			AdjustDown(i);  
		}  
	}  
	void Push(const T& data)  
	{  
		_arr.push_back(data);  
		AdjustUp(_arr.size()-1);  
	}  
	void Pop()  
	{  
		assert(_arr.empty() != true);  
		swap(_arr[0],_arr[_arr.size()-1]);  
		_arr.pop_back();  
		AdjustDown(0);  
	}  
	const T& Top()  
	{  
		return _arr[0];  
	}  
	bool Empty()  
	{  
		return _arr.empty();  
	}  
	int Size()  
	{  
		return _arr.size();  
	}  
	void Cout()  
	{  
		for (int i = 0; i < _arr.size();i++)  
		{  
			cout<<_arr[i]<<" ";  
		}  
		cout<<endl;  
	}  
private:  
	void AdjustDown(int parent)  
	{  
		int child = 2 * parent + 1;//左孩子  
		Compare com;  
		while (child < _arr.size())  
		{  
			if (((child+1) < _arr.size())&&(com(_arr[child + 1],_arr[child])))  
			{  
				++child;  
			}  
			if (com(_arr[child],_arr[parent]))  
			{  
				swap(_arr[child],_arr[parent]);  
				parent = child;  
				child = parent * 2 + 1;  
			}   
			else  
			{  
				break;  
			}  
		}  
	}  
	void AdjustUp(int child)  
	{  
		int parent = (child - 1) / 2;  
		Compare com;  
		while (child > 0)  
		{  
			if (com(_arr[child],_arr[parent]))  
			{  
				swap(_arr[child],_arr[parent]);  
				child = parent;  
				parent = (child - 1) / 2;  
			}   
			else  
			{  
				break;  
			}  
		}  
	}  
private:
	vector<T> _arr;  
};  

“Huffman.h”

#pragma once
#include <iostream>
using namespace std;
#include "Heap.h"
#include <assert.h>

template<class T>
struct HuffmanTreeNode
{
	T _weight;//权重
	HuffmanTreeNode<T>* _left;//指向左子树的指针
	HuffmanTreeNode<T>* _right;//指向右子树的指针
	
	HuffmanTreeNode(const T& weight = T())
		:_weight(weight)
		,_left(NULL)
		,_right(NULL)
	{}
};//存放HuffmanTree节点的数据结构

template<class T>
class HuffmanTree
{
	typedef HuffmanTreeNode<T> Node;
public:
	//构造函数
	HuffmanTree()
		:_root(NULL)
	{}
	//构造函数
	//构建huffmanTree
	HuffmanTree(T* arr, size_t size, const T& invalid = T())
	{
		//每次都选取最小的两个节点,用最小堆最为合适
		struct Less
		{
			bool operator()(Node* left, Node* right)
			{
				assert(left);
				assert(right);

				return left->_weight < right->_weight;
			}
		};

		//将这组数据建立成最小堆,堆中的每个元素的类型都是Node*,这是为了保存后面的父节点
		Heap<Node*, Less> MinHeap;//小堆
		for (size_t i = 0;i < size;i++)
		{
			//如果字符出现的次数不为0,那么就将他加入最小堆中
			if (arr[i]._count != invalid._count)
			{
				Node* node = new Node(arr[i]);
				MinHeap.Push(node);
			}
		}

		//运用Huffman算法,从堆中取出两个最小的节点构建新的父节点,并在小堆中将这两个节点删除,再把新构建的父节点插入小堆中继续重复此步骤
		Node* frist = NULL;
		Node* second = NULL;
		Node* parent = NULL;
		while (MinHeap.Size() > 1)
		{
			//选取两个最小的节点
			frist = MinHeap.Top();
			MinHeap.Pop();
			second = MinHeap.Top();
			MinHeap.Pop();

			//利用两个小节点构建父节点
			parent = new Node(frist->_weight + second->_weight);

			//指针指向要明确
			parent->_left = frist;
			parent->_right = second;

			MinHeap.Push(parent);
		}

		//小堆里面的最后一个节点就是HuffmanTree的根节点
		_root = MinHeap.Top();
	}
	//析构函数
	~HuffmanTree()
	{
		if (_root != NULL)
		{
			//销毁函数
			_Destory(_root);
		}
	}
public:
	//获取huffmanTree
	Node* GetRoot()
	{
		return _root;
	}
protected:
	void _Destory(Node* root)
	{
		if (NULL == root)
		{
			return;
		}

		_Destory(root->_left);
		_Destory(root->_right);
		delete root;
		root = NULL;
	}
private:
	Node* _root;
};//构件huffmanTree的数据结构

“FileCompress.h”

#pragma once
#include <iostream>
using namespace std;
#include<string>

#include "Huffman.h"

typedef long long LongType;

struct CharInfo
{
	unsigned char _ch;//保存字符
	LongType _count;//保存字符出现的次数
	string _code;//保存Huffman编码

	CharInfo(const LongType& count = 0)
		:_count(count)
	{}

	CharInfo operator+(CharInfo& ch)
	{
		return CharInfo(_count + ch._count);
	}

	bool operator<(CharInfo& ch)
	{
		return _count < ch._count;
	}
};

class HuffmanFileCompress
{
	typedef HuffmanTreeNode<CharInfo> Node;
public:
	HuffmanFileCompress()
	{
		//初始化每个位置的_data值
		for (int i = 0;i < 256;i++)
		{
			_infos[i]._ch = i;
		}
	}
public:
	//压缩文件
	void CompressFile(const char* filename)
	{
		FILE* fread = fopen(filename, "rb");//已只读形式打开文件
		if (NULL == fread)
		{
			cout<<"The File Open Fail"<<endl;
			exit(0);
		}

		//统计文件中字符出现的次数
		int ch = fgetc(fread);
		while (ch != EOF)//一直读到文件末尾
		{
			_infos[ch]._count++;
			ch = fgetc(fread);
		}

		//构建HuffmanTree
		CharInfo invalid;
		HuffmanTree<CharInfo> hufftree(_infos, 256, invalid);
		Node* root = hufftree.GetRoot();

		//获取huffman编码
		string code;
		_GetHuffmanCode(root, code);

		//将文件指针移到文件头
		fseek(fread, 0, SEEK_SET);
		string write(filename);//write = "filename"
		write += ".Compress";//压缩文件的名字

		//创建一个压缩文件,存放压缩文件的信息
		FILE* fwite = fopen(write.c_str(), "wb");

		ch = fgetc(fread);
		unsigned char data = 0;//压缩数据以二进制的形式存储在文件中
		int pos = 7;//控制bit位的移动次数

		while (ch != EOF)//读到文件结尾
		{
			const char* ptr = _infos[ch]._code.c_str();

			//遍历保存结点编码
			while (*ptr)
			{
				if (pos >= 0)
				{
					data = data | ((*ptr - '0')<< pos);
					--pos;
				}
				if (pos < 0)
				{
					fputc(data, fwite);
					pos = 7;
					data = 0;
				}

				ptr++;
			}
			ch = fgetc(fread);
		}

		//最后一个字符不管写没写满都要放进去
		fputc(data, fwite);

		//写配置文件,用于解压缩
		_WriteConfig(filename);

		fclose(fread);
		fclose(fwite);
		cout<<"压缩成功"<<endl;
	}
	//解压缩文件
	void UnCompressFile(const char* filename)
	{
		//文件必须存在,要不然解压什么
		assert(filename);

		string write(filename);
		//去掉压缩文件的后缀,加上配置文件的后缀,然后读取配置文件
		unsigned int index = write.rfind('.', write.size());
		write = write.substr(0, index);
		string writeconfig = write;
		writeconfig += ".config";

		//读取配置文件,将配置文件里面的信息添加到RInfo数组中。
		CharInfo RInfo[256];
		_ReadConfigFile(writeconfig.c_str(), RInfo);

		//解压缩文件
		write += ".UnCompress";
		FILE* fwrite = fopen(write.c_str(), "wb");

		CharInfo invalid;
		HuffmanTree<CharInfo> hft(RInfo, 256, invalid);
		Node* root = hft.GetRoot();
		if (NULL == root)
		{
			return ;
		}
		Node* cur = root;
		LongType count = (root->_weight)._count;

		//开始解压缩
		FILE* fread = fopen(filename, "rb");
		unsigned char ch = fgetc(fread);

		//用字符的总数来控制循环条件
		int pos = 8;
		while (count)
		{
			--pos;
			unsigned char val = 1;

			//需要对压缩文件一个字节一个字节的访问
			if (ch & (val << pos))
			{
				cur = cur->_right;
			} 
			else
			{
				cur = cur->_left;
			}

			//读到叶子结点说明已经找到一个字符
			if (cur->_left == NULL && cur->_right == NULL)
			{
				//如果读到叶子结点,那么就要把相应的字符写进解压缩文件中
				fputc(cur->_weight._ch, fwrite);

				//每次都要将cur重新设置为根节点
				cur = root;
				if (--count == 0)
				{
					break;
				}
			}

			if (pos == 0)
			{
				pos = 8;
				ch = fgetc(fread);
			}
		}

		fclose(fread);
		fclose(fwrite);
		cout<<"解压缩成功"<<endl;
	}
private:
	//读取配置文件
	void _ReadConfigFile(const char* configfilename, CharInfo* info)
	{
		FILE* fread = fopen(configfilename, "rb");
		if (NULL == fread)
		{
			cout<<"Read File Fault"<<endl;
			exit(0);
		}

		int ch = fgetc(fread);
		while (ch != EOF)//一直读取到文件结尾
		{
			//字符,字符出现的次数,字符编码
			info[ch]._ch = ch;
			unsigned char index = ch;//记录当前的下标,一遍后面使用

			//因为这里是一个“,”,所以要将他读取并读取下一个字符
			ch = fgetc(fread);
			ch = fgetc(fread);

			string count;
			while (ch != ',')
			{
				count.push_back(ch);
				ch = fgetc(fread);
			}
			info[index]._count = atoi(count.c_str());//将获取的字符出现的次数存入。

			ch = fgetc(fread);
			//将字符编码依次存入
			while (ch != '\n')
			{
				info[index]._code.push_back(ch);
				ch = fgetc(fread);
			}

			ch = fgetc(fread);//读取'\n'字符的下一个字符
		}
	}

	//写配置文件
	void _WriteConfig(const char* filename)
	{
		//压缩文件的信息保存在“.config”后缀的文件当中
		string write(filename);
		write += ".config";
		FILE* fwite = fopen(write.c_str(), "wb");//只写形式打开文件

		for (int i = 0;i < 256;i++)
		{
			if (_infos[i]._count)
			{
				//存放形式为(字符,字符出现的次数, 字符编码)
				fputc(_infos[i]._ch, fwite);
				fputc(',', fwite);
				
				//将字符出现的次数以十进制字符的形式存入字符数组中
				char arr[126];
				_itoa(_infos[i]._count, arr, 10);
				fputs(arr, fwite);
				fputc(',', fwite);

				fputs(_infos[i]._code.c_str(), fwite);
				fputc('\n', fwite);
			}
		}
		//关闭文件实际上就是保存文件
		fclose(fwite);
	}
	//后序遍历哈夫曼树,我们只需要访问到叶子结点
	//获取huffman编码
	void _GetHuffmanCode(Node* root, string code)
	{
		if (NULL == root)
		{
			return;
		}

		//后序遍历,左右根
		//编码左0右1
		_GetHuffmanCode(root->_left, code + '0');
		_GetHuffmanCode(root->_right, code + '1');

		if (root->_left == NULL && root->_right == NULL)
		{
			_infos[root->_weight._ch]._code = code;
		}
	}
private:
	CharInfo _infos[256];//创建一个CharInfo类型的数组,利用哈希性质,每个位置的_data值都是对应的字符
};



经过测试,该压缩程序确实可以压缩音频,图片,文本等等,能够压缩并且解压会原来的一模一样。但是压缩后只有文本的大小变小了,其他类型的文件大小却并没有变小。

压缩文本的比例大概在70%-80%之间


压缩“.pdf”文件大小并没有减小,图片同样没有减小


作者:poison_biti 发表于2017/7/2 14:46:35 原文链接
阅读:3 评论:0 查看评论

          Comment on Smart Ads Remover Script by DRS David Soft   
سلام. ورژن 1.5.1 انکریپت جدید <a href="http://Refoua.me/temp/noads-1.5-rp.txt?26jan2015" rel="nofollow">26Jan2015</a> نوشته و تست شده و کار می کند.
          طريقة النشر التلقائي في جميع الجروبات الفيسبوك دفعة واحدة بدون برامج و بدون حظر | Facebook Exclusive   
اليوم سوف نتكلم عن شرح طريقة النشر في مجموعات الفيسبوك بدون اكواد او اي شيء اخر طبعا تقدر تنشر منتجاتك الالكترونية على مجموعات الفيسبوك التي تشترك فيها بسهولة وسرعة عالية وذلك من خلال تحديد المجموعات التي تريد ان تنشر بها واضافة الرابط الذي تود ان تقوم بنشره على المجموعات وايضاً من خلال اضافة رسالة مرفقة , يمكنك ايضاً ارسال الرابط الى اصدقاءك عبر كتابة اسماءهم ولن يقوم الفيسبوك بحظر حسابك فهذه الطريقة امنة 100% ، يمكنك نشر رابط موقعك الالكتروني او رابط مقالة او ايضاً رابط فيديو يوتيوب او اي شيء اخر ، الموقع يتيح لك الوصول الى عدد اكبر من الزوار بالاضافة الى تنوع مصادرهم وبلدانهم ، يوفر عليك الوقت والجهد من خلال امكانية نشر الروابط بسرعة وسهولة
حصري : النشر في جميع الجروبات دفعة واحدة بدون حظر 2017

تابعو الشرح على اليوتيوب :


الاضافة الخاصة بالنشر قم بنسخ المحتوي 



          How to find out what is using a specific account.   

Interesting!  Can you post the tasks.txt file that has the "???" in it?  


          How to find out what is using a specific account.   

Awesome, thank you again Martin.

I am also running into issues with an occasional error on line 89.I have tracked it down to being a problem with the information being pulled from the remote computer. If the remote computer returns all??? for the start time, it is forcing a new line after the first question mark. When the script then goes to search the task.txt file it is not finding anything when running "strAs = arrLine(18)" because all additional data has been forced to a new line.

This may be a problem specifically to my environment here,I am going to investigate further tonight and tomorrow to see if I can figure out either what is wrong on that PC that it doesn't recognize start time, or what is wrong with the output that is forcing it to another line.

If I figure out any tricks around this(other then putting that PC in the...


          How to find out what is using a specific account.   

Hmm... what client are you running it from? It was developed on XPso might be an issue with Vista, perhaps?

So tasks.txt is a temporary file that is created from the script. There is no way to look at scheduled tasks in VB, unfortunately (there is if you created the tasks using AT, but not the scheduled task wizard!)so Ihad to call an external program (schtasks.exe)and put the results into tasts.txt where the script then reads that information back in.

The script rely's on schtasks being in the PATH(I don't explicitly call it by path), so open up a command prompt and type in schtasks and see if it runs. If not, find the path (on XPit's c:\windows\system32) and make sure that directory is in your path statement so you can just type the name to run it.

If you're unsure how to use a Path statement (sorry if you're fine with it, how can I...


          How to find out what is using a specific account.   

Martin,

 

First off, thank you very much for the script, this is going to be incredibly helpful when we are ready to clean up our Administrator account.

I am getting an error on line 75 where it is unable to find task.txt. I'm not great with VB and haven't been able to figure out what that does. Is it necessary, or will a blank file in the folder with that name work?

 

- Artie


          How to find out what is using a specific account.   

Weird.  OK, let me try attaching a *.txt file instead...


          Windows 10 Sysprep deployments may result in unusable Windows Apps for new user profiles created after deployment in some cases   

This document contains official content from the BMC Software Knowledge Base. It is automatically updated when the knowledge article is modified.


PRODUCT:

BMC Client Management


COMPONENT:

Client Management


APPLIES TO:

Client Management OS Deployment using Windows 10 or Windows 8.x when CopyProfile is used for the deployment answer file.



PROBLEM:

After deploying a Windows 10 image from a reference image using the Microsoft Sysprep audit process or the Client Management RunSysprep.bat file, newly created user profiles may encounter a variety of problems with Windows App Store based applications.  

In the Windows event logs on the deployed device errors such as those shown below may be encountered after a user logs in for the first time.

 

  ESENT event error with Access Denied for local profile c:\users\jlerch
  
 
  Other errors may include one or more of the following events:
  
   
Log Name:      Application Source:        ESENT Date:          6/29/2017 1:21:09 AM Event ID:      490 Task Category: General Level:         Error Keywords:      Classic User:          N/A Computer:      Win10-03.MyDomain.local Description:   taskhostw (608) WebCacheLocal: An attempt to open the file       "C:\Users\<username>\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat"       for read / write access failed with system error 5 (0x00000005): "Access is denied. ".        The open file operation will fail with error -1032 (0xfffffbf8).  Log Name:      Application Source:        ESENT Date:          6/29/2017 1:21:19 AM Event ID:      490 Task Category: General Level:         Error Keywords:      Classic User:          N/A Computer:      Win10-03.MyDomain.local Description:   taskhostw (608) WebCacheLocal: An attempt to open the file      "C:\Users\Administrator\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat"      for read / write access failed with system error 5 (0x00000005): "Access is denied. ".       The open file operation will fail with error -1032 (0xfffffbf8).  Log Name:      Application Source:        ESENT Date:          6/29/2017 1:21:19 AM Event ID:      494 Task Category: Logging/Recovery Level:         Error Keywords:      Classic User:          N/A Computer:      Win10-03.MyDomain.local Description:   taskhostw (608) WebCacheLocal: Database recovery failed with error -1216       because it encountered references to a database, '      C:\Users\Administrator\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat',       which is no longer present. The database was not brought to a Clean Shutdown state       before it was removed (or possibly moved or renamed). The database engine will not       permit recovery to complete for this instance until the missing database is re-instated.       If the database is truly no longer available and no longer required, procedures for       recovering from this error are available in the Microsoft Knowledge Base or by following       the "more information" link at the bottom of this message.
  

 


CAUSE:

Windows 10 Reference system was not properly prepared for the sysprep capture and used with a deployment answer file with the CopyProfile option enabled.


SOLUTION:

While there is a relatively simple solution to this problem, the simple solution does come with the inability to leverage the Microsoft CopyProfile option.  

While this may not be a concern for some deployment scenarios it may be for your deployment requirements.  Most knowledge articles would suggest contacting your system administrator for assistance, however if your reading this you probably are the system administrator.    

The Easy Solution:

     
  • On the Client Management OSD manager    
         
    1. Make a copy of the following file: \Program Files\BMC Software\Client Management\Client\data\OsDeployment\unattend\DefaultSysprepDeployVista.txt
    2.    
    3. Save this file to a location on your OSD manager with a new file name, in this example the file will be saved as: \Program Files\BMC Software\Client Management\Client\data\OsDeployment\unattend\DefaultSysprepDeployWin10.txt
    4.    
    5. Open this file for editing and delete line 28 containing the text  <CopyProfile>true</CopyProfile> and save the changes.  
    6.    
    7. ** It is required that this file be saved with 'UTF-16' compatible formatting **      
             
      • If using Windows Notepad.exe for editing, in the 'Save As' dialog ensure that Encoding = Unicode
      •      
      • If using the ever popular Notepad++ editor, which is encouraged, select from the Encoding menu the option 'Encode in UCS-2 LE BOM'
      •      
      • User-added image
      •     
    8.    
    9. A file with this name and alteration is attached to this document for reference or use in the remaining steps.
    10.   
  •  
  • In the Client Management console    
         
    1. Launch the OS Deployment Wizard from console menu
    2.    
    3. OSD Wizard
    4.    
    5. OSD Manager = Select the OSD Manager
    6.    
    7. Deployment Type = OS Deployment - WIM Image Mode 
    8.    
    9. Project Parameters       
             
      • Provide Project Name
      •      
      • Provide Project Description
      •      
      • It is recommended to leave the remaining options at the default values in this dialog.
      •     
    10.    
    11. Image = Select an existing Windows 8.x or 10 Sysprep Image
    12.    
    13. OS Drivers = Take default (none selected) unless the target is known to need drivers not supplied by other methods.
    14.    
    15. Drivers by Model = Take defaults 
    16.    
    17. Target List Configuration = Create a new target list
    18.    
    19. Target List:      
             
      • Provide a Name and Description for the new Target list
      •      
      • **Select the newly created Win10 answer file **
      •      
      • Target List using New Answer File Template
      •      
      • Add a new or existing target
      •      
      • Populate the Unattended Information as normal.  
      •      
      • **It is required that the Administrator Password entered is the known password for the Administrator account as defined at the time the reference system was captured!  
      •      
      • Failure to use the correct Administrator password will lead you to this KB article: Troubleshooting Domain Join "Other User" Login errors during Sysprep OS Deployments **
      •     
    20.    
    21. MBR Disk Configuration = The Default "Disk with one partition"
    22.    
    23. GPT Disk Configuration = The Default "Disk with default UEFI partitions"
    24.    
    25. Deployment Drivers = Select the WinPE 8.1 Network and Sata drivers needed for the target audience that will use this project.
    26.    
    27. PXE Menu Parameters (if selected as target type) = Provide Name, Description, and select one or more PXE menus for use.
    28.    
    29. Project Build = Defaults (immediately)
    30.   
  •  
  • Boot one or more targets into this project and verify the deployed operating systems work properly when a user logins and doing so results in a new user profile being created without errors in the Windows Application Event Logs.  The simplest test is to launch Edge and verify it opens timely and functions properly.
  
This completes the 'Simple' process to correct the Windows App Store issues encountered after a sysprep deployment.   

The more complex solution while easier to document requires significantly more effort, may require contacting Microsoft support for additional assistance, and 'Safe Harbor' is invoked with the understanding that the information documented below is to be USED AT YOUR OWN RISK!    
     
  1. Given that the process of testing each solution is extremely time consuming it is recommended that a methodical testing method is developed.
  2.  
  3. The author of this article may have failed to take appropriate notes which resulted in repetition of some tests and inadvertently excluding other tests that would have possibly resolved the issue sooner.
  4.  
  5. Review both of the Microsoft Forum threads in detail taking note of the unique solutions that worked for each thread post.    
  6.  
  7. It has been found that implementing the methods in the following Microsoft article combined with the suggestions from the Microsoft forum threads above has been the most productive solution for Windows 10 captures and subsequent deployments.    
         
    • https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/customize-the-start-screen\      
             
      • Steps 1-6 of  To enable the Administrator account
      •      
      • The note under To generalize and deploy the image related to  
        Get-appxpackage | Remove-appxpackage
      •      
      • Steps 1 and 2 of To clean up the image
      •      
      • The remaining steps related to sysprep are taken care of by the Client Management RunSysprep.bat process which performs the following three actions when executed:        
                 
        1. If an existing Client Management agent installation is detected the unique identifying information is removed.
        2.        
        3. Registry update to include in the OSD driver installation folder in the Windows Driver default search path for HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion DevicePath=%SystemRoot%\inf; %SystemRoot%\system32\drivers\OSD 
        4.        
        5. Execution of %SystemRoot%\system32\sysprep\sysprep.exe /quite /audit /generalize /reboot 
        6.       
      •     
    •    
    • Prior to executing RunSysprep.bat it has also been found that creation of the following cleanup file on the reference image OS may be an undocumented requirement as reported by the forum members from the first Microsoft thread:      
             
      • Setup Script to clear Default Profile Cache entries
      •      
      • Based on observations and research its not possible to remove this information from the OS after deployment once the OS boots to a login prompt.  
      •     
    •   

 


Article Number:

000138450


Article Type:

Solutions to a Product Problem



  Looking for additional information?    Search BMC Support  or  Browse Knowledge Articles

          Cumulative Hot Fixes for TrueSight Capacity Optimization (CO), CO Gateway Server, and CO Agent, and CO Perceiver   

This document contains official content from the BMC Software Knowledge Base. It is automatically updated when the knowledge article is modified.


PRODUCT:

TrueSight Capacity Optimization


APPLIES TO:

BMC Capacity Optimization



PROBLEM:

 

The TrueSight Capacity Optimization (TSCO), TrueSight Gateway Server (formerly, BMC Performance Assurance [BPA] console), TrueSight Capacity Optimization Agent, and TrueSight Capacity Optimization Perceiver (formerly BMC Performance Perceiver) products follow a standard patch release model where there will be a period formal patch release (Fix Pack/Cumulative Patch) made available via the Electronic Product Distribution (EPD) site and a more frequent Cumulative Hot Fix (CHF) release made available for the FTP site to faciliate a more rapid release of fixes to field without the overhead associated with a formal patch release.

The following table covers some of the key points regarding different types of patches:
 

                                                                                                                                                                                                                                                                                                                           
Patch TypeTypical Release ScheduleTechnical BulletinQA TestingReleased ViaIncludes Installer?
Version 10.0 and later components
Feature PackAs RequiredYesFull QAEPDYes
Fix PackAs RequiredYesFull QAEPDYes
Version 9.5 and earlier components
Service PackQuarterlyYesFull QAEPDYes
Cumulative PatchAs RequiredYesFull QAEPDYes
All versions
Cumulative Hot FixMonthlyNo (Text README)Developer Unit Testing /
Automated Regression Testing
FTPYes
Hot FixAs RequiredNo (Text README)Developer Unit TestingFTPMaybe
  


With the TrueSight Capacity Optimization (TSCO) version 10.0 and later product suite there will be two types of patches typically made available:

  
     
  • Fix Pack (FP)
  •  
  • Cumulative Hof Fix (CHF)
  

The Fix Pack follows the same behavior as the former Cumulative Patch packages that have been made available for the last several releases.  A Fix Pack can be installed on top of the base release of the product, any prior fix pack version in that release series, or any prior Cumulative Hot Fix (CHF).  CHF packages will also accumulate fixes from the base release meaning they can also be installed on top of the base release of the product, any prior fix pack version, or any prior Cumulatve Hot Fix release.  This means that all released patches are an accumulation of fixes from the base product release and thus can be installed on top of any prior released patch package already installed in the environment.

The Feature Pack follows the same behavior as the former Service Pack packages.  A Feature Pack can be installed on top of the base release of the product, any prior fix patch version in that release series, or any prior Cumulative Hot Fix (CHF).  After a Feature Pack has been released, future CHF packages will be accumulated from the latest Feature Pack version for that release.  When a Feature Pack is released for TSCO that becomes the base supported release for that version.  That means that future Cumulative Patches, Hot Fixes, or Cumulative Hot Fixes will only be released for the latest Feature Pack.  For example, after the release of TSCO 10.7 Feature Pack 1 (10.7.01) future Cumulative Patches and Cumulative Hot Fixes will be released for installation on top of TSCO 10.7.01.  No future patches or hot fixes will be released that install on top of TSCO 10.7.00 (the base release).  In order to apply future patch packages it will be necessary to upgrade to a base release of TSCO 10.7.01 (TSCO 10.7 Feature Pack #1).

  

For BCO 9.5 and earlier when a Service Pack is released for CO that becomes the base supported release in that version. That means that future Cumulative Patches, Hot Fixes, or Cumulative Hot Fixes will only be released for the latest Service Pack. For example, after the release of CO 9.5 Service Pack 2 (9.5.02) future Cumulative Patches and Cumulative Hot Fixes will be released for installation on top of BCO 9.5.02. No more patches or hot fixes will be released that install on top of BCO 9.5 Service Pack 1 (9.0.01). In order to apply future patch packages it will be necessary to upgrade to a base release of BCO 9.5.02.

  

TrueSight Capacity Optimization 10.7
BMC TrueSight Capacity Optimization 10.5, 10.3, 10.0
BMC Capacity Optimization 9.5, 9.0, 4.5
BMC Performance Assurance 9.5, 9.0, 7.5.10
BMC Performance Perceiver 9.5, 9.0, 7.5.10

  

 

 


SOLUTION:

 

NOTE: If the Patch or README link in the following table doesn't work, try using the 'Base URL' link to see which patch version is available for download from the BMC FTP site for that release.  A new version of the patch package may have been uploaded and the KA may not have yet been updated with the new version number.

  

TrueSight Capacity Optimization (TSCO) Cumulative Hot Fix (CHF) Releases

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
TrueSight Capacity Optimization (Application Server and ETL Engine)
VersionPackageOSRelease DateCHF NumberBase URLPatchREADME
10.7.01ASAll----ftp://ftp.bmc.com/pub/perform/co/chf/10.7.01See FTP site for latest patch--
10.7.01EEAll----ftp://ftp.bmc.com/pub/perform/co/chf/10.7.01See FTP site for latest patch--
10.7.00ASAll----ftp://ftp.bmc.com/pub/perform/co/chf/10.7.00See FTP site for latest patch--
10.7.00EEAll----ftp://ftp.bmc.com/pub/perform/co/chf/10.7.00See FTP site for latest patch--
10.5.00ASAll2017-06-2010.5.00.01.C00008ftp://ftp.bmc.com/pub/perform/co/chf/10.5.0010.5.00.01.C00008_AS.patch10.5.00.01.C00008_AS.README
10.5.00EEAll2017-06-2010.5.00.01.C00008ftp://ftp.bmc.com/pub/perform/co/chf/10.5.0010.5.00.01.C00008_EE.patch10.5.00.01.C00008_EE.README
10.3.00ASAll2017-05-1710.3.00.01.C00021ftp://ftp.bmc.com/pub/perform/co/chf/10.3.0010.3.00.01.C00021_AS.patch10.3.00.01.C00021_AS.README
10.3.00EEAll2017-05-1710.3.00.01.C00021ftp://ftp.bmc.com/pub/perform/co/chf/10.3.0010.3.00.01.C00021_EE.patch10.3.00.01.C00021_EE.README
10.0.00ASAll2017-02-2010.0.00.02.C00015ftp://ftp.bmc.com/pub/perform/co/chf/10.0.0010.0.00.02.C00015_AS.patch10.0.00.02.C00015_AS.README
10.0.00EEAll2017-02-2010.0.00.02.C00015ftp://ftp.bmc.com/pub/perform/co/chf/10.0.0010.0.00.02.C00015_EE.patch10.0.00.02.C00015_EE.README
9.5.02ASAll2016-10-119.5.02.01.C00020ftp://ftp.bmc.com/pub/perform/co/chf/9.5.029.5.02.01.C00020_AS.patch9.5.02.01.C00020_AS.README
9.5.02EEAll2016-10-119.5.02.01.C00020ftp://ftp.bmc.com/pub/perform/co/chf/9.5.029.5.02.01.C00020_EE.patch9.5.02.01.C00020_EE.README
9.5.01ASAll2014-08-279.5.01.00.C00012ftp://ftp.bmc.com/pub/perform/co/chf/9.5.019.5.01.00.C00012_AS.patch9.5.01.00.C00012_AS.README
9.5.01EEAll2014-08-279.5.01.00.C00012ftp://ftp.bmc.com/pub/perform/co/chf/9.5.019.5.01.00.C00012_EE.patch9.5.01.00.C00012_EE.README
9.5.00ASAll2014-02-189.5.0.2.C00003ftp://ftp.bmc.com/pub/perform/co/chf/9.5.009.5.0.2.C00003_AS.patch9.5.0.2.C00003_AS.README
9.5.00EEAll2014-02-189.5.0.2.C00003ftp://ftp.bmc.com/pub/perform/co/chf/9.5.009.5.0.2.C00003_EE.patch9.5.0.2.C00003_EE.README
9.0.04ASAll2015-04-279.0.04.01.C00009ftp://ftp.bmc.com/pub/perform/co/chf/9.0.049.0.04.01.C00009_AS.patch9.0.04.01.C00009_AS.README
9.0.04EEAll2015-04-279.0.04.01.C00009ftp://ftp.bmc.com/pub/perform/co/chf/9.0.049.0.04.01.C00009_EE.patch9.0.04.01.C00009_EE.README
9.0.03ASAll2013-11-0810ftp://ftp.bmc.com/pub/perform/co/chf/9.0.039.0.3.C00010_AS.patch9.0.3.C00010_AS.README
9.0.03EEAll2013-11-0810ftp://ftp.bmc.com/pub/perform/co/chf/9.0.039.0.3.C00010_EE.patch9.0.3.C00010_EE.README
4.5.03ASAll2013-09-0203ftp://ftp.bmc.com/pub/perform/co/chf/4.5.03/CHF34.5.3.1.C00003_AS.patch4.5.3.1.C00003_AS.README
4.5.03EEAll2013-09-0203ftp://ftp.bmc.com/pub/perform/co/chf/4.5.03/CHF34.5.3.1.C00003_EE.patch4.5.3.1.C00003_EE.README
 
TrueSight Capacity Optimization Gateway Server
VersionOSPackageRelease DateCHF NumberBase URLPatchREADME
10.5.00LinuxConsole2017-06-2310.5.00.01.C00008ftp://ftp.bmc.com/pub/perform/gfc/patches/10.5.00/linuxDownloadREADME
Installation
10.5.00LinuxAgent2017-06-2310.5.00.01.C00008ftp://ftp.bmc.com/pub/perform/gfc/patches/10.5.00/linuxDownloadREADME
Installation
10.5.00WindowsConsole2017-06-2310.5.00.01.C00008ftp://ftp.bmc.com/pub/perform/gfd/patches/10.5.00/windows
A few weeks ago we started getting reports of users on Exchange Server 2007 with BlackBerry devices getting calendar meeting requests on their BlackBerry device as an email with no option to accept or decline the meeting. We discovered that the problem was due to the
-AutomateProcessing attribute of the impacted mailbox being set to None. The default should be AutoUpdate.
 
 To see the setting for a single user open the Exchange Management Shell on Exchange 2007and type Get-MailboxCalendarSettings user alias | FL
press enter and look at what the attribute -AutomateProcessing is set to:
 
 replace user alias with the appropriate alias for the mailbox you are checking.
 
 
To fix the issue, type Set-MailboxCalendarSettings user alias -AutomateProcessing AutoUpdate and press Enter. After it is complete you can check again using Get-MailboxCalendarSettings user alias | FL 
and you should see the following: 
 
replace user alias with the appropriate alias for the mailbox you are checking.

The users were then able to see Calendar Meeting Requests correctly on the BlackBerry device.


If you want to see of all the user Mailboxes that are set to None, you can type the following in the Exchange Management Shell:

Get-Mailbox -Resultsize Unlimited -RecipientTypeDetails UserMailbox | Get-mailboxCalendarSettings | Where {$_.automateprocessing -eq "None"} | FL Identity, automateprocessing > c:\usermbcalsettings.txt

If you want to change the ones that are found you can type the following in the Exchange Management Shell: Get-Mailbox -Resultsize Unlimited -RecipientTypeDetails UserMailbox | Get-mailboxCalendarSettings | Where {$_.automateprocessing -eq "None"} | Get-MailboxCalendarSettings -AutomateProcessing AutoUpdate


Notes:
  1. For Exchange Server 2010/2013 you will use Get-CalendarProcessing instead of Get-MailboxCalendarSettings and Set-CalendarProcessing instead of Set-MailboxCalendarSettings.

  2. You can only apply Set-CalendarProcessing to Resource Mailboxes. It cannot be used on User Mailboxes like was done for Exchange 2007 users as mentioned in this post. Additionally in Exchange 2103, Exchange ignores the -AutomateProcessing attribute on the user mailbox. So if it is set to None or AutoUpdate, Exchange treats the message the same way, which is to auto update the meeting.

Refer to RIM KB31558 for more information from RIM about this issue.


If this has helped you fix Calendar Meeting requests showing up as email messages on BlackBerry devices please share in the comments or if you have any additional insights in to this issue, it would be appreciated.
          How to Have a Daily PowerShell Report of your Exchange 2007 backups sent to you everyday.   
Have you ever needed a way to quickly tell what was going on with your Exchange 2007 backups at night when you are not in the office? I came up with this script back in 2010 that helps you do that using PowerShell combined with Scheduled tasks on a Windows Server. Tested on Exchange 2007 and PowerShell v1 and v2.

We do Full Backups daily but if you want to, you can add “LastIncrementalBackup”or “LastDifferentialBackup” to suit your needs.

Here is the script:
------------------------------------------------------------------------------------------------------------
#######################################
#Backup_report_vs1.ps1                #
#http://imjustanengineer.blogspot.com #
#Created by DJ 6/2/2010               #
#######################################

Add-PSSnapin Microsoft.Exchange.Management.powershell.admin;

Get-Mailboxserver | Get-MailboxDatabase -Status |FL Name,Server,lastfullbackup,backupinprogress,Mounted > c:\exch2007_backups.txt

start-sleep -s 120

$filename = “c:\exch2007_backups.txt”
$smtpServer = “your.smtpserver.com” #Enter FQDN of your SMTP server

$msg = new-object Net.Mail.MailMessage
$att = new-object Net.Mail.Attachment($filename)
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$msg.From = “BackupReportingScript@yourdomain.com” #Enter senders email address $msg.To.Add(”recipient1@yourdomain.com, recipient2@yourdomain.com,”) #Enter one or more recipient addresses
$msg.Subject = “Exchange 2007 Servers Backup Report" #Enter subject of message $msg.Body = “Attached is the Daily Exchange 2007 Servers Backup Report. Please note any servers that have not been backed up for more than a day.” $msg.Attachments.Add($att)

$smtp.Send($msg)
-----------------------------------------------------------------------------------------------------------

In the created text file on your C: drive you should output that looks like

Name             : EXCH-SERVER01_SG01DB01
Server           : EXCH-SERVER01
LastFullBackup   : 6/7/2010 2:33:10 AM
BackupInProgress : False
Mounted          : True



Please let us know if this is helpful to you.  
          txtファイルの任意の行を取り出して、同名のpdfファイ…   
txtファイルの任意の行を取り出して、同名のpdfファイル名の後ろに_を付けてリネームする、という処理を連続で行う方法を教えて下さい。バッチかvbsかpowershellでお願いしたいです。 例: AAA.pdf AAA.txt - 3行目にりんごとだけ書かれている BBB.pdf BBB.txt - 3行目にみかんとだけ書かれている … ↓ AAA_りんご.pdf BBB_みかん.pdf …
          Увидел свет LanguageTool 3.8   

Двадцать седьмого июня две тысячи семнадцатого года увидел свет LanguageTool 3.8 – приложение для поиска грамматических и стилистических ошибок.

Особенности:

  • Требует Java 8+ от Oracle или IcedTea.
  • Поддерживает более двадцати языков, включая русский, украинский, белорусский, английский, немецкий, французский, китайский и японский.
  • Поставляется как в виде отдельного приложения, так и в виде расширения для OpenOffice (хотя разработчики думают о прекращении поддержки OpenOffice), LibreOffice, Mozilla Firefox и других программ.

В версии 3.8:

  • Обновлены правила для обнаружения ошибок в текстах на каталонском, голландском, английском, немецком, польском, русском, словацком и украинском языках;
  • Много изменений в поддержке португальского языка;
  • Добавлено одно правило для китайского языка;
  • В файле «spelling.txt» поддерживаются фразы (слова с пробелами между ними) путём их преобразования в правила для устранения многозначности (DisambiguationPatternRule), в которых каждое слово принимается только в приведённом регистре и с приведёнными суффиксами и окончаниями. Это приводит к тому, что содержащееся в добавленной фразе слово, когда оно является её частью, не обозначается как содержащее орфографическую ошибку.
  • Когда LanguageTool работает в качестве сервера, включённые и выключенные правила обновляются из конфигурационного файла при запуске. Ранее эти правила «забывались», когда в запросе к серверу присутствовали параметры, включающие или выключающие правила. Теперь требования из запроса будут минимально перекрывать настройки, хранящиеся в конфигурационном файле.
  • «Подчищены» некоторые внутренние интерфейсы для Java и HTTP.

 , ,


          APLIKASI BENGKEL GRATIS FULL VERSION   
Program administrasi bengkel/service center dengan fasilitas super lengkap . Cocok untuk usaha bengkel/service apa saja. TENOL siap digunakan dengan alat barcode scanner dan bisa langsung cetak label barcode dengan printer inkjet biasa. TENOL dilengkapi fasilitas laporan SMS otomatis yang membuat Anda tetap tenang walaupun berada di luar kota.


FITUR/FASILITAS:
1. Multi pengguna, multi akses Pengguna program dapat ditambah sesuai kebutuhan dan diatur sesuai username masing-masing pengguna dan hak aksesnya. Hak akses dapat dibagi menjadi 2, hak akses admin atau hak akses user.

2. Network/Jaringan komputer Program dapat diinstall pada banyak komputer dalam sebuah jaringan komputer (LAN) dengan tetap menggunakan sebuah database yang terpusat. Sehingga proses administrasi dapat dilakukan secara simultan dari beberapa komputer.

3. Backup database Proses backup database dapat diatur agar secara otomatis untuk menghindari hal-hal yang tidak diinginkan.

4. Rollback database Jika terjadi hal-hal yang tidak diinginkan (kerusakan) pada database, maka database dapat di-rollback (dikembalikan) menggunakan database hasil backup sebelumnya.


5. Database terpusat Seluruh aplikasi dari menggunakan sebuah database yang terpusat, sehingga data dapat digunakan secara bersamaan.

6. SMS notifikasi Untuk pemilik usaha: tersedia fitur sms opening (saat buka toko/program dijalankan), sms closing (saat tutup toko/program ditutup), sms ganti user (saat terjadi pergantian shift/ganti pengguna program). Untuk pelanggan: tersedia fitur sms pasca transaksi (dikirimkan setelah proses terima/selesai service).

7. SMS autoreply Untuk pemilik usaha: tersedia fitur sms cek rekap transaksi dan cek informasi pengguna program. Untuk pelanggan: tersedia fitur sms cek status service barang.

8. Pembatasan jumlah SMS Untuk menghindari terjadinya spam maka program dapat diatur agar membatasi jumlah sms dari pelanggan yang akan diproses. Apabila jumlah sms dari pelanggan melebihi batas yang telah ditentukan maka sms akan diabaikan.

9. SMS party Fitur ini dapat digunakan untuk mengirim sms ke banyak nomor (pelanggan maupun non pelanggan) sekaligus untuk kepentingan promosi atau pemberitahuan lainnya.

10. SMS template Konten sms dapat disusun melalui template yang ditetapkan. [CUSTOMER] nama pelanggan, [NO.SERVICE] nomor service, [JENIS] jenis barang yang diservice, [MERK] merk barang, [SERIAL] serial barang, [GARANSI] masa berlaku garansi, [BIAYA] biaya service dan penggantian komponen.

11. Cek pulsa Cek pulsa maupun cek bonus pulsa dapat dilakukan oleh pemilik usaha melalui antarmuka program maupun melalui sms.

12. Bebas memilih operator seluler Sms gateway menggunakan long number (nomor biasa) yang bekerja pada jaringan GSM, sehingga nomor seluler dapat ditentukan sendiri serta biaya sms dapat ditekan semurah mungkin.

13. Data program Data master barang/stok barang, data supplier dan data pelanggan.

14. Laporan Laporan penjualan, transaksi service, transaksi keuangan, transaksi pengeluaran, neraca rugi laba.

15. Pencetakan Cetak struk penjualan dengan printer dot matrix/mini printer, cetak laporan penjualan, cetak laporan transaksi kas/keuangan, cetak laporan data service, cetak nota penerimaan barang, cetak nota pengambilan barang, cetak label barcode barang. Teks keterangan pada footer struk penjualan, nota terima dan nota pengambilan barang dapat diubah sesuai kebutuhan.

16. Ekspor/impor data Mendukung ekspor/impor data ke/dari file MS Excel dan file teks .txt

17. Mendukung penggunaan barcode scanner Untuk mempercepat proses penjualan dapat digunakan barcode scanner dalam proses input data barang.

18. Laporan penjualan HTML Laporan penjualan harian html dapat diupload ke internet untuk keperluan online monitoring.

19. Ganti logo perusahaan Logo perusahaan pada header program dapat diganti dengan memodifikasi file logo1.jpg pada folder Media. Master file untuk pembuatan logo (master_logo1.jpg) telah disertakan. Untuk mengubah logo yang muncul pada nota terima/nota pengambilan barang service dapat dilakukan dengan mengganti file logo2.jpg. 






FREE & GRATIS ..... 100% full Licensi
Download APLIKASI BENGKEL installer nya disini (skip ad)
Download Keygen-nya Disini (skip ad)

Extrak File Zip kedalam dimana Software atau Programnya ter-install.....
Trik-Trik Cara Gunakan Keygen Saya :
1. Setelah Extrak File... ada File namanya Tenol-Galsoft.exe... Jalankan Programnya klik Tenol-Galsoft.exe dan masukkan data-data anda dulu,seperti nama usaha atau toko dll sebelum gunakan Imran-Sniffer.exe
2. Setelah Data-data anda masukkan ...tutup program dan silahkan gunakan Imran-Sniffer.exe  -nya-- > Muncullah Kode Aktivasinya silahkan copy ke Note Pad aja dulu...
3. Hasil copy (ka-nya) silahkan masukan ke menu registrasi
 


jangan lupa kunjungi MINI TOSERBA KAMI NANAONAYA.COM 

          REST API URI设计   

在了解REST API URI设计的规则之前,让我们快速浏览一些我们将要讨论的术语。

URIs

REST API使用统一资源标识符(URI)来寻址资源。在当今互联网上,充斥着各种各样的URI设计规则,既有像//api.example.com/louvre/leonardo-da-vinci/mona-lisa这样能够清楚的传达API资源模型的文章,也有很难理解的文章,例如://api.example.com/68dd0-a9d3-11e0-9f1c-0800200c9a66 ;Tim Berners-Lee在他的“Axioms of Web Architecture”一文中将URI的不透明度总结成一句话:

唯一可以使用标识符的是引用对象。在不取消引用时,就不应该查看URI字符串的内容以获取其他信息。 
——蒂姆·伯纳斯 - 李

客户端必须遵循Web的链接范例,将URI视为不透明标识符。

REST API设计人员应该在考虑将REST API资源模型传达给潜在的客户端开发者的前提下,创造URI。在这篇文章中,我将尝试为REST API URI 引入一套设计规则

先跳过规则,URI的通用语法也适用与本文中的URI。RFC 3986定义了通用URI语法,如下所示:

URI = scheme “://” authority “/” path [ “?” query ][ “#” fragment ]

规则1:URI结尾不应包含(/)

这是作为URI路径中处理中最重要的规则之一,正斜杠(/)不会增加语义值,且可能导致混淆。REST API不允许一个尾部的斜杠,不应该将它们包含在提供给客户端的链接的结尾处。

许多Web组件和框架将平等对待以下两个URI: 
http://api.canvas.com/shapes/ 
http://api.canvas.com/shapes

但是,实际上URI中的每个字符都会计入资源的唯一身份的识别中。

两个不同的URI映射到两个不同的资源。如果URI不同,那么资源也是如此,反之亦然。因此,REST API必须生成和传递精确的URI,不能容忍任何的客户端尝试不精确的资源定位。

有些API碰到这种情况,可能设计为让客户端重定向到相应没有尾斜杠的URI(也有可能会返回301 - 用来资源重定向)。

规则2:正斜杠分隔符(/)必须用来指示层级关系

URI的路径中的正斜杠(/)字符用于指示资源之间的层次关系。

例如: 
(http://api.canvas.com/shapes/polygons/quadrilaterals/squares ;

规则3:应使用连字符( - )来提高URI的可读性

为了使您的URI容易让人们理解,请使用连字符( - )字符来提高长路径中名称的可读性。在路径中,应该使用连字符代空格连接两个单词 。

例如: 
http://api.example.com/blogs/guy-levin/posts/this-is-my-first-post

规则4:不得在URI中使用下划线(_)

一些文本查看器为了区分强调URI,常常会在URI下加上下划线。这样下划线(_)字符可能被文本查看器中默认的下划线部分地遮蔽或完全隐藏。

为避免这种混淆,请使用连字符( - )而不是下划线

规则5:URI路径中首选小写字母

方便时,URI路径中首选小写字母,因为大写字母有时会导致一些问题。RFC 3986将URI定义为区分大小写,但scheme 和 host components除外。

例如: 
http://api.example.com/my-folder/my-doc

HTTP://API.EXAMPLE.COM/my-folder/my-doc 
这个URI很好。URI格式规范(RFC 3986)认为该URI与URI#1相同。

http://api.example.com/My-Folder/my-doc 
而这个URI与URI 1和2不同,这可能会导致不必要的混淆。

规则6:文件扩展名不应包含在URI中

在Web上,(.)字符通常用于分隔URI的文件名和扩展名。 
REST API不应在URI中包含人造文件扩展名,来指示邮件实体的格式。相反,他们应该依赖通过Content-Type中的header传递media type,来确定如何处理正文的内容。

http://api.college.com/students/3248234/courses/2005/fall.json 
http://api.college.com/students/3248234/courses/2005/fall

如上所示:不应使用文件扩展名来表示格式。

应鼓励REST API客户端使用HTTP提供的格式选择机制Accept request header。

为了是链接和调试更简单,REST API应该支持通过查询参数来支持媒体类型的选择。

规则7:端点名称是单数还是复数?

keep-it-simple的原则在这里同样适用。虽然一些”语法学家”会告诉你使用复数来描述资源的单个实例是错误的,但实际上为了保持URI格式的一致性建议使用复数形式。

本着API提供商更容易实施和API使用者更容易操作的原则,可以不必纠结一些奇怪的复数(person/people,goose/geese)。

但是应该怎么处理层级关系呢?如果一个关系只能存在于另一个资源中,RESTful原则就会提供有用的指导。我们来看一下这个例子。学生有一些课程。这些课程在逻辑上映射到学生终端,如下所示:

http://api.college.com/students/3248234/courses - 检索id为3248234的学生学习的所有课程的清单。 
http://api.college.com/students/3248234/courses/physics -检索该学生的物理课程

结论

当你在设计REST API服务时,您必须注意这些由URI定义的资源。

正在构建的服务中的每个资源将至少有一个URI标识它。这个URI最好是有意义的,且能充分描述资源。URI应遵循可预测的层次结构,用来提高其可理解性,可用性:可预测的意义在于它们是一致的,它的层次结构在数据关系上是有意义的。

RESTful API是为使用者编写的。URI的名称和结构应该能够向使用者传达更清晰的含义。通过遵循上述规则,您将创建一个更清晰的的REST API与更友好的客户端。这些并不是REST的规则或约束,仅仅是API的增强和补充。

我也建议你来看看http://blog.restcase.com/5-basic-rest-api-design-guidelines/这篇文章。

最后,望大家牢记:你在为你的客户端设计API URI,而不仅仅是为你的数据。



华梦行 2017-06-26 09:50 发表评论

          Kindle: How do I extract highlights of MBS1-files?   
Hello! 1) My old Kindle Paperwhite got stolen and now I have a new one. 2) The books have been synchronized, but not the "MyClippings.txt". Those are not books bought on Amazon. I sent them via Calibre to the Kindle email. 3) However, the book got downloaded from the Amazon cloud and even all highlights appear again on my Kindle (but the hightlights do NOT appear in myclippings.txt). 4) How do I extract those highlights (which are *not* in MyClippings.txt? Can I extract them from the MBP1-files?) 5) Calibre does not show any highlights when I open the book manually. 6) To put all in a nutshell: How do I extract my highlights from a MBP1-file? Thank you!
          ЛГП: Золотая рожь, да кудрявый лен...   

Это цитата сообщения smart50 Оригинальное сообщениеЗолотая рожь, да кудрявый лен...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

..............................

Сяду я верхом на коня,
Ты неси по полю меня,
По бескрайнему полю моему,
По бескрайнему полю моему…

Дай-ка я пойду посмотрю,
Где рождает поле зарю,
Ай брусничный цвет, алый да рассвет,
Али есть то место, али его нет.
Ай брусничный цвет, алый да рассвет,
Али есть то место, али его нет.

Полюшко мое - родники,
Дальних деревень огоньки,
Золотая рожь, да кудрявый лен...
Я влюблен в тебя, Россия, влюблен
Золотая рожь, да кудрявый лен...
Я влюблен в тебя, Россия, влюблен...

Будет добрым год хлебороб
Было всяко-всяко пройдет
Пой златая рожь,пой кудрявый клен
Пой как я в Россию влюблен
Пой златая рожь,пой кудрявый клен
Мы идем с конем по полю вдвоем.

 

Русская Народная - Только мы с конём.

 

 

 

 
 

1827016_0a027050756e2bb6cbbca5e941c5b453 (270x96, 23Kb)

 

 

 

 

 

 

 

 

 

 

 

 

 

foto

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Слова Инны Гофф, музыка Яна Френкеля

ТЕКСТ ПЕСНИ

Поле, русское поле…
Светит луна или падает снег -
Счастьем и болью связан с тобою,
Нет, не забыть тебя сердцу вовек.
Русское поле, русское поле…
Сколько дорог прошагать мне пришлось!
Ты - моя юность, ты - моя воля.
То, что сбылось, то, что в жизни сбылось!

Не сравнятся с тобой ни леса, ни моря.
Ты со мной, моё поле, студит ветер висок.
Здесь Отчизна моя, и скажу не тая:
"Здравствуй, русское поле,
Я твой тонкий колосок!"

Поле, русское поле…
Пусть я давно человек городской -
Запах полыни, вешние ливни
Вдруг обожгут меня прежней тоской.
Русское поле, русское поле…
Я, как и ты, ожиданьем живу -
Верю молчанью, как обещанью,
Пасмурным днём вижу я синеву!

Не сравнятся с тобой ни леса, ни моря.
Ты со мной, моё поле, студит ветер висок.
Здесь Отчизна моя, и скажу не тая:
"Здравствуй, русское поле,
Я твой тонкий колосок!"

Поле, русское поле…

 

 

 

 

 

 

 

 

 

 

 

1827016_RkrasivoIG2PESEmEaErEt50 (295x57, 5Kb)

 (97x51, 3Kb)

 

 

1827016_0a027050756e2bb6cbbca5e941c5b453 (270x96, 23Kb)

 

 

Или мне снится, иль чудится мне,
Будто скачу я на быстром коне
В синее утро, над синим ручьем,
В призрачный мир, где мы только вдвоем,
В мир, озаренный улыбкой одной,
В мир, окрыленный заветной мечтой,
В мир бесконечно цветущей весны,
В мир, где сбываются детские сны!
Легкою птицею, конь мой, лети,
Как я боюсь затеряться в пути,
Как я боюсь покориться судьбе,
Как я боюсь ошибиться в тебе!
Быстрые кони волшебной страны,
Вы обязательно людям нужны
Гордо летящие в светлую даль,
Где отступают и боль, и печаль.


Автор: Рубцов Николай

 


 

 

 

1827016_RCitatxPRdalee (199x39, 3Kb)

На степь упала тишина ночная

 (97x51, 3Kb)

 

 

 

 

1827016_12800160157669_65 (300x77, 8Kb)

 

 

 

 

 


          zuniga написал(а) в теме: Что нужно поправить в скрипте?   
Добрый день, есть скрипт формы обратной связи с прикреплением аттачей. Пол года назад тестировал его на бесплатном хостинге, все отлично работало. Сегодня опять его загрузил, но помимо формы вылезло много ошибок, они видны на скриншоте расположенном ниже . Загружал форму на другие хостинги, отображается отлично, но письма не приходят с нее, видимо отключена функция "зенд майл". Скажите можно ли исправить форму чтобы исчезли все ошибки? Просто это единственный бесплатный хостинг где работает функция "зенд майл", а платный хостинг ради одной формы брать не хочется. Вот скриншот ошибок

user posted image

А это код двух php файлов:

Основной phMailer.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">

<
head>
<
meta http-equiv="Content-Language" content="ru" />
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Написать мне письмо</title>
<
style type="text/css">
.
style1 {
text-align: center;
}
</style>
</
head>

<
body>

<
table style="width: 800px" cellspacing="1" align="center">
<
tr>
<
td class="style1">Написать мне письмо<br />
<
br />
<
br />
<?php
/*
//================================================================================
* phphq.Net Custom PHP Scripts *
//================================================================================
:- Script Name: phMailer
:- Version: 1.5.1
:- Release Date: Jan 27th 2004
:- Last Update: Jan 25 2010
:- Author: Scott Lucht
<scott@phphq.net> http://www.phphq.net
:- Copyright© 2010 All Rights Reserved
:-
:- This script is free software; you can redistribute it and/or modify
:- it under the terms of the GNU General Public License as published by
:- the Free Software Foundation; either version 2 of the License, or
:- (at your option) any later version.
:-
:- This script is distributed in the hope that it will be useful,
:- but WITHOUT ANY WARRANTY; without even the implied warranty of
:- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
:- GNU General Public License for more details.
:-
http://www.gnu.org/licenses/gpl.txt
:-
//================================================================================
* Description
//================================================================================
:- phMailer is a very simple PHP mail script that supports attachments. This is very helpful if you want your
:- visitors to be able to contact you without them knowing your real email address. On great feature of this
:- script is the ability to allow users to attach multiple files when sending an email directly from your site. Of
:- course, you can disable this feature if you wish. Any file type is accepted as long as they are included in your
:- file extension list. Another popular use for a PHP email form is protection against spam bots. Spam, is a major
:- downside of email, and placing your email publicly on your website is asking for spam. Spam bots can take your
:- email address right off your site and add it to thousands of spam databases, resulting in a never ending supply
:- of spam for you. I coded this script, because I couldn't find a simple mail script that would allow my visitors to
:- send me attachments while keeping my email hidden from spam bots.
//================================================================================
* Setup
//================================================================================
:- To setup this script, simply upload this file to your website. Then edit the variables found herein to adjust
:- how the form works.
//================================================================================
* Change log
//================================================================================
:- Version 1.0
:- 1) Initial Release
:- Version 1.1
:- 1) Minor
bug fixes / html improvement
:- Version 1.2
:- 1) Added CSS styling
:- 2) Cleaned html and improved form style
:- 3) Removed html embedded directly in php tags
:- 4) Improved security checks to prevent forging email headers
:- Version 1.3
:- 1) Cleaned up html and CSS styles
:- 2) Added support to attach multiple files
:- 3) Minor
bug fixes
:- Version 1.4
:- 1) Re-write of many core functions to improve attachment handling
:- 2) Added feature that allows users to select an email address from a drop down
:- 3) Minor
bug fixes
:- Version 1.5
:- 1) Added multiple new security checks to prevent email header forging.
:- 2) Cleaned up script and reduced PHP needed to complete tasks.
:- 3) Minor
bug fixes
:- Version 1.5.1
:- 1) Cleaned up script and reduced PHP needed to complete tasks.
:- 2) Added text/html as email type to allow users to use line breaks when sending a message. Messages
:- now display correctly in newer email clients such as Gmail.
:- 3) Removed unnecessary email headers and improved standardization
:- 4) Made sure script is completely compatible with PHP 5.3.x
//================================================================================
* Frequently Asked Questions
//================================================================================
:- Q1: I never receive any mail, but people say they have emailed me through the form.
:- 1) Try the mailtest.php file that came with this script. If that fails, then mail() is probably not setup right.
:- 2) Double check to make sure your email address is correct.
:- 3) Try using the form with $allowattach set to 0. It could be your mail server rejecting the mail
:- because of attachments.
:- 4) If you are on windows, make sure your SMTP is set to your mail server. If you are on Linux, make sure
:- your sendmail path if correct. Again, ask your host if you are unsure about this.

:- Q2: I never receive any attachments.
:- 1) Maybe your server has some security against uploading files or sending attachments through mail,
:- check with your host on this issue. This script does send attachments, it's been tested many
:- times on many different platforms and versions of PHP with safe mode on and off.
:- 2) Maybe the files people are submitting are too big. Check php.ini for the post_max_size,
:- upload_max_filesize, file_uploads, max_execution_time you may have to check with your host on this.
:-
:- Q3: The page takes long to load and then gives me a page cannot be displayed or a blank page.
:- 1) This is usually due to a low value in php.ini for "max_execution_time".
:- 2) A newer ini setting "max_file_uploads" in php 5.2.12 was added which may be limiting the number
of simultaneous uploads.
:- 3) Your "upload_max_filesize" and "post_max_size" in php.ini might be set to low.
:-
:- Q4: How do I edit the colors of the form?
:- 1) You will need to edit the CSS near the bottom of the script to change the looks and colors of the form.
:- Check
http://www.w3schools.com/css/default.asp for more information on CSS.
:-
:- Q5: Can I add more fields for the users to enter information in?
:- 1) That's the beauty of PHP! It's open source, you can edit it all you want, change whatever you don't like.
:- Just please leave in my copyright. So many times I see my script without it and it makes me sad.
:-
:- Q6: Dude! Can you add more fields for me? I don't know PHP!
:- 1) Maybe, but I do usually charge a fee depending on what you want done. Don't freak out! It's usually
:- a very small one. I can't do everything for free..
:-
:- Q7: Can I remove your copyright link?
:- 1) I can't physically stop you. However, I really appreciate it when people leave it intact.
:- Some people donate , , to take it off.
:-
:- Q8: You never respond to my emails or to my questions in your forums!
:- 1) I'm a very busy guy. I'm out of town a lot, and at any given time I have several projects going on.
:- I get a lot of emails about this script, not to mention my other ones.
:- 2) I only understand English. If your English is very bad please write in your native language and then
:- translate it to English using
<http://babelfish.altavista.com/babelfish/tr>.
:- 3) If you are going to contact me, describe the issue you are having as completely as possible.
:- "dude me form don't work see it at blah.com what's wrong??!?!" will get no response, ever. Write
:- in detail what the problem is. Spend a minute on it, and maybe I'll take some of my time to reply.
/*
//================================================================================
* ! ATTENTION !
//================================================================================
:- Please read the above FAQ before emailing me/
*/

// This will show in the browsers title bar and at the top of the form.

$websitename="Отправка письма";

// Allowed file types. Please remember to keep the format of this array, add the file extensions you want
// WITHOUT the dot. Please also be aware that certain file types (such as exe) may contain malware.

$allowtypes=array("zip", "rar", "txt", "doc", "jpg", "png", "gif", "odt", "xml");

// What's your email address? Seperate email addresses with commas for multiple email addresses.
$myemail="myemail@yandex.ru";

// What priority should the script send the mail? 1 (Highest), 2 (High), 3 (Normal), 4 (Low), 5 (Lowest).
$priority="3";

// Should we allow visitors to attach files? How Many? 0 = Do not allow attachments,
// 1 = allow only 1 file to be attached, 2 = allow two files etc.

$allowattach="1";

// Maximum file size for attachments in KB NOT Bytes for simplicity. MAKE SURE your php.ini can handel it,
// post_max_size, upload_max_filesize, file_uploads, max_execution_time!
// 2048kb = 2MB, 1024kb = 1MB, 512kb = 1/2MB etc..

$max_file_size="1024";

// Maximum file size for all attachments combined in KB. MAKE SURE your php.ini can handel it,
// post_max_size, upload_max_filesize, file_uploads, max_execution_time!
// 2048kb = 2MB, 1024kb = 1MB, 512kb = 1/2MB etc..

$max_file_total="2048";

// Value for the Submit Button
$submitvalue=" Отправить ";

// Value for the Reset Button
$resetvalue=" Очистить ";

// Default subject? This will be sent if the user does not type in a subject
$defaultsubject="No Subject";

// Because many requested it, this feature will add a drop down box for the user to select a array of
// subjects that you specify below.
// True = Use this feature, False = do not use this feature

$use_subject_drop=false;

// This is an array of the email subjects the user can pick from. Make sure you keep the format of
// this array or you will get errors.
// Look at <http://novahq.net/forum/showthread.php?t=38718> for examples on how to use this feature.

$subjects=array("Department 1", "Department 2", "Department 3");

// This is an array of the email addresses for the array above. There must be an email FOR EACH
// array value specified above. You can have only 1 department if you want.
// YOU MUST HAVE THE SAME AMMOUNT OF $subjects and $emails or this WILL NOT work correctly!
// The emails also must be in order for what you specify above!
// Seperate email addresses by a comma to send an email to multiple addresses.

$emails=array("dept_1@domain.com", "dept_2@domain.com", "dept_3@domain.com");

// This is the message that is sent after the email has been sent. You can use html here.
// If you want to redirect users to another page on your website use this:
// <script type=\"text/javascript\">window.location=\"http://www.YOUR_URL.com/page.html\";</script>

$thanksmessage="Ваше письмо отправлено! В ближайшее время я отвечу.";

/*
//================================================================================
* ! ATTENTION !
//================================================================================
: Don't edit below this line.
*/

// Function to get the extension of the uploaded file.

function get_ext($key) {
$key=strtolower(substr(strrchr($key, "."), 1));
$key=str_replace("jpeg", "jpg", $key);
return $key;
}

// Function used to attach files to the message
function phattach($file, $name, $boundary) {

$fp=fopen($file, "r");
$str=fread($fp, filesize($file));
$str=chunk_split(base64_encode($str));
$message="--".$boundary."\n";
$message.="Content-Type: application/octet-stream; name=\"".$name."\"\n";
$message.="Content-disposition: attachment; filename=\"".$name."\"\n";
$message.="Content-Transfer-Encoding: base64\n";
$message.="\n";
$message.="$str\n";
$message.="\n";

return $message;
}

//Little bit of security from people forging headers. People are mean sometimes :(
function clean_msg($key) {
$key=str_replace("\r", "", $key);
$key=str_replace("\n", "", $key);
$find=array(
"/bcc\:/i",
"/Content\-Type\:/i",
"/Mime\-Type\:/i",
"/cc\:/i",
"/to\:/i"
);
$key=preg_replace($find, "", $key);
return $key;
}

// Initilize some variables
$error="";
$sent_mail=false;

// When the form is submitted
If($_POST['submit']==true) {
extract($_POST, EXTR_SKIP);

// Check the form for errors
If(trim($yourname)=="") {
$error.="You did not enter your name!<br />";
}

If(trim($youremail)=="") {
$error.="You did not enter your email!<br />";
} Elseif(!preg_match("/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/", $youremail)) {
$error.="Invalid email address.<br />";
}

If(trim($emailsubject)=="") {
$emailsubject=$defaultsubject;
}

If(trim($yourmessage)=="") {
$error.="You did not enter a message!<br />";
}

// Verify Attchment info
If($allowattach > 0) {

// Get the total size of all uploaded files
If((array_sum($_FILES['attachment']['size'])) > ($max_file_total*1024)) {

$error.="The max size allowed for all your files is ".$max_file_total."kb<br />";

} Else {

//Loop through each of the files
For($i=0; $i <= $allowattach-1; $i++) {

If($_FILES['attachment']['name'][$i]) {

//Check if the file type uploaded is a valid file type.
If(!in_array(get_ext($_FILES['attachment']['name'][$i]), $allowtypes)) {

$error.= "Invalid file type for your file: ".$_FILES['attachment']['name'][$i]."<br />";

//Check the size of each file
} Elseif(($_FILES['attachment']['size'][$i]) > ($max_file_size*1024)) {

$error.= "Your file: ".$_FILES['attachment']['name'][$i]." is to big.<br />";

} // If in_array

} // If Files

} // For

} // Else array_sum($_FILES['attachment']['size'])

} // If Allowattach

If($error) {

$display_message=$error;

} Else {

If($use_subject_drop AND is_array($subjects) AND is_array($emails)) {
$subject_count=count($subjects);
$email_count=count($emails);

If($subject_count==$email_count) {

$myemail=$emails[$emailsubject];
$emailsubject=$subjects[$emailsubject];

} // If $subject_count

} // If $use_subject_drop

$boundary=md5(uniqid(time()));

//Headers
$headers="Return-Path: <".clean_msg($youremail).">\n";
$headers.="From: ".clean_msg($yourname)." <".clean_msg($youremail).">\n";
$headers.="X-Mailer: PHP/".phpversion()."\n";
$headers.="X-Sender: ".$_SERVER['REMOTE_ADDR']."\n";
$headers.="X-Priority: ".$priority."\n";
$headers.="MIME-Version: 1.0\n";
$headers.="Content-Type: multipart/mixed; boundary=\"".$boundary."\"\n";
$headers.="This is a multi-part message in MIME format.\n";

//Message
$message = "--".$boundary."\n";
$message.="Content-Type: text/html; charset=\"iso-8859-1\"\n";
$message.="Content-Transfer-Encoding: quoted-printable\n";
$message.="\n";
$message.=clean_msg(nl2br(strip_tags($yourmessage)));
$message.="\n";

//Add attachments to message
If($allowattach > 0) {

For($i=0; $i <= $allowattach-1; $i++) {

If($_FILES['attachment']['tmp_name'][$i]) {

$message.=phattach($_FILES['attachment']['tmp_name'][$i], $_FILES['attachment']['name'][$i], $boundary);

} //If $_FILES['attachment']['name'][$i]

} //For

} // If

// End the message

$message.="--".$boundary."--\n";

// Send the completed message
If(!mail($myemail, clean_msg($emailsubject), $message, $headers)) {

Exit("An error has occured, please report this to the website administrator.\n");

} Else {

$sent_mail=true;

}

}
// Else

} // $_POST

/*
//================================================================================
* Start the form layout
//================================================================================
:- Use the html below to customize the form.
*/

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<
head>
<
meta http-equiv="Content-Language" content="en-us" />
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<
title><?php echo $websitename; ?> - Powered By phMailer</title>

<
style type="text/css">
body{
background-color:#FFFFFF;
font-family: Verdana, Arial, sans-serif;
font-size: 12pt;
color: #000000;
}

.error_message{
font-family: Verdana, Arial, sans-serif;
font-size: 11pt;
color: #FF0000;
}

.thanks_message{
font-family: Verdana, Arial, sans-serif;
font-size: 11pt;
color: #000000;
}

a:link{
text-decoration:none;
color: #000000;
}
a:visited{
text-decoration:none;
color: #000000;
}
a:hover{
text-decoration:none;
color: #000000;
}

.table {
border-collapse:collapse;
border:1px solid #000000;
width:500px;
}

.table_header{
border:1px solid #070707;
background-color:#C03738;
font-family: Verdana, Arial, sans-serif;
font-size: 11pt;
font-weight:bold;
color: #FFFFFF;
text-align:center;
padding:2px;
}

.attach_info{
border:1px solid #070707;
background-color:#EBEBEB;
font-family: Verdana, Arial, sans-serif;
font-size: 8pt;
color: #000000;
padding:4px;
}


.table_body{
border:1px solid #070707;
background-color:#EBEBEB;
font-family: Verdana, Arial, sans-serif;
font-size: 10pt;
color: #000000;
padding:2px;
}

.table_footer{
border:1px solid #070707;
background-color:#C03738;
text-align:center;
padding:2px;
}

input,select,textarea {
font-family: Verdana, Arial, sans-serif;
font-size: 10pt;
color: #000000;
background-color:#AFAEAE;
border:1px solid #000000;
}

.copyright {
border:0px;
font-family: Verdana, Arial, sans-serif;
font-size: 9pt;
color: #000000;
text-align:right;
}

form{
padding:0px;
margin:0px;
}
</style>

<
script type="text/javascript">
var error="";
e_regex = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/;

function Checkit(theform) {
if(theform.yourname.value=="") {
error+="Заполните поле Твое имя\n";
}

if(theform.youremail.value=="") {
error+="Заполните поле Твой email\n";
} else if(!e_regex.test(theform.youremail.value)) {
error+="Invalid email address\n";
}

if(theform.yourmessage.value=="") {
error+="Заполните поле Сообщение\n";
}

if(error) {
alert('**Ошибки:**\n\n' + error);
error="";
return false;
} else {
return true;
}
}

</script>

</
head>
<
body>
<?If($display_message) {?>

<div align="center" class="error_message"><b><?=$display_message;?></b></div>
<
br />

<?}?>

<?
If($sent_mail!=true) {?>

<form method="post" action="<?=$_SERVER['PHP_SELF'];?>" enctype="multipart/form-data" name="phmailer" onsubmit="return Checkit(this);">
<
table align="center" class="table">
<
tr>
          Jak zabezpieczyć stronę opartą o WordPress   

Sprawdź jak skutecznie zabezpieczyć stronę internetową opartą o popularny system CMS WordPress. Konfiguracja kokpitu, pliku .htaccess, robots.txt, uprawnienia.
          Efficcess ist ein vollfunktionaler, plattformübergreifender Manager für eure persönlichen Informationen.   
Die mobilie Version ist nicht kostenlos! Sie kann aber mit dem "Registration key" aus der Readme.txt-datei freigeschaltet werden
          Online Generators for Web Developers   

Originally posted on: http://lancerobinson.net/archive/2006/11/14/OnlineGeneratorsforWebDevelopers.aspx

And lot's of them including: ascii generators, color generators, css generators, domain name generators, email generators, favicon generators, flash generators, form generators, fun & humor, graphics & image generators, htaccess generators, metatag generators, misc generators, password generators, pdf generators, php & MySQL generators, popup generators, robots.txt generators, rss generators, sitemap generators, text generators, tooltip generators, weblog generators, and xml generators.

Whew!  There is around 200 in total.

Smashing Magazine's Online Generator List


          بهینه سازی فایل وردپرس robots.txt   

فایل Robots.txt چطور بر سئو سایت شما تاثیر میگذارد و چرا تا این اندازه اهمیت دارد؟ در واقع این فایل نقش مهمی را در SEO کلی سایت شما دارد و شما قطعا به این فایل نیاز خواهید داشت . در ادامه دلایل الزام وجود این فایل را بیان خواهم کرد.در این مقاله روش بهینه سازی فایل وردپرس […]

نوشته بهینه سازی فایل وردپرس robots.txt اولین بار در تالار وردپرس پدیدار شد.


          "хорёк" - программа отслеживания вступивших и отписавшихся в группах ВК   

простая программка для мониторинга вступивших и отписавшихся пользователей в группах ВКонтакте

(аналог "дезертира" только без использования браузера)

 

- отсутствуют какие - либо ограничения по числу групп и участников

- обновление данных по группам происходит по желанию пользователя

- имеются дополнительные полезные функции

- программа не требует установки и не просит авторизации

 

для запуска программы распакуйте скачанный архив

 

вт https://www.virustotal.com/ru/file/0174d53bdb29891f3cd9153fce920e57eab7c3f9e14284fe5c9b0d90172e5413/analysis/1498995590/

переместите папку Ferret в корневой каталог диска С:

запустите exe файл

 

id вступивших сохраняются в папке с именем группы в файле join.txt

id отписавшихся там же в файле leave.txt

 

для пк ос windows


          Westboro Update v20170701-CODEX   
Read changelog.txt for information on updated content! Genre: Action, Adventure, Indie, RPG Developer: Carbomb Software Publisher: Carbomb Software, Nova Dimension Release Name: Westboro.Update.v20170701-CODEX Size: 8 MB Links: STEAM | NFO | Torrent Search Download: UPLOADGiG – NiTROFLARE – RAPiDGATOR
          [PATCH v3 17/18] devicetree/bindings: Add GCW vendor prefix   
Paul Cercueil writes: (Summary) Game Consoles Worldwide, mostly known under the acronym GCW, is the creator of the GCW Zero open-source video game system. 1 + 1 file changed, 1 insertion(+) v2: It's 'Game Consoles Worldwide', not 'Games Consoles Worldwide' v3: No change diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt index c03d20140366..5921aa1248fb 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.txt +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt @@ -114,6 +114,7 @@ focaltech FocalTech Systems Co.,Ltd friendlyarm Guangzhou FriendlyARM Computer Tech Co., Ltd fsl Freescale Semiconductor fujitsu Fujitsu Ltd.
          Simple Website Data Scrape by BradRX7   
I need all URLs from this website scraped: https://myip.ms/browse/sites/1/own/376714 There are 687 pages you will need to get all URLs from. You do not need to format, you can simply copy/paste the entire text from the pages and paste into one .txt file, that's fine... (Budget: $30 - $250 USD, Jobs: Data Entry, Excel, Web Scraping, Web Search)
          BQ-Mobile BQ-9745G   

Categories:

ROM  BQ-Mobile BQ-9745G – ROM Android 5.1 ONLY MT6580 Official ROM BQ-Mobile Version: BQ-9745G_20160715 - BQ-9745G 5.1 LMY47I ———————————————————————————————————————– Update Official ROM BQ-Mobile Version: BQ-9745G_20160723 - BQ-9745G 5.1 LMY47I Gapps include –  No Rooted Language support : Multilang Install ROM : - Unpack FlashTools, and Click on Flash_tool.exe - Select "scatter-Loading" and search MT6580_Android_scatter.txt in ROM - Wait file to be added into [...]

(Read more...)


          Kotlin 开发实践 带你看破高阶函数   

转载请注明出处:http://blog.csdn.net/smartbetter/article/details/74011851

大家好,今天就来带大家快速看破 Kotlin 的高阶函数并可以灵活运用于自己的项目中去。高阶函数是指把函数作为参数或者返回值的一类函数。那么为什么在 Kotlin 中可以拥有高阶函数呢?在 Kotlin 中,函数可是一等公民,不再需要到处创建匿名内部类对象。函数的引用可以自由赋值传递并且在合适的时候调用。函数与闭包的特性可以算是 Kotlin 语言最大的特性了。

1.函数引用的方式

高阶函数是指传入或者返回函数的函数。这里我们介绍三种函数引用的方式:包级别函数;直接用类名引用的方式;调用者引用成员方法的方式。

fun main(args: Array<String>) {
    args.forEach(::println) // 引用包级别函数 ::函数名

    args.filter(String::isNotEmpty) // 直接用类名引用,过滤空字符串

    val pdfPrinter = PdfPrinter() // 先创建实例
    args.forEach(pdfPrinter::println) // 引用成员方法 类型::方法
}

class PdfPrinter{
    fun println(any: Any){
        kotlin.io.println(any) // 此处简写的话会递归调用我们自己的 println
    }
}

我们点击 forEach 进去看一下:

public inline fun <T> Array<out T>.forEach(action: (T) -> Unit): Unit {
    for (element in this) action(element)
}

它接受的参数是一个 T 类型的参数并且返回值是 Unit 类型,那么符合这个函数签名的函数就都可以传入。

我们再点击 filter 进去看一下:

public inline fun <T> Array<out T>.filter(predicate: (T) -> Boolean): List<T> {
    return filterTo(ArrayList<T>(), predicate)
}

它接受的参数是一个 T 类型的参数并且返回值是 Boolean 类型,那么符合这个函数签名的函数就都可以传入。

2.常见高阶函数

1.迭代 forEach

fun main(args: Array<String>) {
    args.forEach(::println)
}

2.集合映射 map 与 flatmap

val list = listOf(1,2,3,4,5);
val newList = list.map {
    it*2+3
}
newList.forEach(::println) // 输出 5 7 9 11 13

打平输出:

val list = listOf(1..5,3..8,10..15)
val flatList= list.flatMap {
    it
}
flatList.forEach(::println) // 输出 1 2 3 4 5 3 4 5 6 7 8 10 11 12 13 14 15

3.reduce 与 fold

求和:

println((0..5).reduce { acc, i -> acc+i }) // 输出 15

如果需要添加初始值使用 fold:

println((0..5).fold(5) { acc, i -> acc+i }) // 输出 20

fold 除了添加初始值可以使用外,还可以做一些其他事情,例如拼接字符串:

println((0..5).fold(StringBuilder()) { acc, i -> acc.append(i).append(",") }) // 输出 0,1,2,3,4,5,

拼接字符串也可以使用另一种方法:

println((0..5).joinToString(",")) // 输出 0,1,2,3,4,5

除了 fold,还有 foldIndexed(把序号也传了进来)、foldRight(倒着来)、foldRightIndexed 这几个函数。

4.过滤 filter 与 takeWhile

过滤奇数:

println((0..5).filter {it%2==1}) // 输出 [1, 3, 5]

takeWhile 可以在遇到不符合条件的时候,结束取数据:

println((0..5).takeWhile {it<3}) // 输出 [0, 1, 2]

5.let /apply /with /use

1.let

data class Person(val name: String, val age:Int)

fun main(args: Array<String>) {
    findPerson()?.let { person -> // 统一判断,如果不为空就 let
        println(person.name)
        println(person.age)
    }
}

fun findPerson(): Person?{
    return null
}

我们点击 let 进去看一下:

public inline fun <T, R> T.let(block: (T) -> R): R = block(this)

可以看到 let 是 T 的一个扩展方法。

2.apply

下面我们再来看下 apply:

data class Person(val name: String, val age:Int){
    fun printName(){
        println("name is $name")
    }
}

fun main(args: Array<String>) {
    findPerson()?.apply {
        printName()
        print(age)
    }
}

fun findPerson(): Person?{
    return null
}

调用 apply 后,我们可以发现可以直接调用 printName 方法和 age。我们点击 apply 进去看一下:

public inline fun <T> T.apply(block: T.() -> Unit): T { block(); return this }

可以看到 apply 其实也是 T 的一个扩展方法。

3.with

除了 apply,还有一个 with 方法,我们看一下 with:

public inline fun <T, R> with(receiver: T, block: T.() -> R): R = receiver.block()

对比 apply,with 不再是扩展方法,而且多了一个 T 参数,所以 apply 和 with 的区别就是 receiver 是用来调的还是用来传的。

fun main(args: Array<String>) {
    val br = BufferedReader(FileReader("hello.txt"))
    with(br){
        var line: String?
        while (true){
            line = readLine()?: break
            println(line)
        }
        close()
    }
}

4.use

针对 with 中使用到的方法,每次都需要使用 close(),那么我们还可以简化:

fun main(args: Array<String>) {
    BufferedReader(FileReader("hello.txt")).use {
        var line: String?
        while (true){
            line = it.readLine()?: break // 注意是用 it 调用
            println(line)
        }
    }
}

但是这么读一个文本显得过于繁琐,Kotlin 还为我们提供了更简洁的封装:

fun main(args: Array<String>) {
    val br = BufferedReader(FileReader("hello.txt")).readText()
}

这些常见的高阶函数对简洁代码非常有帮助,要多多使用。

3.尾递归优化 tailrec

递归是指程序调用自身的编程技巧,递归的层次太深了很容易引发Stack Overflow(堆栈溢出),这是递归的硬伤。

这里就介绍一下特定情况下的一些编译优化措施。函数在调用自己之后没有任何操作,这种情况就是尾递归。

// 定义一个链表结点
data class ListNode(val value: Int, var next:ListNode? = null)

fun findListNode(head: ListNode?, value: Int): ListNode?{
    head?: return null
    if (head.value == value) return head
    return findListNode(head.next, value)
}

这就是一个简单的递归程序,可以看到,调用自身(findListNode)之后直接返回了,没有做任何操作,这就是尾递归。

下面看一个求阶乘的递归写法:

fun factorial(n: Long): Long{
    return n* factorial(n-1)
}

注意它在调用自身后还有一个 n* 操作,这就不是尾递归,至此尾递归的概念就很容易理解了。

// 定义一个树
data class TreeNode(val value: Int){
    var left: TreeNode? = null // 左子树
    var right: TreeNode? = null // 右子树
}

fun findTreeNode(root: TreeNode?, value: Int): TreeNode?{
    root?: return null
    if (root.value == value) return root
    return findTreeNode(root.left, value)?: return findTreeNode(root.right, value)
}

像这种调用完之后又调用了一遍自己就不算尾递归了。

下面我们再来看下尾递归的优化,尾递归优化的实现实际上是迭代的实现,只需要添加 tailrec 关键字即可,在编译器编译的时候就可以帮我们把代码变成迭代,提高运行效率,避免Stack Overflow(堆栈溢出)。

// 定义一个链表结点
data class ListNode(val value: Int, var next:ListNode? = null)

tailrec fun findListNode(head: ListNode?, value: Int): ListNode?{
    head?: return null
    if (head.value == value) return head
    return findListNode(head.next, value)
}

// 构建一个链表
fun main(args: Array<String>) {
    val MAX_NODE_COUNT = 100000
    val head = ListNode(0)
    var p = head
    for (i in 1..MAX_NODE_COUNT){
        p.next = ListNode(i)
        p = p.next!!
    }
    println(findListNode(head, MAX_NODE_COUNT - 2)?.value) // 输出 99998
}

如果此处我们将 tailrec 去掉,重新运行程序会发现出现了Stack Overflow(堆栈溢出),所以此处尾递归优化的效果还是显而易见的。

4.闭包-函数式编程的福音

闭包其实就是函数的运行环境,它持有函数运行的状态。闭包应该算是 Kotlin 最核心特性之一了。使用好闭包可以让代码量大大减少。

fun add(x: Int): (Int)->Int{
    return fun(y: Int): Int{
        return x + y
    }
}

fun main(args: Array<String>) {
    val add6 = add(6)
    println(add6(6)) // 输出 12
}

除了可以在函数中定义函数,还可以在函数中定义类(一般不这么写):

fun add(x: Int): (Int)->Int{
    data class Person(val name: String, val age: Int)
    return fun(y: Int): Int{
        return x + y
    }
}

5.函数复合

先来看一道典型的数学题 m(x) = f(g(x)), m(x) 就是 f(g(x)) 的函数复合。

val add1 = {i: Int -> i + 2} // g(x)
val add2 = {i: Int -> i * 5} // f(x)

fun main(args: Array<String>) {
    println(add2(add1(1))) // (1+2)*5 输出 15

    // 使用函数复合
    val add1add2 = add1 addThen add2
    println(add1add2(1)) // 输出 15
}

// 函数复合
infix fun <P1, P2, R> Function1<P1, P2>.addThen(function: Function1<P2, R>): Function1<P1, R>{
    return fun(p1: P1): R{
        return function.invoke(this.invoke(p1))
    }
}

Function1< P1, P2 > 中 P1 代表传入的类型,P2 代表返回的类型。除了这种写法,还有另一种写法:

val add1 = {i: Int -> i + 2} // g(x)
val add2 = {i: Int -> i * 5} // f(x)

fun main(args: Array<String>) {
    val  add1add2 = add2 compose add1
    println(add1add2(1)) // 输出 15
}

// 函数复合
infix fun <P1, P2, R> Function1<P2, R>.compose(function: Function1<P1, P2>): Function1<P1, R>{
    return fun(p1: P1): R{
        return this.invoke(function.invoke(p1))
    }
}

6.科理化-函数调用链

科理化其实是个数学概念。科理化就是完成一个由多个参数构成的函数变换成一系列单参数函数的变换。

fun hello(x: String, y: Int, z: Double): Boolean{
    return true
}

// 科理化 hello 方法
fun curriedHello(x: String): (y: Int) -> (z: Double) -> Boolean{
    // 代码省略
}

下面我们来实现一个函数的科理化:

fun log(tag: String, target: OutputStream, message: Any?){
    target.write("[$tag] $message\n".toByteArray())
}

// 方式一
fun log1(tag: String)
    = fun(target: OutputStream)
    = fun(message: Any?)
    = target.write("[$tag] $message\n".toByteArray())

// 方式二 添加扩展方法
fun <P1, P2, P3, R> Function3<P1, P2, P3, R>.curried()
        = fun(p1: P1) = fun(p2: P2) = fun(p3: P3) = this(p1, p2, p3)

fun main(args: Array<String>) {
    log1("test1")(System.out)("hello test1.")
    ::log.curried()("test2")(System.out)("hello test2.")
}

输出结果为:

[test1] hello test1.
[test2] hello test2.

7.偏函数

偏函数其实就是把一个函数的部分参数指定为固定值之后,剩下的就是偏函数了。接着上面的例子,固定 tag 和 target 两个参数,可以使用偏函数。如果我们构造偏函数的参数恰好处于原函数参数的最前面,那么我们是可以使用科理化的方法得到这个偏函数:

fun log(tag: String, target: OutputStream, message: Any?){
    target.write("[$tag] $message\n".toByteArray())
}

fun main(args: Array<String>) {
    val consoleLogWithTag = (::log.curried())("test")(System.out)
    consoleLogWithTag("hello test.") // 每次使用只需要传入 message 即可
    consoleLogWithTag("hello test.")
}

fun <P1, P2, P3, R> Function3<P1, P2, P3, R>.curried()
        = fun(p1: P1) = fun(p2: P2) = fun(p3: P3) = this(p1, p2, p3)

consoleLogWithTag 就是原函数的一个偏函数。

我们希望得到任意参数被指定后的偏函数,还可以使用下面这种方法:

fun main(args: Array<String>) {
    val bytes = "北京".toByteArray(charset("GBK"))
    val stringFromGBK = makeStringFromGbkBytes(bytes)
    println(stringFromGBK)
}

val makeString = fun(byteArray: ByteArray, charset: Charset): String{
    return String(byteArray, charset)
}

// 第二个参数指定为 GBK 了
val makeStringFromGbkBytes = makeString.partial2(charset("GBK"))

// 定义扩展方法
fun <P1, P2, R> Function2<P1, P2, R>.partial2(p2: P2) = fun(p1: P1) = this(p1, p2)
fun <P1, P2, R> Function2<P1, P2, R>.partial1(p1: P1) = fun(p2: P2) = this(p1, p2)

喜欢本文的记得顶一下哦!

作者:smartbetter 发表于2017/7/2 23:02:18 原文链接
阅读:127 评论:0 查看评论

             
If John Lennon had lived, he would have been 64 on Saturday.
          Re: How to insert file containing Design Variables in Analog Design Enviroiment   

Please remember that these forums are community forums, in which volunteers (including folks from Cadence) respond in their spare time. If you needed an urgent answer, you should go to Customer Support.

Your question was clear. The following SKILL code can be used:

 procedure(abImportDesignVars(fileName  
    @optional (session asiGetCurrentSession()) "tg")
  let((prt data designVars)
    prt=infile(fileName)
    unless(prt
      error("Cannot read design variable file %s\n" fileName)
    )
    while(gets(data prt)
      data=parseString(data)
      when(listp(data) && length(data)>=2
    designVars=tconc(designVars data)
      )
    )
    close(prt)
    asiSetDesignVarList(session car(designVars))
  )
)

 

This can be pasted in the CIW, or stored in a file, and then loaded using:

load("/path/to/abImportDesignVars.il")

Then, with the ADE session as the current window (make sure you've interacted with it somehow to make it current), use:

abImportDesignVars("/path/to/your/designVars.txt")

and it should then import the variables into ADE.

Regards,

Andrew.


          Trillium Asset Management Decreased Its Minerals Technologies (MTX) Stake, DE Shaw & Company Boosted ... - UtahHerald.com   

Weekly Register

Trillium Asset Management Decreased Its Minerals Technologies (MTX) Stake, DE Shaw & Company Boosted ...
UtahHerald.com
D-E Shaw & Company Inc increased Whirlpool Corp (Put) (WHR) stake by 259.89% reported in 2016Q4 SEC filing. D-E Shaw & Company Inc acquired 140,600 shares as Whirlpool Corp (Put) (WHR)'s stock rose 1.07%. The D-E Shaw & Company Inc holds ...
Whirlpool Corporation - WHR - Stock Price Today - ZacksZacks Investment Research
Bitzer Marc R - SEC.govSEC.gov

all 95 news articles »

          Alpha Windward Boosted Its Ameren (AEE) Position; DE Shaw & Company Has Trimmed Metlife (Call) (MET) Stake By ... - UtahHerald.com   

Weekly Register

Alpha Windward Boosted Its Ameren (AEE) Position; DE Shaw & Company Has Trimmed Metlife (Call) (MET) Stake By ...
UtahHerald.com
D-E Shaw & Company Inc decreased Metlife Inc (Call) (MET) stake by 5.2% reported in 2016Q4 SEC filing. D-E Shaw & Company Inc sold 30,100 shares as Metlife Inc (Call) (MET)'s stock declined 4.70%. The D-E Shaw & Company Inc holds 548,500 shares ...
Ameren Corporation - AEE - Stock Price Today - ZacksZacks Investment Research
<SEC-DOCUMENT>0001002910-17-000071.txt : 20170302 <SEC-HEADER>0001002910-17-000071.hdr.sgml ...SEC

all 75 news articles »

          Klingenstein Fields & Co Increased Its Union Pacific (UNP) Stake; DE Shaw & Company Trimmed Himax Technologies ... - NormanObserver.com   

KL Daily

Klingenstein Fields & Co Increased Its Union Pacific (UNP) Stake; DE Shaw & Company Trimmed Himax Technologies ...
NormanObserver.com
D-E Shaw & Company Inc decreased Himax Technologies Inc (HIMX) stake by 59.36% reported in 2016Q4 SEC filing. D-E Shaw & Company Inc sold 61,745 shares as Himax Technologies Inc (HIMX)'s stock declined 2.59%. The D-E Shaw & Company Inc ...
Union Pacific Corporation - UNP - Stock Price Today - ZacksZacks Investment Research
Card Andrew H JR - SEC.govSEC.gov
Whited Elizabeth F - SEC.govSEC.gov

all 123 news articles »

          Content Kindle: How do I extract highlights of MBS1-files?   
Hello! 1) My old Kindle Paperwhite got stolen and now I have a new one. 2) The books have been synchronized, but not the "MyClippings.txt". Those are not books bought on Amazon. I sent them via Calibre to the Kindle email. 3) However, the book got downloaded from the Amazon cloud and even all highlights appear again on my Kindle (but the hightlights do NOT appear in myclippings.txt). 4) How do I extract those highlights (which are *not* in MyClippings.txt? Can I extract them from the MBP1-files?) 5) Calibre does not show any highlights when I open the book manually. 6) To put all in a nutshell: How do I extract my highlights from a MBP1-file? Thank you!
          Trillium Asset Management Decreased Its Minerals Technologies (MTX) Stake, DE Shaw & Company Boosted ... - UtahHerald.com   

Weekly Register

Trillium Asset Management Decreased Its Minerals Technologies (MTX) Stake, DE Shaw & Company Boosted ...
UtahHerald.com
D-E Shaw & Company Inc increased Whirlpool Corp (Put) (WHR) stake by 259.89% reported in 2016Q4 SEC filing. D-E Shaw & Company Inc acquired 140,600 shares as Whirlpool Corp (Put) (WHR)'s stock rose 1.07%. The D-E Shaw & Company Inc holds ...
Whirlpool Corporation - WHR - Stock Price Today - ZacksZacks Investment Research
Bitzer Marc R - SEC.govSEC.gov

all 95 news articles »

          Alpha Windward Boosted Its Ameren (AEE) Position; DE Shaw & Company Has Trimmed Metlife (Call) (MET) Stake By ... - UtahHerald.com   

Weekly Register

Alpha Windward Boosted Its Ameren (AEE) Position; DE Shaw & Company Has Trimmed Metlife (Call) (MET) Stake By ...
UtahHerald.com
D-E Shaw & Company Inc decreased Metlife Inc (Call) (MET) stake by 5.2% reported in 2016Q4 SEC filing. D-E Shaw & Company Inc sold 30,100 shares as Metlife Inc (Call) (MET)'s stock declined 4.70%. The D-E Shaw & Company Inc holds 548,500 shares ...
Ameren Corporation - AEE - Stock Price Today - ZacksZacks Investment Research
<SEC-DOCUMENT>0001002910-17-000071.txt : 20170302 <SEC-HEADER>0001002910-17-000071.hdr.sgml ...SEC

all 75 news articles »

          Klingenstein Fields & Co Increased Its Union Pacific (UNP) Stake; DE Shaw & Company Trimmed Himax Technologies ... - NormanObserver.com   

KL Daily

Klingenstein Fields & Co Increased Its Union Pacific (UNP) Stake; DE Shaw & Company Trimmed Himax Technologies ...
NormanObserver.com
D-E Shaw & Company Inc decreased Himax Technologies Inc (HIMX) stake by 59.36% reported in 2016Q4 SEC filing. D-E Shaw & Company Inc sold 61,745 shares as Himax Technologies Inc (HIMX)'s stock declined 2.59%. The D-E Shaw & Company Inc ...
Union Pacific Corporation - UNP - Stock Price Today - ZacksZacks Investment Research
Card Andrew H JR - SEC.govSEC.gov
Whited Elizabeth F - SEC.govSEC.gov

all 123 news articles »

          problème avec "underscore" — duplication du caractère lors d'une commande "rename"   
bonjour à la communauté de ce joyeux forum . Razz

J'utilise un simple fichier .cmd (sous windows 8.0) pour renommer des fichiers .

La forme des fichiers est la suivante : file6_B.txt, file25_A.txt, etc .... Cool
mon but est de tous les renommer en file0_*.txt .

pour cela, rien de plus simple :

le code qui va (devrait Mr. Green ) aller bien :
Code:
rename file*_*.txt file0_*.txt

dans un fichier "rename.cmd" .

et là, problème avec les fichiers qui ont un chiffre à 2 nombres .... çà donne : file0_B.txt, file0__A.txt .
On constate que l'underscore s'est dupliqué dans le fichier "file0__A.txt" et çà me chagrine beaucoup ! Evil or Very Mad

Ai-je fait une erreur de code ? Embarassed
Quelqu'un peut-il me proposer une solution "simple" ... Okay

Message: http://batch.xoo.it/t5814-probleme-avec-underscore.htm


          TSWACT (2.0)   
Change Log:
--------------------
version 2.0
Updated instructions for Secret World Legends

version 1.5
Removed obsolete evade handling. This is now in the combat log.
Updated to support TSW version 1.9

version 1.4
Added ability to cancel elemental force buff by unequip/reequip the passive.
This will break Master Planner, so be careful

version 1.3
Added zone name support

version 1.2
Added ability to cancel buffs when combat ends

version 1.1
Added in-game ACT icon

version 1.0.4
Added capturing of evades

Description:
--------------------
This addon is a helper for the Advanced Combat Tracker (ACT) combat log parser. It allows the ACT TSW plugin to accurately determine when combat starts and ends. It also allows the plugin to determine the character name for yourself and your team/raid mates. The plugin has no in-game user interface, it just collects events and writes them to the ClientLog.txt file in your main TSW game folder.

Please note that this addon will only work if you have version 1.0.4.0 or later of the TSW plugin installed in your ACT parser.
          Certificate of Appreciation, Editable Word Template, Printable, Instant Download, YOU EDIT Word Template, Diy Certificate Template, Awards by graficaitalia   

3.00 USD

Certificate of Appreciation, Editable Word Template, YOU EDIT Certificate of Appreciation to create a formal, personalized and prestigious award to present to special people in your life. Easy YOU EDIT Word Template with pre-filled text boxes to customize names, dates and titles of our colorful and unique DIY Word Template. You can also quickly make many design changes such as change fonts, font size, font color, text alignment, spacing, change fonts to bold, italic, underline. This is a printable digital download ready to be customized and printed, all you do is edit, save and print. Personalized Certificates, Diplomas and Awards are wonderful as quick, last minute gifts, for school functions and business and organization needs. Check our store for more Diy Editable Word Templates for certificates / certifications, awards, and diplomas.

This is a Printable, Instant Download, YOU EDIT Word Template to create Diy Certificate Template, Awards, Diplomas, no physical item will be sent to you.

Product details:

- one Microsoft Word Template file (.docx)or (.doc), size: 8.5 inches x 11 inches
- one Instruction file (.txt)

What can I edit?

- You can make changes to the text as well as font size, font color, font style and text position and alignment.
- The background image is NOT editable.

How do I get started?

1. Download the files you purchased on Etsy.
2. Open the template document with Microsoft Word.
3. "Click into" the pre-filled text boxes and change the sample text. Select the text to make any font size, font color or font style changes you wish.
4. Save you edited file (remember to "save as" and give the document a new name or you will loose your original template).
5. Print

Note
- You will need Microsoft 2007 or higher.
- This is a digital download product and no physical item will be sent.
- If you do not have font we used to create this template installed on your computer the template will revert / default to a font which is available on your computer. If you prefer a different font you may change it.
- You may create and print this template as many times as you like, DO NOT resell the digital template or give it away as a free digital download.


          Trillium Asset Management Decreased Its Minerals Technologies (MTX) Stake, DE Shaw & Company Boosted ... - UtahHerald.com   

Weekly Register

Trillium Asset Management Decreased Its Minerals Technologies (MTX) Stake, DE Shaw & Company Boosted ...
UtahHerald.com
D-E Shaw & Company Inc increased Whirlpool Corp (Put) (WHR) stake by 259.89% reported in 2016Q4 SEC filing. D-E Shaw & Company Inc acquired 140,600 shares as Whirlpool Corp (Put) (WHR)'s stock rose 1.07%. The D-E Shaw & Company Inc holds ...
Whirlpool Corporation - WHR - Stock Price Today - ZacksZacks Investment Research
Bitzer Marc R - SEC.govSEC.gov

all 95 news articles »

          Alpha Windward Boosted Its Ameren (AEE) Position; DE Shaw & Company Has Trimmed Metlife (Call) (MET) Stake By ... - UtahHerald.com   

Weekly Register

Alpha Windward Boosted Its Ameren (AEE) Position; DE Shaw & Company Has Trimmed Metlife (Call) (MET) Stake By ...
UtahHerald.com
D-E Shaw & Company Inc decreased Metlife Inc (Call) (MET) stake by 5.2% reported in 2016Q4 SEC filing. D-E Shaw & Company Inc sold 30,100 shares as Metlife Inc (Call) (MET)'s stock declined 4.70%. The D-E Shaw & Company Inc holds 548,500 shares ...
Ameren Corporation - AEE - Stock Price Today - ZacksZacks Investment Research
<SEC-DOCUMENT>0001002910-17-000071.txt : 20170302 <SEC-HEADER>0001002910-17-000071.hdr.sgml ...SEC

all 75 news articles »

          Klingenstein Fields & Co Increased Its Union Pacific (UNP) Stake; DE Shaw & Company Trimmed Himax Technologies ... - NormanObserver.com   

KL Daily

Klingenstein Fields & Co Increased Its Union Pacific (UNP) Stake; DE Shaw & Company Trimmed Himax Technologies ...
NormanObserver.com
D-E Shaw & Company Inc decreased Himax Technologies Inc (HIMX) stake by 59.36% reported in 2016Q4 SEC filing. D-E Shaw & Company Inc sold 61,745 shares as Himax Technologies Inc (HIMX)'s stock declined 2.59%. The D-E Shaw & Company Inc ...
Union Pacific Corporation - UNP - Stock Price Today - ZacksZacks Investment Research
Card Andrew H JR - SEC.govSEC.gov
Whited Elizabeth F - SEC.govSEC.gov

all 123 news articles »

          Extract email ids from Yahoo account in bulk   
This Yahoo email extractor can collect ids from the organizers of Gmail. Clients can choose either every one of the organizers or can choose independently like inbox, outbox, sent, and so forth to get email addresses. Indeed, even email ids can be collected from fields jump at the chance To, From, CC, BCC, and so forth.For Further info visit au at- http://www.lantechsoft.com/yahoo-email-address-extractor.html Key Features This software can extract email ids from Yahoo account in bulk. Users can give more than one account individually to harvest email ids. The tool can fetch email ids from folders of Gmail like inbox, outbox, etc. It can get email ids from fields like CC, BCC, To, From, etc. The extracted list of ids can be saved either in .CSV or .TXT file. It exactly finishes the job as ordered. The structure of this tool is made in a way that non-technical clients can also use it. It is the best tool to extract email ids from yahoo account.
          Dialog C35-B Flash File Firmware   
Dialog  C35-B Flash File Firmware
Dialog C35B Flash File SL Flash File 100% Tested




Install ROM :
- Unpack FlashTools, and Click on Flash_tool.exe
- Select "scatter-Loading"and search MT6572_Android_scatter.txt in ROM
- Wait file to be added into Flash Tool
- Select "Download Only"or if upgrade "Firmware upgrade"
- Turn off your phone, remove the battery (if the battery is removable) and replace it after some seconds (and don't turn on the phone).
- Press “Download”button to start
- and connect your phone into the computer via USB data cable.
- The process will start and a red progress bar will appear after color purple, yellow.
- And green circles display
- Finish !
- You can now safely disconnect your phone and turn it on.

https://drive.google.com/open?id=0B_9XjSrDCk7VZEt3N2hNNnRGQ1E














          Un plugin ci permette di aggiungere i secondi all’interno della Statusbar su Playstation Vita e Playstation TV   

Il developer isseosenpei (alias theorywrong) ha sviluppato un nuovo plugin che ci permetterà di aggiungere i secondi di fianco all’orario della Playstation Vita e Playstation TV. Il plugin prende base da vita-shellbat, una prima applicazione sviluppata da David Rosca che ci permetterebbe di visualizzare la percentuale della batteria al fianco dell’orario. Installazione Aprire il file config.txt presente nella directory “ux0:/tai/” e aggiungere la...

L'articolo Un plugin ci permette di aggiungere i secondi all’interno della Statusbar su Playstation Vita e Playstation TV proviene da BiteYourConsole.


          Talent Market: The Libertarian Headhunting Firm Serving the Koch Network and the Bradley Foundation   

Talent Market has helped place over 270 leaders, fundraisers and lawyers at more than 160 right-wing think tanks, media groups and advocacy organizations nationwide. (Image: Talent Market; Edited: JR / TO)Talent Market has helped place over 270 leaders, fundraisers and lawyers at more than 160 right-wing think tanks, media groups and advocacy organizations nationwide. (Image: Talent Market; Edited: JR / TO)

Looking for a job with the billionaire Koch Brothers? Want to help the Bradley Foundation build right-wing "infrastructure" nationwide to turn red states blue?

Look no further than "Talent Market" the nonprofit head hunting firm that claims to bring "talent and liberty together to make the world a better place."

Talent Market's list of clients is a "who's who" of the far right, including the Koch's Americans for Prosperity Foundation, the American Legislative Exchange Council and the Ayn Rand Institute. Current job openings advertised on the website include openings at the Charles Koch Institute, the Charles Koch Foundation, the Mackinac Center for Public Policy, the State Policy Network, and the Competitive Enterprise Institute (CEI).

The Koch-funded CEI is working hard to push climate change deniers into the Trump administration, so it is advertising for a "discrete" "libertarian or conservative" who can "discuss your philosophical alignment with CEIs mission and vision." Greenpeace members need not apply.

Talent Market is also beating the bushes for a director of development for the Franklin Center for Government Integrity, which sounds like a spiffy job, until of course you hear that the Franklin Center is floundering badly.

Talent Market, Founded by Koch Loyalists

Recently obtained internal files from the Milwaukee-based Bradley Foundation give new insight into the operations of this little-known group.

Talent Market was founded in 2009 as an "owned entity" of DonorsTrust, a donor advised fund favored by the billionaire Koch Network of ultra-wealthy right-wingers for its easy cloaking of donations to political allies. It is now an LLC attached to Donors Trust.

The Bradley Files credit three people with founding the organization: the former President and CEO of DonorsTrust Whitney Ball, President of the State Policy Network (SPN) Tracie Sharp, and Talent Market Executive Director Claire Kittle Dixon. The trio saw a need for a one-stop shop for "talent consulting" within the right-wing "movement" and conceived of the idea for Talent Market, state Bradley documents. Ideological vetting is another function of the group.

Before founding Talent Market, Dixon was the Program Officer for Leadership and Talent Development at the Charles G. Koch Foundation. The only other employee at Talent Market, talent manager Lauren Skiver, also worked for the Charles G. Koch Foundation as a grants coordinator.

The Bradley Files reveal that the group has helped place over 270 leaders, fundraisers, and lawyers at more than 160 right-wing think tanks, media groups and advocacy organizations nationwide. Talent Market also acts as a consultant to the right-wing on "strategies for retaining top talent, including role changes, performance reviews, incentive programs and training," (DonorsTrust, Grant Proposal Record, 6/2/2015).

And the Bradley Files show how the group operates. Bradley did not contribute to Talent Market until 2015 when it needed to hire a new Vice President for External Relations. Talent Market was utilized for the search and Bradley hired Jessica F. Dean for the position. Dean also serves as President of the Bradley Impact Fund, Bradley's own donor advised fund.

Although Talent Market advertises its services as "free" on its website, Bradley gave $30,000 to Talent Market through DonorsTrust in 2015, (DonorsTrust, Grant Proposal Record, 6/2/2015). Another Bradley accounting spreadsheet titled, "2015-1099 Vendors Summary" lists Executive Director Claire Kittle Dixon under the column "Vendor Name" and "search firm" in the column "Services."

In 2016, Bradley gave $50,000 on March 16 to Talent Market through DonorsTrust (Grant Review, Board Meeting, 2/23/16). Talent Market's services were utilized that year to hire a new Vice President for Programs: Carl Helstrom. Talent Market promoted the hire in a May 2017 email. Bradley's $50,000 "grant" represents over a sixth of Talent Market's 2016 operating budget of $275,500.

Talent Market Services the SPN Network and Bradley's "Litigation Alliance"

DonorsTrust is not only a huge conduit for right-wing money, it is a member of SPN, a web of far right think tanks and advocacy groups (including the Kochs' Americans for Prosperity Foundation) in 49 states, Puerto Rico, D.C., and the U.K. The late Whitney Ball helped launch SPN in 1999.

Over the years, Bradley has been a major financial backer of SPN and its members. Bradley has given $300,000 to SPN directly from 1993-2015 and $116 million in Bradley grants to SPN member groups. Bradley funnels some of its money via Donors Trust. Bradley has sent $3.2 million from 2001-2015 to DonorsTrust to support the Project on Fair Representation, the Colorado Freedom Project, and a variety of other right wing groups.

Many of the upper level employees of these SPN groups hired over the last six years were likely placed in their positions by Talent Market. Bradley staff describes its activities,

"Over the past six years Talent Market has created and maintained a large database of individuals who would qualify for mid and senior level positions in a variety of conservative think tanks, grassroots and grasstops institutions, and development and communications organizations. This database serves as a source of information on candidate availability, appropriate salary ranges for vacant positions and candidate qualifications, relocation trends, hiring timelines and other information for hiring" (Donors Trust, Grant Proposal Record, 2/23/16).

Leaders placed by Talent Market in right-wing think tanks include Lawson Bader as President of the Competitive Enterprise Institute (now President and CEO of DonorsTrust and Donors Capital Fund); David Bobb, President of the Bill of Rights Institute; David Keating, President of the Center for Competitive Politics; Mike Stenhouse, CEO of the Rhode Island Center for Freedom and Prosperity; and John Tsarpalas, President of the Nevada Policy Research Institute.

The Bradley files also show that Talent Market has been "successful in identifying legal talent" for the Goldwater Institute-led and Bradley funded "litigation alliance," placing counsel at Goldwater, Illinois Policy Institute's Liberty Justice Center, and the Institute for Justice (Donors Trust, Grant Proposal Record, 2/23/16).

In 2014, the Bradley Foundation provided $350,000 in seed money for litigator Clint Bolick "initiative to create a state litigation alliance" (Report: Goldwater Institute, 2016). The Bradley Price recipient Bolick was vice president for litigation at the Goldwater Institute at the time. Today Bolick is on the Arizona Supreme Court.

The state litigation alliance "helps research and identify those states that have greatest potential for advancing state-constitutional law – then trains and, if asked, mentors attorneys who can either lead or staff existing or newly-created legal centers elsewhere, with an intensive 'litigation boot camp' for interested conscripts," Bradley staff writes.

In all, Bradley has contributed $600,000 to the state litigation alliance because it "retains great potential to continue maximizing the benefit of Bradley's much other recent strategic grantmaking to improve conservative infrastructures" (Goldwater Institute, Grant History Record, 11/10/14).

Recent job listings at Talent Market show that Executive Director Dixon is recruiting attorneys for the Texas Public Policy Foundation and the Washington-based Freedom Foundation, both also members of the litigation alliance.

Hiring Political Operatives

As a wholly owned LLC of DonorsTrust, a registered 501(c)(3), Talent Market cannot get involved in politics or help organizations other than registered 501(c)(3)s. An email Executive Director Dixon wrote to Dr. Brad Hobbs on February 16, 2016, confirms this, "We do not work with 501(c)(4)s, 501(c)(6)s, 527s, or government entities."

Talent Market's Mission statement states in italics that "We do not work in politics." Yet the website lists "Politics/Campaigns" as one of its job categories and the work of SPN groups is often highly political. SPN groups funded by the Bradley Foundation, for instance, work to crush unions and turn blue states red.

Bradley staff notes that Talent Market helped one of its favorite grantees get off the ground. Talent Market helped American Majority find "a national executive director, two state directors, and multiple field directors," (Donors Trust, Grant Proposal Record, 6/2/15).

As Mary Bottari points out in "Weaponized Philanthropy", "American Majority was founded by the sons of Rep. Jim Ryun (R-KS) specifically for the purpose of training people to run for office." American Majority is registered as a 501(c)3 but it also has a registered 501(c)4: American Majority Action. The national executive director for American Majority, Matt Batzel, is also the national executive director for American Majority Action. Talent Market filled this position, according to Bradley.

Bradley staff provides more details on American Majority's campaign activities in a separate grant proposal,

"American Majority has trained 3,853 pro-freedom individuals at more than 100 training events. 208 trained candidates have run for state or local office, 181 advanced out of their primaries to the general election. 104 went on to win their elections. These include state legislators, 45 county board supervisors, 27 municipal office holders, 22 school board members and 5 judges." (American Majority, Grant Proposal Record, 8/19/2014).

Talent Market Litmus Test

For all the up and coming libertarians interested in obtaining one of the "critical roles in the free-market universe," be aware that Talent Market vets applicants for ideological purity.

Talent market has a list of questions for job applications on its website.

When asked on the "proper function of government," make sure you don't choose "The government should play an active and powerful role in redistributing wealth, regulating economic activity, and ensuring the well-being of its citizens."

Talent Market wants candidates to "protect property rights," the well-being of its citizens does not even make the list.

Mary Bottari contributed to this article.


          fanta: http://lavapies.linuxinthenight.com/urls-contratos-comunidad-madrid.txt.tar.gz  eso son casi un millón de urls que enlazan a contratos de la comunidad de madrid. Lo inicial para poder comenzar a scrapear sin tener que atacar la web todo el rato.   
http://lavapies.linuxinthenight.com/urls-contratos-comunidad-madrid.txt.tar.gz  eso son casi un millón de urls que enlazan a contratos de la comunidad de madrid. Lo inicial para poder comenzar a scrapear sin tener que atacar la web todo el rato.
          Drupal core: Allow setting a different PhantomJs host   

It is currently not possible to run the JavaScript tests with PhantomJs running on a different host and/or with a different port.
This breaks testing in a setup with multiple Docker containers for example, since PhantomJs is not running in the same container as the webserver.

Steps to test:

  • Start phantonjs on a different port then default: phantomjs --ssl-protocol=any --ignore-ssl-errors=true --cookies-file=/tmp/cookies.txt --debug=true vendor/jcalderonzumba/gastonjs/src/Client/main.js 8511 1024 768
  • Set the right URL in phpunit.xml : <env name="JAVASCRIPTTEST_API_HOST" value="http://localhost:8511"/>
  • Run a Javascript test.

          User Guide: [HU] Updates to several English source files   

On #2843440: Discuss Composer and tell how to use it to install some contrib modules, we recently made changes to several of the English source files, and since your language group had not translated them yet (except guide.txt, see below), we also made changes to the files in your language. This issue is to let you know what happened.

A summary of the changes:
- guide.txt: A new include file was added (one line added to your file). You should not need to do anything, unless you are in progress translating this file, in which case you will need to update the translation.
- install-composer.txt - A completely new file. You'll need to make an issue to translate this new topic.
- extend-module-install.txt - A few lines added/changed near the top. If translation is in progress, you will need to update the translation.
- extend-theme-install.txt - A few lines added/changed near the top. If translation is in progress, you will need to update the translation.
- install-prepare.txt - Several lines added/changed throughout the file. Note that one of the changes was to fix a formatting problem that caused the numbered list to restart. If translation is in progress, you will need to update the translation.
- install-tools.txt - Several lines added/changed throughout the file. If translation is in progress, you will need to update the translation.
- security-update-core.txt - Several lines added/changed throughout the file. Note that one of the changes was to fix a formatting problem that caused the numbered list to restart. If translation is in progress, you will need to update the translation.

We have not made notes on the individual issues for your language for these changes, but instead filed this one issue to notify your language group. Sorry about that! Due to the volume of issues that we would need to check into (all of the above files, for 6 languages each), we decided to shift the burden onto the language groups instead this time.

You can close this issue when you have updated/created the needed issues. Thanks!


          User Guide: [HU] prevent-cache-clear.txt lefordítása   

Téma: A gyorsítótár ürítése (angolul: Clearing the Cache)
Fejezet: Hibaelhárítás (angolul: Preventing and Fixing Problems)

HASZNOS HIVATKOZÁSOK:
- Útmutató leírás: http://www.drupal.hu/drupal-8-kezikonyv-forditasa-magyarra#lepessor
- Itt lesz közzétéve: https://www.drupal.org/hu/docs/user_guide/hu/prevent-cache-clear.html (online szerkesztővel)
- Git-repóban: http://cgit.drupalcode.org/user_guide/plain/source/hu/prevent-cache-clea...

FONTOS! Beküldés előtt ellenőrizd végig e lista pontjait: https://goo.gl/d6htVn


          PES 6 FIFA Confederations Cup 2017 DLC Patch   



Before installing this Patch you need to download PES 6 Colombia Patch v3: CLICK HERE

Includes all Cinfederations cup teams, kits, squads, etc with also updates in other world leagues


SCREENSHOTS: 





CREDITS
BlueRa1n992.
WindowOP.
Jeremy SVR.
The Punisher 22.
Aisack.
Roony17.
Pachi Carp.
Drago Edition.
Uriel BJ.
FIX PES 6.
Gabo CR.
Roni Facemaker.
FacaA/Ngel.

Y colaboradores.

DOWNLOAD

          (Game) Big Brother – Version 0.6.0.010 – Cracked + Mod + Walkthrough - ENG - UNCEN   


TÁC GIẢ:
Dark Silver

THÔNG TIN GAME:
STORY
Main character - Max, young guy who is living in poor family with mother and two sisters. However, Alex’s father gifted them a wonderful house! Even with pool! But money shortage problem is not solved yet. Can Max earn some money? Can he seduce all his relatives? Can he reach anything in his life? Only player can help him.
The game will be adapted to any resolution. As windowed and full screen. The schedule will be calculated under the fullHD (1920×1080). If you have a lower resolution and quality will not be lost. If higher, a little lost clarity, but still remain at a high level. In addition, In plan to add options to adjust the size of interface elements (icons and text).
Version 0.6.0.010 Changelog: 
* Couple of new events with Lisa in a boyfriend route after Kira’s sex ed.
* Continuation of the Olivia route. Several new nightly visits, which will also heavily involve Lisa.
* If the player decides to keep Eric, he’ll start proving his usefulness by opening an alternative route to open mom’s, em, “heart”.
* If the player decides to get rid of Eric, mom will get fired and she’ll need Max’s and Kira’s help to provide for the family.
* Max will have an opportunity to punish Lisa and Alice in front of everyone.
* Also, the players will have an option to stop Max’s punishments altogether.
* There’s a way to coax Lisa into wardrobe change…
* Max can’t ask mom for allowance if she has financial problems.
* You’ll be able to ask Alice about her and Eric’s relationship if he’s gone.
* There’s an interesting hidden periodic event.
* Kira will help Max with mom’s seduction thought the bedroom, so to say.
* Fixed a lot of bugs from 0.5 which required client update.
How to play with cheats:
Just extract and replace files in main folder and that’s it. Cheats you can find on computer.
*the mod is different. This time you go to the laptop to add money or stats (you choose)​

THỂ LOẠI:
Adventure, ADV, RPG, 3DCG, Seduction, Corruption, Big Tits, Incest, Sex, Bath, Oral, Masturbate, Voyeur

NGÔN NGỮ:
Tiếng Anh

LINK DOWN:
GOOGLE
MEGA
Password: www.hentailxers.site

HƯỚNG DẪN:
Giải nén, chép tệp Mod.txt vào thư mục game và chạy file BigBrother.exe để chơi
Xem Walkthrough

LƯU Ý:
Mọi lỗi game vào đây để tham khảo

HÌNH ẢNH GAME: