Merge pull request #24 from justdan96/enhancement-docker-build

The Docker container is complete, list of changes:

* Updated instructions in README for building tsMuxer in the Docker container.
* Updated build scripts accordingly.
* Added small section on testing to the README
This commit is contained in:
Dan 2019-11-16 12:44:41 +00:00 committed by GitHub
commit 9203e86242
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 112 additions and 5 deletions

View File

@ -59,15 +59,13 @@ The following is a list of changes that will need to be made to the original sou
* swapping custom includes from libmediation to their standard library equivalents
* the code uses my_htonl, my_ntohll, etc - these can be swapped for the standard library versions
* the program currently only compiles 32-bit executables, even on 64-bit systems, a multi-architecture approach is needed
* consider making static executables for Linux, to make the program more portable
* build for Windows requires Visual Studio 2017 and compiling through GUI - we need to create a Makefile equivalent
* create a multi-platform build pipeline, maybe using dockcross or if that doesn't work creating a custom WinPE image just for compiling on Windows
* Windows builds require extra files to be downloaded and manually copied into place in order for the builds to succeed - we need to work on that
* the program doesn't support MPEG-4 ASP, even though MPEG-4 ASP is defined in the TS specification
* no Opus audio support
* [several](https://forum.doom9.org/showthread.php?p=1880216#post1880216) [muxing](https://forum.doom9.org/showthread.php?p=1881372#post1881372) [bugs](https://forum.doom9.org/showthread.php?p=1881509#post1881509) when muxing a HEVC/UHD stream - results in an out-of-sync stream
* has issues with 24-bit DTS Express
* issues with the 3D plane lists when there are mismatches between the MPLS and M2TS
* a [bug](https://forum.doom9.org/showpost.php?p=1888650&postcount=74) with unsynchronised AV in HEVC files because the coded picture buffer is not large enough
* a [bug](https://forum.doom9.org/showthread.php?p=1880216#post1880216) with UHD HEVC where the [wrong stream type is used](https://forum.doom9.org/showpost.php?p=1888746&postcount=75)
## Contributing
@ -92,6 +90,43 @@ You can report issues directly on Github, that would be a really useful contribu
### Building
#### Docker (All Platforms)
You can use our [Docker container](https://github.com/justdan96/tsmuxer_build) to build tsMuxer for your chosen platform. To build the GUI you will need to follow the instructions specifically for your platform.
To create the builds using the Docker container, follow the steps below:
1. Pull `justdan96/tsmuxer_build` from the Docker repository:
```
docker pull justdan96/tsmuxer_build
```
Or build `justdan96/tsmuxer_build` from source:
```
git clone https://github.com/justdan96/tsmuxer_build.git
cd tsmuxer_build
docker build -t justdan96/tsmuxer_build .
```
2. Browse to the tsMuxer repository and run one of the following commands:
*Linux*
```
docker run -it --rm -v $(pwd):/workdir -w="/workdir" justdan96/tsmuxer_build bash -c ". rebuild_linux_docker.sh"
```
*Windows*
```
docker run -it --rm -v $(pwd):/workdir -w="/workdir" justdan96/tsmuxer_build bash -c ". rebuild_mxe_docker.sh"
```
*OSX*
```
docker run -it --rm -v $(pwd):/workdir -w="/workdir" justdan96/tsmuxer_build bash -c ". rebuild_osxcross_docker.sh"
```
The executable binary will be saved to the "\bin" folder.
#### Linux
For these examples we have successfully used Ubuntu 19 64-bit and Debian 10 64-bit.
@ -391,6 +426,34 @@ Or run the following to build the GUI as well:
./rebuild_osxcross_with_gui.sh
```
## Testing
In absence of a full test suite currently we are creating some basic tests that can be performed.
The first test is a simple MKV to M2TS test with the first 2 minutes of Big Buck Bunny.
You need the file bbb-2mins.mkv and to either use the M2TS option in tsMuxerGUI or use the following meta file:
```
MUXOPT --no-pcr-on-video-pid --new-audio-pes --vbr --vbv-len=500
V_MPEG-2, "bbb-2mins.mkv", track=1, lang=und
A_AC3, "bbb-2mins.mkv", track=2, lang=und
```
The MD5 sums of the original file and the output file should be:
```
a239a724cba1381a5956b50cb8b46754 bbb-2mins.mkv
62342b056d37e44fae4e48161d6208bf bbb-2mins-from-linux-meta.m2ts
```
We will have also done the same with the test file [Life Untouched](https://uhdsample.com/6-life-untouched-4k-demo-60fps-hdr10.html). Results of the MD5 sums for the original and output file are below:
```
f2db8f6647f4f2a0b2417aed296fee73 Life Untouched 4K Demo.mp4
aba9ee3a3211cd09ba4833a610faff22 Life Untouched 4K Demo.m2ts
```
We need more sample files with 3D and multiple subtitle tracks if possible so if you have any ways of testing these files (particularly in relation to the bugs in the TODO section) please let us know?
## Financing
We are not currently accepting any kind of donations and we do not have a bounty program.

0
bin/.gitkeep Normal file
View File

View File

@ -3,3 +3,6 @@ mkdir build
cd build
cmake ../ -G Ninja
ninja
cp tsMuxer/tsmuxer ../bin/tsMuxeR
cd ..
rm -rf build

8
rebuild_linux_docker.sh Executable file
View File

@ -0,0 +1,8 @@
rm -rf build
mkdir build
cd build
cmake -DTSMUXER_STATIC_BUILD=ON ../
make
cp tsMuxer/tsmuxer ../bin/tsMuxeR
cd ..
rm -rf build

View File

@ -6,3 +6,6 @@ export CCACHE_DISABLE=1
export MXE_USE_CCACHE=
x86_64-w64-mingw32.static-cmake ../
make
cp tsMuxer/tsmuxer.exe ../bin/tsMuxeR.exe
cd ..
rm -rf build

11
rebuild_mxe_docker.sh Executable file
View File

@ -0,0 +1,11 @@
export PATH=/usr/lib/mxe/usr/bin:$PATH
rm -rf build
mkdir build
cd build
export CCACHE_DISABLE=1
export MXE_USE_CCACHE=
x86_64-w64-mingw32.static-cmake ../
make
cp tsMuxer/tsmuxer.exe ../bin/tsMuxeR.exe
cd ..
rm -rf build

View File

@ -6,3 +6,7 @@ export CCACHE_DISABLE=1
export MXE_USE_CCACHE=
x86_64-w64-mingw32.static-cmake ../ -DTSMUXER_GUI=ON
make
cp tsMuxer/tsmuxer.exe ../bin/tsMuxeR.exe
cp tsMuxer/tsmuxergui.exe ../bin/tsMuxerGUI.exe
cd ..
rm -rf build

View File

@ -7,3 +7,6 @@ mkdir build
cd build
x86_64-apple-darwin14-cmake ../ -DCMAKE_TOOLCHAIN_FILE=/usr/lib/osxcross/toolchain.cmake
make
cp tsMuxer/tsmuxer ../bin/tsMuxeR
cd ..
rm -rf build

12
rebuild_osxcross_docker.sh Executable file
View File

@ -0,0 +1,12 @@
export PATH=/usr/lib/osxcross/bin:$PATH
export MACOSX_DEPLOYMENT_TARGET=10.10
export PKG_CONFIG=/usr/lib/osxcross/bin/x86_64-apple-darwin14-pkg-config
export OSXCROSS_MP_INC=1
rm -rf build
mkdir build
cd build
x86_64-apple-darwin14-cmake ../ -DCMAKE_TOOLCHAIN_FILE=/usr/lib/osxcross/toolchain.cmake
make
cp tsMuxer/tsmuxer ../bin/tsMuxeR
cd ..
rm -rf build