Created
May 9, 2021 10:47
-
-
Save anujonthemove/6a17f29e0ae7f84ea750f393e575a453 to your computer and use it in GitHub Desktop.
Convert to .mp4 from '.mkv', '.avi', '.asf', '.dav', '.mov' using ffmpeg, python subprocess
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"metadata": {}, | |
"cell_type": "markdown", | |
"source": "Code taken from: https://askubuntu.com/questions/396883/how-to-simply-convert-video-files-i-e-mkv-to-mp4" | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"id": "c2fb2992", | |
"cell_type": "code", | |
"source": "import os\nimport pandas as pd\nimport subprocess", | |
"execution_count": 16, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"id": "44791fa5", | |
"cell_type": "code", | |
"source": "# def gather_video_stats(base_path):\n \n# stats = []\n# allowed_file_extensions = ['mp4', 'avi', 'mkv', 'asf', 'mov', 'dav']\n \n# for root, dirs, files in os.walk(base_path):\n# for file in files:\n# abs_file_path = os.path.join(root, file)\n# extn = abs_file_path.split(os.path.sep)[-1].split(\".\")[-1] \n# if extn in allowed_file_extensions:\n# stats.append(get_video_stats(abs_file_path)+[extn])\n \n# stats_df = pd.DataFrame(stats, columns=['camera_name', 'date', 'video_name', 'width', 'height', 'fps', 'duration', 'extension'])\n# return stats_df", | |
"execution_count": 17, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"id": "8a522eb9", | |
"cell_type": "code", | |
"source": "base_path = '/home/acer/sample_videos'", | |
"execution_count": 18, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"id": "632bee88", | |
"cell_type": "code", | |
"source": "dest_path = '/home/acer/test_out/'", | |
"execution_count": 19, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"id": "4bffdf91", | |
"cell_type": "code", | |
"source": "allowed_extns = ['.mkv', '.avi', '.asf', '.dav', '.mov']", | |
"execution_count": 20, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"id": "a543f6ab", | |
"cell_type": "code", | |
"source": "for i in os.listdir(base_path):\n abs_file_path = os.path.join(base_path, i)\n # filename, extn = os.path.splitext(abs_file_path)\n filename, extn = os.path.splitext(os.path.basename(abs_file_path))\n \n if extn in allowed_extns:\n \n abs_output_file_path = os.path.join(dest_path, filename+'.mp4')\n cmd = [\"ffmpeg\", \"-i\", abs_file_path, \"-codec\", \"copy\", abs_output_file_path]\n print(subprocess.check_output(cmd).decode(\"utf-8\").strip())\n ", | |
"execution_count": 21, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": "\n\n\n\n" | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"id": "9fe5be0c", | |
"cell_type": "code", | |
"source": "os.path.split(abs_file_path)", | |
"execution_count": 7, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": "('/home/acer/sample_videos', '4.mkv')" | |
}, | |
"execution_count": 7, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"id": "11e8f406", | |
"cell_type": "code", | |
"source": "abs_file_path.split(os.path.sep)", | |
"execution_count": 9, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": "['', 'home', 'acer', 'sample_videos', '4.mkv']" | |
}, | |
"execution_count": 9, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"id": "4e6216ef", | |
"cell_type": "code", | |
"source": "os.path.splitext(abs_file_path)", | |
"execution_count": 10, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": "('/home/acer/sample_videos/4', '.mkv')" | |
}, | |
"execution_count": 10, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"id": "bc871af5", | |
"cell_type": "code", | |
"source": "cmd", | |
"execution_count": 9, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": "['ffmpeg',\n '-i',\n '/home/acer/sample_videos/NVR_ch1_main_20210216165000_20210216170000.dav',\n '-codec',\n 'copy',\n '/home/acer/sample_videos/NVR_ch1_main_20210216165000_20210216170000.mp4']" | |
}, | |
"execution_count": 9, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"id": "92071483", | |
"cell_type": "code", | |
"source": "abs_output_file_path", | |
"execution_count": 10, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": "'/home/acer/sample_videos/NVR_ch1_main_20210216165000_20210216170000.mp4'" | |
}, | |
"execution_count": 10, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"id": "5f86392e", | |
"cell_type": "code", | |
"source": "filename", | |
"execution_count": 11, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": "'/home/acer/sample_videos/NVR_ch1_main_20210216165000_20210216170000'" | |
}, | |
"execution_count": 11, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"id": "b97a2bf6", | |
"cell_type": "code", | |
"source": "os.path.split(abs_file_path)", | |
"execution_count": 13, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": "('/home/acer/sample_videos', 'NVR_ch1_main_20210216165000_20210216170000.dav')" | |
}, | |
"execution_count": 13, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"id": "9967e11b", | |
"cell_type": "code", | |
"source": "filename, extn = os.path.splitext(os.path.basename(abs_file_path))", | |
"execution_count": 14, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"id": "ccfdf13f", | |
"cell_type": "code", | |
"source": "filename", | |
"execution_count": 15, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": "'NVR_ch1_main_20210216165000_20210216170000'" | |
}, | |
"execution_count": 15, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"id": "3df203eb", | |
"cell_type": "code", | |
"source": "", | |
"execution_count": null, | |
"outputs": [] | |
}, | |
{ | |
"metadata": {}, | |
"id": "120061c9", | |
"cell_type": "markdown", | |
"source": "# References\n1. the best \"If you only want to convert MKV to MP4 then you will save quality and a lot of time by just changing the containers.\": https://askubuntu.com/questions/396883/how-to-simply-convert-video-files-i-e-mkv-to-mp4\n\nUnread:\n1. https://stackoverflow.com/questions/64519818/converting-mkv-files-to-mp4-with-ffmpeg-python\n2. https://stackoverflow.com/questions/32714579/ffmpeg-converts-anything-to-mp4\n3. https://gist.github.com/elrond1999/3019676\n4. https://linuxhint.com/convert_videos_using_ffmpeg_ubuntu/\n5. Good tutorial: https://opensource.com/article/17/6/ffmpeg-convert-media-file-formats\n6. https://stackoverflow.com/questions/32827539/ffmpeg-conversion-dav-to-any-video-files" | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"name": "python3", | |
"display_name": "Python 3", | |
"language": "python" | |
}, | |
"language_info": { | |
"name": "python", | |
"version": "3.6.9", | |
"mimetype": "text/x-python", | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"pygments_lexer": "ipython3", | |
"nbconvert_exporter": "python", | |
"file_extension": ".py" | |
}, | |
"varInspector": { | |
"window_display": false, | |
"cols": { | |
"lenName": 16, | |
"lenType": 16, | |
"lenVar": 40 | |
}, | |
"kernels_config": { | |
"python": { | |
"library": "var_list.py", | |
"delete_cmd_prefix": "del ", | |
"delete_cmd_postfix": "", | |
"varRefreshCmd": "print(var_dic_list())" | |
}, | |
"r": { | |
"library": "var_list.r", | |
"delete_cmd_prefix": "rm(", | |
"delete_cmd_postfix": ") ", | |
"varRefreshCmd": "cat(var_dic_list()) " | |
} | |
}, | |
"types_to_exclude": [ | |
"module", | |
"function", | |
"builtin_function_or_method", | |
"instance", | |
"_Feature" | |
] | |
}, | |
"gist": { | |
"id": "", | |
"data": { | |
"description": "Convert to .mp4 from '.mkv', '.avi', '.asf', '.dav', '.mov' using ffmpeg, python subprocess", | |
"public": true | |
} | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 5 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment