मेरे पास एक फाइल है main.mp4
जिसे मैं दो mp4 फाइलों में विभाजित करता हूं; first_half.mp4
और second_half.mp4
। Ffmpeg का उपयोग करते हुए मैं फिर तीन फाइलों को एक में मिला देता हूं: एक के मध्य में first_half.mp4
और second_half.mp4
, और एक के बाद एकsecond_half.mp4
फ़ाइलों में शामिल होने के लिए मैं उन्हें पहले .ts
प्रारूप में परिवर्तित करता हूं और फिर उन्हें कॉनकैट प्रोटोकॉल का उपयोग करके शामिल करता हूं। समस्या यह है कि गुणवत्ता भयानक और पिक्सेलयुक्त हो जाती है। विभाजित अंशों का निरीक्षण करने के बाद मुझे पता चला कि उनकी गुणवत्ता ठीक थी और जब मैं परिवर्तित हुआ तो गुणवत्ता केवल मूल्यह्रास हो गई .ts
।
मैं मूल फ़ाइलों की तरह ts फ़ाइलों की गुणवत्ता कैसे रख सकता हूं?
मैंने कॉनकैट डिमॉक्सर की भी कोशिश की है लेकिन यह गुणवत्ता बनाए रखता है लेकिन केवल पहली फाइल के लिए काम करता है क्योंकि यह बाद की फाइलों को विकृत कर देता है।
यहाँ मेरे आदेश हैं:
// cut first half
$cmd ="ffmpeg -i main.mp4 -vcodec copy -acodec copy -ss 00:00:00 -t 00:15:00 first_half.mp4 -y";
shell_exec($cmd);
//convert to ts
$cmd = "ffmpeg -i first_half.mp4 -vcodec copy -acodec copy -bsf:v h264_mp4toannexb -f mpegts in first_half.ts -y -b:v 1000000";
shell_exec($cmd);
//cut second half
$cmd ="ffmpeg -i main.mp4 -vcodec copy -acodec copy -ss 00:15:00 -t $length second_half.mp4 -y";
shell_exec($cmd);
//convert to ts
$cmd = "ffmpeg -i second_half.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts in second_half.ts -y -b:v 1000000";
shell_exec($cmd);
//transcode the "slices"
$cmd = "ffmpeg -i front.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts in front.ts -y -b:v 1000000";
shell_exec($cmd);
$cmd = "ffmpeg -i middle.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts in middle.ts -y -b:v 1000000";
shell_exec($cmd);
$cmd = "ffmpeg -i end.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts in end.ts -y -b:v 1000000";
shell_exec($cmd);
//concatenate them
$cmd = 'ffmpeg -i "concat:front.ts|first_half.ts|middle.ts|second_half.ts|end.ts" -c copy output.mp4 -y -b 10000000';
shell_exec($cmd);