Adding any kind of video, removes the audio track
lordn-n opened this issue · 2 comments
lordn-n commented
Describe the bug
When adding a non MKV video it ignores the audio track and final mkv does not have audio.
tried #44 using file_path
but since video is not MKV, it does not work
To Reproduce
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pymkv
mkv = pymkv.MKVFile()
"""
mkvmerge -J video_with_audio.mp4
{
"attachments": [],
"chapters": [],
"container": {
"properties": {
"container_type": 25,
"is_providing_timestamps": true
},
"recognized": true,
"supported": true,
"type": "QuickTime/MP4"
},
"errors": [],
"file_name": "video_with_audio.mp4",
"global_tags": [],
"identification_format_version": 12,
"track_tags": [],
"tracks": [
{
"codec": "MPEG-4p10/AVC/H.264",
"id": 0,
"properties": {
"language": "und",
"number": 1,
"packetizer": "mpeg4_p10_video",
"pixel_dimensions": "1920x800"
},
"type": "video"
},
{
"codec": "AAC",
"id": 1,
"properties": {
"audio_bits_per_sample": 16,
"audio_channels": 6,
"audio_sampling_frequency": 48000,
"language": "und",
"number": 2
},
"type": "audio"
}
],
"warnings": []
}
"""
mkv.add_track('video_with_audio.mp4')
mkv.add_track(pymkv.MKVTrack('eng.srt', track_name='English', language='eng'))
mkv.add_track(pymkv.MKVTrack('spa.srt', track_name='Spanish', language='spa'))
mkv.mux('final_video.mkv')
Expected behavior
Add audio and video tracks
Screenshots
mkvmerge -J final_video.mkv
{
"attachments": [],
"chapters": [],
"container": {
"properties": {
"container_type": 17,
"date_local": "2020-03-30T05:03:42-06:00",
"date_utc": "2020-03-30T11:03:42Z",
"duration": 8513088000000,
"is_providing_timestamps": true,
"muxing_application": "libebml v1.3.10 + libmatroska v1.5.2",
"segment_uid": "d3d29256451c6f2bbfb112baae4aeda2",
"writing_application": "mkvmerge v44.0.0 ('Domino') 64-bit"
},
"recognized": true,
"supported": true,
"type": "Matroska"
},
"errors": [],
"file_name": "final_video.mkv",
"global_tags": [],
"identification_format_version": 12,
"track_tags": [],
"tracks": [
{
"codec": "MPEG-4p10/AVC/H.264",
"id": 0,
"properties": {
"codec_id": "V_MPEG4/ISO/AVC",
"codec_private_data": "01640029ffe1001867640029acd94078065b011000003e90000bb800f183196001000668e938f3c8f0",
"codec_private_length": 41,
"default_duration": 41708333,
"default_track": false,
"display_dimensions": "1920x800",
"display_unit": 0,
"enabled_track": true,
"forced_track": false,
"language": "und",
"minimum_timestamp": 0,
"number": 1,
"packetizer": "mpeg4_p10_video",
"pixel_dimensions": "1920x800",
"uid": 2105219320381282218
},
"type": "video"
},
{
"codec": "SubRip/SRT",
"id": 1,
"properties": {
"codec_id": "S_TEXT/UTF8",
"codec_private_length": 0,
"default_track": false,
"enabled_track": true,
"encoding": "UTF-8",
"forced_track": false,
"language": "eng",
"minimum_timestamp": 3597000000,
"number": 2,
"text_subtitles": true,
"track_name": "English",
"uid": 6042543747819283221
},
"type": "subtitles"
},
{
"codec": "SubRip/SRT",
"id": 2,
"properties": {
"codec_id": "S_TEXT/UTF8",
"codec_private_length": 0,
"default_track": false,
"enabled_track": true,
"encoding": "UTF-8",
"forced_track": false,
"language": "spa",
"number": 3,
"text_subtitles": true,
"track_name": "Spanish",
"uid": 18339090840888417108
},
"type": "subtitles"
}
],
"warnings": []
}
Software (please complete the following information):
- OS:
Linux LSTKAG231638 5.5.13-arch1-1 #1 SMP PREEMPT Wed, 25 Mar 2020 16:04:40 +0000 x86_64 GNU/Linux
- MKVToolNix version:
mkvmerge v44.0.0 ('Domino') 64-bit
lordn-n commented
lordn-n commented
Fixed by specifying the track_id
mkv.add_track('video_with_audio.mp4') # Video, takes the track_id=0
mkv.add_track(pymkv.MKVTrack('video_with_audio.mp4', track_id=1)) # Audio
# Subtitles
mkv.add_track(pymkv.MKVTrack('eng.srt', track_name='English', language='eng'))
mkv.add_track(pymkv.MKVTrack('spa.srt', track_name='Spanish', language='spa'))
would be great that by default would also add the audio track if the track is in the mkvmerge -J
without checking if it's really a MKV file